在C ++中使用STL生成对项的向量

时间:2015-11-28 14:09:00

标签: c++ stl

我想生成{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的方法。在顶部?

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); });