我有一个问题。我有一个包含元组的向量:
vector<tuple<int, int> > my_vector
假设出于任何原因,我都想在索引中打开for循环迭代器:
// Example program
#include <vector>
#include <tuple>
using namespace std;
int main()
{
vector<tuple<int, int> > my_vector;
my_vector.push_back(make_tuple(1, 1));
my_vector.push_back(make_tuple(2, 2));
my_vector.push_back(make_tuple(3, 3));
for (auto iterator : my_vector)
{
size_t index = distance(my_vector.begin(), iterator);
}
}
老实说,我不明白要使其运行必须进行哪些更改。问题似乎是我在“距离”中使用迭代器。也许有人可以给我一些建议。
基于范围的for
循环
for (range_declaration : range_expression) loop_statement
等效于此代码:
auto&& range = range_expression ;
for (auto begin = begin_expr, end = end_expr; begin != end; ++begin) {
range_declaration = *begin;
loop_statement
}
因此,range_declaration
不是迭代器,而是它指向的元素。
如果需要索引,请使用普通的for
循环。