首页 > 解决方案 > 用自动生成的值初始化 C++ 向量的最短方法

问题描述

我想知道在最近的 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() 在那里。

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

标签: c++stl

解决方案


推荐阅读