c++ - 如何正确初始化 C++ 中的对象向量?
问题描述
我对 C++ 相当陌生,正在尝试创建一个对象的向量并初始化它的成员,但是有一点我不确定我是否做得正确:
vector<Card> cardStorage;
for (int i = 0; i < 20; i++) {
Card card;
cardStorage.push_back(card);
}
基本上这是一个 Card 类的 20 个对象的向量,而 push_back 采用 Card & 类型,它是通过引用传递的。因此,我不确定这样做是否会产生一个包含 20 个不同 Card 对象的向量,或者该向量的所有 20 个成员都将指向一个对象,这不是我想要的,因为我需要遍历这个向量来操作对象数据成员(我也绝对不想创建 20 个 Card 类的对象并将其推送到向量中,因为这显然是不好的做法)。
解决方案
push_back
如果参数是左值(具有名称的对象),则on avector
会复制传入的参数。所以cardStorage
保证Card
在循环执行后其中有 20 个不同的对象,因为每个对象都Card
被复制到vector
.
您可以考虑使用semplace_back
来避免不必要地将 s 复制到Card
s 中vector
,但您也可以简单地执行以下操作:
vector<Card> cardStorage(20);
达到与所示代码相同的效果。
推荐阅读
- angular - 角度材质 cdkDragFreeDragPosition 错误
- excel - 为什么 pandas 的计算速度比 excel 快?
- java - 请求选项卡未在 SOAP UI 中弹出
- c# - 当我尝试编译时发生 System.TypeLoadException
- angular - 如何将角度控件的值重置为其绑定?
- wordpress - Wordpress 按钮自定义
- php - Woocommerce 中基于包的定价
- java - 从 JSON-LD 或 RDF 生成 POJO 以与 Jackson 或 GSON 一起使用
- pyspark - pyspark中的动态布尔连接
- python - 处理大数以计算组合数