【发布时间】:2019-05-01 16:44:37
【问题描述】:
在 Python 中有enumerate,它接受一个序列/迭代器并产生一对整数索引和值本身。在 C++ 中,我偶尔会发现自己在写作
for (size_t i = 0; i != vector.size(); ++i) {
auto const &elem = vector[i];
// ...
类似于我想写的Python
for (auto const &it : enumerate(vector)) {
// it.first is the index (size_t)
// it.second is the element (T const&)
这样的enumerate 是否存在于 STL 或像 Boost 这样的通用库中?
【问题讨论】:
-
老实说,我不确定你为什么会选择第二个 sn-p 而不是第一个。
-
@freakish 我可以看到。计数器变量有点新 :) 但是引入一个 3rd 方库似乎并不值得。
-
@freakish 你从来不想要那个?如果你有一个基于范围的 for 循环,只有在某些分支中需要索引怎么办?
-
@freakish:另一个不错的方面是可以使用
std::transform中的索引。