【发布时间】:2021-12-08 10:28:24
【问题描述】:
这可能是一个很容易回答的问题,但我一直在尝试改变我的语法,以便更有效地使用带有向量的 for 循环。我之前使用的是普通的循环方法:
for (int i = 0; i < vector.size(); i++){
//code
}
但我正在尝试改变我推荐使用迭代器的方法
for (const auto i : vector){
//code
}
我喜欢这种方式,因为它看起来更干净,并且显然是大多数人推荐的方式,但是以前的方法允许我使用“i”,以便我可以控制特定的元素编号。因此,如果我想访问第 5 个元素,我可以通过在循环的第 5 次迭代中放置“vector[i]”来做到这一点。我确信第二种方法也允许这样做,我只是不知道要使用的具体代码。有人可以推荐他们认为使用第二种方法获取元素访问权限的最佳方法吗?
【问题讨论】:
-
您可以使用
for (auto& element : vector){,然后element将是对向量中元素的引用(而不是副本),您可以根据需要进行更改。 -
基于范围的循环的主要优点之一是索引无关紧要。如果索引对您很重要,那么使用基于索引的循环通常会更简单。
-
stackoverflow.com/questions/1315041/… 中的任何答案对您有帮助吗?
-
这个怎么样?
for (int& i : list) { std::cout << "index = " << (&i - list.data()); } -
@upkajdt 我发现这令人不安,您对容器的内存布局做出了假设。我不会在地图或场景中尝试这个。
标签: c++ for-loop vector iterator