Мне интересно, есть ли в последних версиях стандарта C ++ что-нибудь, что позволило бы мне сконструировать вектор и заполнить его автоматически сгенерированными значениями (скажем, из ГСЧ) с наименьшим количеством нажатий клавиш, предпочтительно в одну строку .
Лучшее, что я могу придумать, это
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 ().
Похоже, не существует подходящего конструктора для вектора, способного принимать инициализатор функтора, но, возможно, есть и другой подход.