无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(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 迭代器的評論 (共 條)

分享到微博請遵守國家法律
龙泉市| 鱼台县| 新安县| 山东| 内江市| 桃园县| 山阳县| 东莞市| 浮山县| 齐河县| 梓潼县| 新宁县| 桃园县| 沅江市| 越西县| 攀枝花市| 喀喇| 娱乐| 共和县| 明星| 五原县| 旅游| 丰顺县| 黄浦区| 永顺县| 余江县| 隆安县| 囊谦县| 昭觉县| 响水县| 吉首市| 宁波市| 苏尼特左旗| 新宁县| 全州县| 兖州市| 靖边县| 博爱县| 武清区| 定远县| 桂东县|