gpt4 book ai didi

c++ - 使用 'for' 循环遍历 C++ vector

转载 作者:IT老高 更新时间:2023-10-28 11:51:46 25 4
gpt4 key购买 nike

我是 C++ 语言的新手。我已经开始使用 vector ,并且注意到在我看到的所有通过索引迭代 vector 的代码中,for 循环的第一个参数始终是基于 vector 的。在 Java 中,我可能会用 ArrayList 做这样的事情:

for(int i=0; i < vector.size(); i++){
vector[i].doSomething();
}

我在 C++ 中看不到这个是有原因的吗?这是不好的做法吗?

最佳答案

你没有看到这种做法的原因是相当主观的,不能有一个明确的答案,因为我见过很多使用你提到的方式的代码,而不是 iterator 样式的代码。

以下可能是人们不考虑 vector.size() 循环方式的原因:

  1. 对每次在循环中调用 size() 感到偏执健康)状况。但是,这不是问题,也可能是微不足道的固定
  2. 优先使用 std::for_each() 而不是 for 循环本身
  3. 稍后将容器从 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com