首页 > 解决方案 > 如何正确初始化 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 类的对象并将其推送到向量中,因为这显然是不好的做法)。

标签: c++

解决方案


push_back如果参数是左值(具有名称的对象),则on avector复制传入的参数。所以cardStorage保证Card在循环执行后其中有 20 个不同的对象,因为每个对象都Card被复制到vector.

您可以考虑使用semplace_back来避免不必要地将 s 复制到Cards 中vector,但您也可以简单地执行以下操作:

vector<Card> cardStorage(20);

达到与所示代码相同的效果。


推荐阅读