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

What is the most idiomatic way of creating a range of indices from a container?

本文关键字:方法 是什么 创建 一系列 索引      更新时间:2023-10-16

有没有比做这样的事情更好的方法来迭代容器的索引

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

理想情况下,看起来像这样的东西view::something(vec).

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

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

经过一些代码检查,我已经意识到可以写这个而不是view::indices(vec.size()),但是即使indicesptrdiff_t默认,使用size()会导致它产生size_t,我宁愿保留ptrdiff_t

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

还有较旧的(但同样好(

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

如果你还需要这些元素,那么你的第二个是优越的。