如何使用(lambda)函数填充C容器?
发布时间:2020-12-16 04:57:20 所属栏目:百科 来源:网络整理
导读:我想用指向对象的指针初始化一个容器.我目前有这样的循环: for(int i=0;i n;i++) { container.push_back(new Object());} 哪个C操作(即类似于std :: transform)是替换此循环并使用n个新创建的对象初始化容器的权利? 解决方法 使用 std::generate: constex
我想用指向对象的指针初始化一个容器.我目前有这样的循环:
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::generate_n: 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(); }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |