c++ - range-for循环中的访问索引

我有一个对象 vector ,并且正在使用 range-for 循环对其进行迭代。我正在使用它从对象中打印一个函数,如下所示:

vector<thisObject> storedValues;
//put stuff in storedValues
for(auto i:storedValues)
{
   cout<<i.function();
}

但我也想打印索引。我想要的输出是:

1: value
2: value
//etc

我打算只使用一个每次增加的计数器,但这似乎非常低效。有没有更好的办法?

最佳答案

你不能。 index 是 vector 的特定概念,而不是集合的通用属性。另一方面,基于范围的循环是一种通用机制,用于迭代 any 集合的每个元素。

如果您确实想使用特定容器实现的细节,只需使用普通循环:

for (std::size_t i = 0, e = v.size(); i != e; ++i) { /* ... */ }

重复这一点:基于范围的循环用于操作任何集合的每个元素,其中集合本身并不重要,并且在循环体中从未提及容器。它只是您工具箱中的另一个工具,您不会被迫将它用于所有事情。相比之下,如果您想要改变集合(例如删除或随机播放元素),或者使用有关集合结构的特定信息,请使用普通循环。

https://stackoverflow.com/questions/12397532/

相关文章:

c++ - 为什么 std::get() 不能用于获取 vector 的成员?

c++ - 了解 double 到 int64_t 的转换

c++ - 在 C/C++ 中从 TCP 套接字读取的正确方法是什么?

c++ - 如何找到当前的系统时区?

c++ - 不能在数组上使用 .begin() 或 .end()

c++ - Emacs - 覆盖缩进

c++ - 为什么 PRIu64 在此代码中不起作用?

c++ - OpenCV:获取 3 channel RGB 图像,拆分 channel 并仅使用 R

c++ - 在构造函数中调用类成员的构造函数

c++ - openMP 嵌套并行 for 循环与内部并行 for