我想用指向对象的指针初始化一个容器.我目前有这样的循环:
- for(int i=0;i < n;i++) {
- container.push_back(new Object());
- }
哪个C操作(即类似于std :: transform)是替换此循环并使用n个新创建的对象初始化容器的权利?
解决方法
使用
std::generate:
- 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(); });