容器的內嵌類 迭代器

2021-07-31 03:03:39 字數 1257 閱讀 8399

容器是c++stl庫里實現的重要結構,這裡簡單實現鍊錶的構造以及遍歷操作。

stl庫里實現了容器的迭代器,用於遍歷容器中的部分或全部元素。

在這裡我們來模擬實現迭代器的簡單遍歷,以及容器迭代器介面的實現。

//節點

template

struct listnode

t _data;

listnode

* _next;

listnode

* _prev; };

//帶頭結點的迴圈雙向鍊錶

template

class list

list()//建構函式 :_head(getnode(t()) ) ~list()//析構函式 iterator begin()//迭代器介面,返回乙個用第乙個元素的指標構造的迭代器 constiterator begin()const iterator end() constiterator end()const void clean() } void pushback(const t& x)//尾插元素 protected: node* _head; };

#include 

using namespace std;

//節點

template

struct listnode

t _data;

listnode

* _next;

listnode

* _prev; };

//迭代器

template

struct _iterator ref operator*() //*操作符過載 self& operator++()//++操作符過載 bool operator!=(const self& it) const//!=操作符過載 node* _node; }

迭代器是容器的內嵌類,通過實現迭代器的++,*,!= 操作符,以及在容器類通過begin和end函式實現遍歷容器的作用。

一下是測試**

printmylist用以實現的迭代器列印鍊錶

void printmylist(const list

& l1)//遍歷並列印鍊錶

cout << endl; }}

int main()

容器類的迭代器討論

一級容器包括 順序容器 和 關聯容器 容器介面卡不屬於一級容器 迭代器用於訪問和控制一級容器中的元素 為什麼容器介面卡不支援?因為容器介面卡依賴某一種具體容器實現。前向迭代器也可以支援前向 和後向 lis支援雙向迭代器,然而queue是容器介面卡,不支援迭代器 輸入迭代器用於讀入資料,輸出迭代器用於...

Qt的容器類之容器,迭代器

qt中的容器被分為兩個大類 容器元素是乙個值的,比如qvector,以及容器元 素是乙個 key,value 對的,比如qmap。1 第一大類中,qvector將其所有元素存放在一塊連續的記憶體中。隨機訪問的速度很快,但是插入 刪除操作很慢。qstack是qvector的子類,實現棧的功能。除了具有...

容器 迭代器

stl包括 容器 資料結構 迭代器 遍歷資料 演算法 順序容器 vector 向量 list 鍊錶 deque 雙端佇列 關聯容器 set 集合 multist map 對映 multimap 迭代器 類似於指標 用來訪問容器中的單個資料項 迭代器由類iterator來宣告。include incl...