我有一个对象向量,并正在使用 range-for 循环对其进行迭代。我正在使用它从对象中打印一个函数,如下所示:
vector<thisObject> storedValues;
//put stuff in storedValues
for(auto i:storedValues)
{
cout<<i.function();
}
但我也想打印索引。我想要的输出是:
1: value
2: value
//etc
我打算只使用一个每次都增加的计数器,但这似乎非常低效。有没有更好的办法?
原文由 user1599559 发布,翻译遵循 CC BY-SA 4.0 许可协议
你不能。 索引 是向量的特定概念,而不是集合的通用属性。另一方面,基于范围的循环是一种通用机制,用于迭代 任何 集合的每个元素。
如果您确实想使用特定容器实现的细节,只需使用普通循环:
重复这一点:基于范围的循环用于操作任何集合的 _每个元素_,其中集合本身并不重要,并且在循环主体中从未提及容器。它只是您工具箱中的另一个工具,您不会被迫将它用于所有事情。相反,如果您想改变集合(例如删除或随机播放元素),或者使用有关集合结构的特定信息,请使用普通循环。