我想生成{i, 0}
对的向量,其中i从0变为n - 1,使用STL generate
函数,我的当前代码如下所示
std::vector<std::pair<int, int>> new_vertex(n);
int i = -1;
std::generate(new_vertex.begin(), new_vertex.end(), [&]{
i += 1;
return {i, 0};
});
我的问题是使用STL函数有更好/更酷的方法,比如以某种奇怪的方式使用transform
,最好是使用变量声明int i = -1
的方法。在顶部?
答案 0 :(得分:4)
在C ++中14。我让这个计数器对lambda是私有的。我也没有不必要地初始化矢量元素:
#include <algorithm>
#include <iterator>
v.reserve(n);
std::generate_n(std::back_inserter(v), n,
[i = 0]() mutable { return std::make_pair(i++, 0); });