在 C++ 11 中遍历 STL 类
Iterating through STL classes in C++ 11
假设我们有std::map,我们想要遍历。这两个迭代之间的优点/缺点(或主要区别是什么)是什么?
map<string,int> m0 { { "name1", 20 }, { "name2", 30 }, { "name3", 40 } };
for( auto &it : m0 )
it = m0 . erase( it );
和
for (auto it=m0.begin(); it!=m0.end(); )
it = m0.erase(it);
第一个代码不兼容,我不知道为什么,尽管在 cppreference 语法中就像第一个。
使用基于范围的 for 循环仅计算一次结束条件。带有迭代器的经典循环在每次迭代时对其进行评估。基于范围的循环始终迭代整个容器。带有迭代器的经典循环只能迭代容器的一部分。范围循环语法更加简洁明了。
这些是我所看到的主要区别。
相关文章:
- 有什么方法可以遍历结构吗
- 在循环中按顺序遍历成员变量
- 遍历 STL 映射(集/多集)的最佳方法,同时元素可能会在循环期间被删除并重新插入?
- stl 映射中的后序遍历
- 在 C++ 11 中遍历 STL 类
- 用于创建和遍历图形的 STL 容器
- 在 STL 中使用宏进行遍历
- 如何遍历 STL 映射(查找所有可能的对)
- 通过不同的线程使用迭代器遍历 STL 映射
- 如何遍历两对 STL 集中的所有元素<对<t1,t2>,pair<t1,t2>>?
- C++STL中的BFS图遍历
- 遍历STL容器并删除/添加多个项
- 在修改序列时遍历该序列.使用向量还是列表?c++ STL
- 如何遍历两个类似stl的容器(笛卡尔积)
- 使用元素键遍历STL容器
- 遍历STL列表
- 遍历通用STL容器以检查是否存在
- 在C++中遍历非STL链表,可能吗
- 如何使用 'auto' 关键字遍历 C++ STL 映射数据结构?
- 了解 GDB 中 STL 多集的红黑树遍历