C ++将向量迭代器转换为索引

问题描述 投票:0回答:1

我有一个问题。我有一个包含元组的向量:

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);
    }

}

老实说,我不明白要使其运行必须进行哪些更改。问题似乎是我在“距离”中使用迭代器。也许有人可以给我一些建议。

c++ vector indexing iterator distance
1个回答
0
投票

基于范围的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循环。

© www.soinside.com 2019 - 2024. All rights reserved.