加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何使用(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(); });

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读