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

标签 c++ function initialization containers

目前我正在初始化一个 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/

相关文章:

javascript - 了解函数的返回值

mysql - 我可以使用函数作为 mysql_close(function) 的参数吗?

php - 如何在整个mysql数据库上使用ucwords()php函数?

delphi - Delphi 中按加载顺序生成表单/单元列表的最佳方法是什么?

c - 在 C 中初始化稀疏常量数组

c - 初始化窗口代码 Mac OS X

c++ - 非常基础的英语语法解析器

c++ - 显式模板特化和从属名称查找问题

c++ - 滚动区域内的 QWidget

c++ - block 操作不适用于 Eigen