从容器创建一系列索引的最惯用的方法是什么?

时间:2018-10-12 07:23:07

标签: c++ range-v3

有没有比做这样的事情更好的方法遍历容器的索引了

for (auto i : view::iota(0, vec.size())

理想情况下,看起来像view::something(vec)

我知道我可以编写自己的函数来执行此操作,但是我想知道此功能是否已经存在。我也知道能够做这样的事情

for (auto [idx, elm] : view::zip(view::indices, vec))

经过一些代码检查后,我意识到可以写成view::indices(vec.size())了,但是即使indices的默认设置是ptrdiff_t,也使用size()结果产生size_t,而我宁愿保留ptrdiff_t

1 个答案:

答案 0 :(得分:0)

如果只需要 个索引,那么您的第一个就可以了。

还有较老的(但也不少)

for (auto i = 0; i < vec.size(); ++i)

如果您还需要元素,那么您的第二个元素就是上等的。