c++ - C++ 将向量迭代器变成索引
问题描述
我有个问题。我有一个包含元组的向量:
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);
}
}
老实说,我不明白我必须改变什么才能让它运行。问题似乎是我在distance
. 也许有人可以给我一些建议。
解决方案
基于范围的for
循环
for (range_declaration : range_expression)
loop_statement
大致相当于这段代码:
for (auto begin = range_expression.begin(), end = range_expression.end();
begin != end; ++begin)
{
range_declaration = *begin;
loop_statement
}
注意*
操作员。所以,range_declaration
它指向的不是迭代器,而是一个元素。
如果您需要索引,请使用普通for
循环:
for (std::size_t index = 0; index < my_vector.size(); ++index)
loop_statement
推荐阅读
- excel - 将 Workbook.Query 粘贴到数组中而不粘贴到工作表
- python - 如何通过编码解决这个二项式方程?
- wordpress - woocommerce 用户注册后显示“欢迎”弹出窗口
- python - 为什么这里没有显示 ggplot?
- java - Cucumber Junit Runner 未显示测试用例行
- typescript - 与“any”类型相交的类型的 Typescript 泛型自动扩展为“any”类型
- build - 如何跨语言或跨平台构建单声道存储库?
- python-3.x - 如何从字符串列表中删除不需要的字符?
- c# - 根据服务器端任务的进度定期更新客户端 UI
- algorithm - Photoshop算法固定宽高