如何使用(lambda)函数填充C容器?

前端之家收集整理的这篇文章主要介绍了如何使用(lambda)函数填充C容器?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想用指向对象的指针初始化一个容器.我目前有这样的循环:
  1. for(int i=0;i < n;i++) {
  2. container.push_back(new Object());
  3. }

哪个C操作(即类似于std :: transform)是替换此循环并使用n个新创建的对象初始化容器的权利?

解决方法

使用 std::generate
  1. constexpr int n = 10;
  2. std::vector<Object*> v1(n);
  3. std::generate(v1.begin(),v1.end(),[](){ return new Object(); });

std::generate_n

  1. std::vector<Object*> v2;
  2. v2.reserve(n); // pre-allocate sufficient memory to prevent re-allocations
  3. // (you should have done in original loop approach as well)
  4. std::generate_n(std::back_inserter(v2),n,[] { return new Object(); });

猜你在找的C&C++相关文章