數據結構與算法分析c++:STL中的向量和表

在c++語言的庫中包含了公共數據結構的實現,這部分內容就是我們熟知的標準模板庫(Standard Template Library,STL)。

抽象數據類型(abstract data type,ADT)

抽象數據類型是帶有一組操作的一些對象的集合。

表ADT
對於任何非空表A,Ai是Ai-1的後繼,Ai-1是Ai的前驅。
1、簡單鏈表
由一系列的不必在內存中相連的 結點組成,每個結點均含有表元素和到包含該元素後繼元的結點的鏈(link),我們稱之爲next鏈,最後一個單元的next鏈指向NULL。
2、雙向鏈表
將鏈表中的每個結點都添加一個指向上一項的鏈接,稱這種鏈表爲雙向鏈表。

STL中的向量和表

1、對所有STL容器都適用的方法:

· int size() const :返回容器內元素的個數;
· void clear() :刪除容器內的所有元素;
· bool empty() :如果容器內沒有元素返回true,反之返回false;

2、vector和list都支持常量時間內在表的末尾添加、刪除對象:

· void push_back(const object &x) :表末尾添加對象x;
· void pop_back() :刪除表末尾對象;

3、vector和list都支持常量時間內訪問表的前端和末端

· const object &back() const :返回表末端對象;
· const object &front() const :返回表前端對象;

4、雙向鏈表支持表前端高效改變,但vector不支持

· void push_front(const object &x) :在list前端添加x;
· void pop_front() :在list前端刪除對象;

5、vector的一些特有方法

· object &operator[](int index) :返回vector中index位置的對象,不含邊界檢查;
· object &at(int index) :返回vector中index索引位置的對象,包含邊界檢查;
· int capacity() const :返回vector內部容量;
· void reserve(int newCapacity) :設定vector新容量;

6、迭代器iterator

· iterator begin() :返回指向容器第一項的一個適當的迭代器;
· iterator end() :返回指向容器終止標誌(最後一項後面的位置)的迭代器;
· iterator insert(iterator pos, const object &x) :添加對象x到表中迭代器pos所指位置之前的位置;
· iterator erase(iterator pos) :刪除迭代器所指位置的對象,返回值是調用之前pos所指元素的下一個位置元素的位置;
· iterator erase(iterator start, iterator end) :刪除從位置start到位置end(不包含end)的所有元素;

7、const_iterator和iterator

· *const_iterator不能位於“=”左端,即不可以改變其值;

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