我想知道最近修订的 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));
Run Code Online (Sandbox Code Playgroud)
或者
std::generate_n(v.begin(), N, std::bind(distr,rng));
Run Code Online (Sandbox Code Playgroud)
但它太长了,实际上需要更少的击键来编写显式初始化循环:
for(auto& x: v)
x=distr(rng);
Run Code Online (Sandbox Code Playgroud)
我特别不喜欢那里有 .begin() 和 .end() 。
似乎没有正确的向量构造函数能够采用函子初始值设定项,但也许还有其他方法。