std 12 判斷容器的迭代器是否是隨機訪問迭代器

2022-06-08 20:30:16 字數 978 閱讀 1725

1.隨機訪問迭代器的意思是可以在該迭代器指向的位置基礎上向前或者向後移動n的位置,還能獲取到容器的資料。

2.之所以要去判斷乙個容器的迭代器是否是隨機訪問迭代器,是因為stl系統提供的很多演算法都需要容器的迭代器必須是隨機訪問迭代器才能使用。

比如:std::sort()演算法對於vector是可用的,list就不可用。list容器如果需要排序的話必須使用list自身內部實現的sort方法。

std::listlist;

list.push_back(10);

list.push_back(20);

list.push_back(30);

list.push_back(40);

list.sort();

std::sort(list.begin(),list.end());//報錯

3.並且乙個容器的迭代器如果不是隨機訪問迭代器的話,它往往也不支援使用和at來通過下標訪問容器中的任意乙個元素。

4.在判斷的時候我們可以通過判斷該容器的迭代器是否支援」+n「的操作來判斷容器的迭代器是否是隨機訪問迭代器。vector的迭代器支援隨機訪問,list的迭代器不支援

std::listlist;

list.push_back(10);

list.push_back(20);

list.push_back(30);

list.push_back(40);

int a = list[2];//報錯

std::list::iterator it = list.begin()+2;//報錯

std::vectorvec;

vec.push_back(10);

vec.push_back(20);

vec.push_back(30);

vec.push_back(40);

int a1 =vec[2];

std::vector::iterator it1 = vec.begin()+2;

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

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

容器的內嵌類 迭代器

容器是c stl庫里實現的重要結構,這裡簡單實現鍊錶的構造以及遍歷操作。在stl庫里實現了容器的迭代器,用於遍歷容器中的部分或全部元素。在這裡我們來模擬實現迭代器的簡單遍歷,以及容器迭代器介面的實現。節點 template struct listnode t data listnode next l...

容器類的迭代器討論

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