C++面向对象编程中如何一行代码为向量赋值所有对象?——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
相关产品推荐
相关产品推荐

