用自动生成的值初始化C ++向量的最短方法

时间:2018-11-17 22:20:57

标签: c++ stl

我想知道在C ++标准的最新修订版中是否有什么可以让我构造向量并用最少的击键(最好是一行)用自动生成的值(例如,来自RNG)填充它的方法

我能想到的最好的是

int N=1000;
std::default_random_engine rng;
std::uniform_int_distribution<int> distr(0,99);

vector<int> v(N);
std::generate(v.begin(), v.end(), std::bind(distr,rng));

std::generate_n(v.begin(), N, std::bind(distr,rng));

但是它是如此之长,以至于实际上它需要更少的击键来编写一个显式的初始化循环:

    for(auto& x: v)
        x=distr(rng);

我特别不喜欢在那里有.begin()和.end()。

似乎没有合适的向量构造函数能够采用函子初始化程序,但也许还有其他方法。

0 个答案:

没有答案