最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

c++ STL 迭代器

2023-07-31 16:11 作者:Euler_Formula  | 我要投稿

C++ STL標準庫提供了許多迭代器,用來遍歷容器中的元素。迭代器在許多算法中都扮演著重要的角色,是一種非常強大和靈活的工具。迭代器在底層實現(xiàn)上類似于指針,可以通過解引用(*),自增(++)、自減(--)等操作訪問和定位容器中的元素。 常見的迭代器類型包括: - 輸入迭代器(Input Iterator):允許在容器中前進,但不允許改變元素的值。例如,istream_iterator可以用于從標準輸入流中讀取值。 - 輸出迭代器(Output Iterator):允許往容器中寫入值,但不允許讀取元素的值。例如,ostream_iterator可以用于將值寫入到標準輸出流中。 - 前向迭代器(Forward Iterator):允許在容器中前進,也允許改變元素的值。例如,list和forward_list中的迭代器就是前向迭代器。 - 雙向迭代器(Bidirectional Iterator):提供了前向迭代器的功能,還增加了后退迭代器的能力,即自減操作(--)。例如,deque中的迭代器就是雙向迭代器。 - 隨機訪問迭代器(Random Access Iterator):提供了雙向迭代器的功能,還增加了通過偏移量訪問元素的能力。例如,vector中的迭代器就是隨機訪問迭代器。 迭代器的使用示例: ```cpp #include iostream #include vector #include algorithm using namespace std; int main() { vector v{5, 3, 2, 4, 1}; // 使用迭代器輸出容器中的所有元素 for (auto it = v.begin(); it != v.end(); ++it) { cout << *it << " "; } cout << endl; // 使用更簡潔的range-based for循環(huán)輸出 for (int x : v) { cout << x << " "; } cout << endl; // 使用迭代器查找元素 auto it = find(v.begin(), v.end(), 3); if (it != v.end()) { cout << "找到了元素3在第" << distance(v.begin(), it) << "個位置" << endl; } else { cout << "未找到元素3" << endl; } // 使用迭代器刪除元素 auto it2 = v.begin(); while (it2 != v.end()) { if (*it2 == 2) { it2 = v.erase(it2); } else { ++it2; } } // 使用迭代器修改元素 for (auto& x : v) { x += 10; } // 使用迭代器排序容器中的元素 sort(v.begin(), v.end()); // 再次使用range-based for循環(huán)輸出 for (int x : v) { cout << x << " "; } cout << endl; return 0; } ``` 輸出: ``` 5 3 2 4 1 5 3 2 4 1 找到了元素3在第1個位置 5 13 14 15 ``` 本示例展示了迭代器的基本用法,包括遍歷和操作容器中的元素、查找和刪除元素、修改元素和對元素排序等。需要注意的是,刪除迭代器指向的元素后,迭代器會失效,需要重新獲取迭代器來繼續(xù)遍歷操作。

c++ STL 迭代器的評論 (共 條)

分享到微博請遵守國家法律
浦北县| 黄梅县| 汽车| 平舆县| 正蓝旗| 凭祥市| 呼图壁县| 桦川县| 奇台县| 淳安县| 林周县| 易门县| 荥经县| 武宁县| 南开区| 宁明县| 靖远县| 韶关市| 枞阳县| 防城港市| 长武县| 桦甸市| 永新县| 云林县| 巴南区| 宝丰县| 西乌| 汝南县| 巴彦县| 门头沟区| 北票市| 康保县| 平凉市| 迁西县| 桃江县| 南郑县| 宁津县| 尚义县| 稷山县| 义马市| 临猗县|