1. 程式人生 > >容器庫概覽

容器庫概覽

定義 第一個字符 iter max 拷貝 const 一位 pan 地址

1. 對容器可以保存的元素類型的限制

順序容器幾乎可以保存任意類型的元素。特別是我們可以定義一個容器,容器中包含的是另一個容器,這種容器的定義與任何其他容器類型完全一樣:

  在尖括號中指定元素類型(此種情況下,是另一種元素類型)

  vector<vector<string>> lines;  //vector的vector,此處lines是一個vector,其元素類型是string的vector

容器操作:

  類型別名:

    iterator      此容器類型的叠代器類型;        const_iterator   可以讀取元素,但不能修改元素的叠代器類型

    size_type     無符號整數類型,足夠保存此種容器類型最大可能容器的大小

    difference_type   帶符號整數類型,足夠保存兩個叠代器之間的距離

    value_type     元素類型

    reference     元素的左值類型;與value_type&含義相同;  const_reference 元素的const左值類型

  構造函數:

    C c;      默認構造函數,構造空容器

    C c1(c2);    構造c2的拷貝c1

    C c(b, e);    構造c,將叠代器b和e指定的範圍內的元素拷貝到c

  賦值與swap:

    c1 = c2    將c1中的元素替換為c2中元素

    c1 = {a,b,c...}將c1中的元素替換為列表中元素

    a.swap(b)   交換a和b的元素  ;swap(a,b)相同

  大小:

    c.size()    c中元素的數目

    c.max_size()  c中可保存的最大元素項目

    c.empty()   若c中存儲了元素,返回false,否則返回true

叠代器:

    類似於指針類型,叠代器也提供了對對象的間接訪問,就叠代器而言,其對象是容器中的元素或者string對象中的字符。使用叠代器可以訪問某個元素,叠代器也能從一個元素移動到另外一個元素,叠代器有有效和無效之分,這一點和指針差不多

    有效的叠代器或者指向某個元素,或者指向容器中尾元素的下一位置

  使用叠代器:

    和指針不一樣的是,獲取叠代器不是使用取地址符,有叠代器的類型同時擁有返回叠代器的成員,譬如這些類型都擁有名為begin和end的成員,

    其中begin成員負責返回指向第一個元素(或第一個字符)的叠代器;end成員則負責返回指向容器“尾元素的下一位置”的叠代器,也就是說,

    該叠代器指示的是容器的一個本不存在的“尾後元素”,這樣的叠代器沒什麽意義,僅是個標記而已,表示我們處理完了容器中的所有元素

    end成員返回的叠代器常被稱為尾後叠代器或者簡稱為尾叠代器,特殊情況下,如果容器為空,那麽begin和end返回的是同一個叠代器

    

     

容器庫概覽