我想用指向对象的指针初始化一个容器.我目前有这样的循环:
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(); });