C++/C++11中是否有类似Python“for i, v in enumerate(listVar):”的迭代方法?
有没有类似于Python那种写法的C++方法:
for i, v in enumerate(listVar):
也就是说,我想在遍历一个容器的时候,既能拿到它的索引(位置)又能拿到它的值。
1 个回答
3
你可以这样做。假设你的容器是 std::vector<int> v
那么你可以写成这样
std::vector<int>::size_type i = 0;
for ( int x : v )
{
// using x;
// using v[i];
++i;
}
举个例子
#include <iostream>
#include <vector>
int main()
{
std::vector<int> v = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
std::vector<int>::size_type i = 0;
for ( int x : v )
{
std::cout << x << " is " << v[i] << std::endl;
++i;
}
}
不过有个问题,就是迭代器必须是随机访问迭代器。否则你就不能使用下标操作符。