建议使用任意值初始化/调整容器大小的方法

fra*_*ans 3 c++ containers initialization function

目前我正在初始化这样的list/ vector等等:

std::vector<int> vec_rand(target_size);
std::generate(vec_rand.begin(), vec_rand.end(), std::rand);
Run Code Online (Sandbox Code Playgroud)

..因为已经显示在这里.std::rand只是一个例子 - 它可以是任何功能.

我只是想知道是否有创建/调整大小的容器中,并对其进行初始化的任意值的值的方式在同一时间.

我知道我不需要期待大的性能提升,但是拥有s.th.会更好(而且更简洁).喜欢

vector<int> my_list(10, std::rand);
Run Code Online (Sandbox Code Playgroud)

要么

my_list.resize(target_size, std::rand);
Run Code Online (Sandbox Code Playgroud)

而不是首先resize()使用默认值,而不是用所需内容覆盖它们.

Jon*_*ter 6

这在构造函数中(或在单个指令中)是不可能的.

您可以使用vector::reserve()分配内存(不进行初始化),然后std::generate_n使用a back_inserter来填充数组.

my_list.reserve(target_size);
std::generate_n(std::back_inserter(my_list), target_size, std::rand);
Run Code Online (Sandbox Code Playgroud)