c++ - 如何使用(lambda)函数填充 C++ 容器?
问题描述
我想用指向对象的指针初始化一个容器。我目前有一个这样的循环:
for(int i=0;i < n;i++) {
container.push_back(new Object());
}
哪个 C++ 操作(即类似于std::transform
)有权替换此循环并使用n
新创建的对象初始化容器?
解决方案
constexpr int n = 10;
std::vector<Object*> v1(n);
std::generate(v1.begin(), v1.end(), [](){ return new Object(); });
std::vector<Object*> v2;
v2.reserve(n); // pre-allocate sufficient memory to prevent re-allocations
// (you should have done in original loop approach as well)
std::generate_n(std::back_inserter(v2), n, [] { return new Object(); });
推荐阅读
- excel - 计算另一个给定日期间隔(期间)内的日期间隔(期间)的工作日
- postgresql - Postgres 查询在 sequelize 中失败
- git - 为什么通过插入符号排除提交实际上并没有在命令提示符下排除提交?
- scala - Scala 从带有标头的 REST API 获取内容
- excel - 如何在excel中替换,查找和替换
- dart - 如何在 Flutter 中的图像周围浮动文本?
- list - 一种更快地生成具有给定长度的组合的方法,保留顺序
- c# - 将服务配置从配置移至代码
- mpi - MPI_Reduce 不会从我的数组中发送最小值的位置
- quartz-scheduler - 石英开始时间设置