目前我正在初始化一个 list
/vector
等,像这样:
std::vector<int> vec_rand(target_size);
std::generate(vec_rand.begin(), vec_rand.end(), std::rand);
.. 如前所述here . std::rand
只是一个示例 - 它可以是任何函数。
我只是想知道是否有办法同时创建/调整容器并用任意值初始化它的值。
我知道我不必期望性能有很大的提升,但如果有 s.th. 会更好(也不会那么冗长)。喜欢
vector<int> my_list(10, std::rand);
或
my_list.resize(target_size, std::rand);
而不是首先使用默认值 resize()
然后用所需的内容覆盖它们。
最佳答案
这在构造函数中(或在单个指令中)是不可能的。
您可以使用 vector::reserve()
分配内存(无需初始化),然后使用 back_inserter
std::generate_n
> 填充数组。
my_list.reserve(target_size);
std::generate_n(std::back_inserter(my_list), target_size, std::rand);
关于c++ - 使用任意值初始化/调整容器大小的建议方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34130959/