You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++面向对象编程中如何一行代码为向量赋值所有对象?——Player类library向量批量添加共享指针对象方法

一行代码完成多个shared_ptr批量添加到Player的library向量

嘿,这个需求其实很容易解决,借助C++11及以上标准支持的初始化列表结合std::vector的insert方法,就能一行代码搞定所有对象的追加操作,不用反复调用push_back:

player1.library.insert(player1.library.end(), {Soldier, Guard, ArmoredPegasus});

方案说明

  • std::vector::insert方法支持接收初始化列表作为待插入元素集合,只要元素类型匹配(这里都是std::shared_ptr<Card>)就能批量插入。
  • 第一个参数player1.library.end()指定插入位置为向量末尾,效果和多次push_back完全一致,都是把元素追加到现有library的最后。
  • 这种写法简洁高效,不需要额外创建临时容器,直接用初始化列表传递元素即可。

如果你的library原本是空的,也可以用直接赋值的方式(注意:这会覆盖原有元素,仅适合初始化场景):

player1.library = {Soldier, Guard, ArmoredPegasus};

但从你的描述来看,是要向已有的library中添加元素,所以第一种insert的方式是更合适的选择。

内容的提问来源于stack exchange,提问作者NOBUD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 17:58:12