作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我是 C++ 语言的新手。我已经开始使用 vector ,并且注意到在我看到的所有通过索引迭代 vector 的代码中,for
循环的第一个参数始终是基于 vector 的。在 Java 中,我可能会用 ArrayList 做这样的事情:
for(int i=0; i < vector.size(); i++){
vector[i].doSomething();
}
我在 C++ 中看不到这个是有原因的吗?这是不好的做法吗?
最佳答案
你没有看到这种做法的原因是相当主观的,不能有一个明确的答案,因为我见过很多使用你提到的方式的代码,而不是 iterator
样式的代码。
以下可能是人们不考虑 vector.size()
循环方式的原因:
size()
感到偏执健康)状况。但是,这不是问题,也可能是微不足道的固定std::for_each()
而不是 for
循环本身std::vector
更改为另一个容器(例如map
, list
) 也会要求改变循环机制,因为不是每个容器都支持 size()
样式的循环C++11 提供了一个很好的工具来移动容器。这称为“基于范围的 for 循环”(或 Java 中的“增强型 for 循环”)。
只需很少的代码,您就可以遍历完整的(强制!)std::vector
:
vector<int> vi;
...
for(int i : vi)
cout << "i = " << i << endl;
关于c++ - 使用 'for' 循环遍历 C++ vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12702561/
我是一名优秀的程序员,十分优秀!