C++容器(STL容器總結)---1

容器用於存放數據的類模板。可變長數組、鏈表、平衡二叉樹等數據結構在STL中都被實現爲容器

容器中可以存放基本類型的變量,也可以存放對象。對象或基本類型的變量被插入容器中時,實際插入的是對象或變量的一個複製品

STL中的許多算法(函數模版),如排序,查找等算法,在執行過程中會對容器中的元素進行比較。這些算法在比較元素是否相等時通常用運算符進行,比較大小通常用<運算符進行,因此,被放入容器的對象所屬的類最好重載==和<運算符,以使得兩個對象==和<進行比較是有定義的

容器分爲兩大類:

順序容器:

            順序容器有三種:可變長動態數組Vector、雙端隊列deque、雙向鏈表list。

            它們被稱爲順序容器是因爲元素在容器中的位置同元素的值無關,即容器不是排序的。將元素插入容器時,指定在什麼位置插入,元素就會位於什麼位置。

關連式容器:

             關連式容器有四種:set、multiset、map、multimap。關連式容器內的元素是排序的。插入元素時,容器會按一定的排序規則將元素放到適當的位置上,因此插入元素時不能指定位置。

              默認情況下,關連式容器中的元素是從小到大排序的而且用<運算符比較元素或關鍵字大小。

除了以上兩類容器外,STL還在兩類的基礎上屏蔽一部分功能,突出或增加另一部分功能,實現了三種容器適配器:棧stack,隊列queue、優先級隊列priority_queue

容器都是類模版。它們實例化後就成爲容器類。用容器類定義的對象稱爲容器對象

所有容器都有以下兩個成員函數:

         int size():返回容器對象中元素的個數

        bool empty():判斷容器對象是否爲空

順序容器都有以下兩個成員函數:

       begin():返回指向容器中第一個元素的迭代器

       end():返回指向容器中最後一個元素後面位置的迭代器

       rbegin():返回指向容器中最後一個元素的反向迭代器。

       rend():返回指向容器中第一個元素前面的位置的反向迭代器。

       erase(...):從容器中刪除一個或幾個元素。

       clear():從容器中刪除所有元素。

如果一個容器是空的,則 begin() 和 end() 的返回值相等,rbegin() 和 rend() 的返回值也相等

順序容器還有以下常用成員函數:

       front():返回容器中第一個元素的引用。

       back():返回容器中最後一個元素的引用。

       push_back():在容器末尾增加新元素。

       pop_back():刪除容器末尾的元素。

       insert(...):插入一個或多個元素。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章