矢量作为班级成员

Saf*_*ari 3 c++ vector aggregation dealloc

你好我有这个问题:我想有一个矢量作为类成员.这对我来说可能更容易,我为此道歉.

  • 我该如何申报这个载体?这是对的吗?std::vector<int> *myVector;还是std::vector<int> myVector
  • 我该如何在dealloc中处理这个向量?
  • 如何将数组初始化为if?

它是否正确?

if(myCondition)
{
   if(!myVector) //is this correct?
       myVector = new std::vector<int>(); //is this correct? on this i have a error
}
Run Code Online (Sandbox Code Playgroud)

fsc*_*enm 7

你肯定想要使用std::vector<int> myVector.无需初始化它,因为它会在类的构造函数中自动初始化,并在类被销毁时释放.


Mat*_*lia 6

只需使用自动分配:将其声明为如下所示的成员:

class YourClass
{
    std::vector<int> myVector;
    // ...
};
Run Code Online (Sandbox Code Playgroud)

在运行任何构造函数之前自动构造数组,并在释放对象时自动销毁该数组,您不需要关心它(同样,默认的复制构造函数和赋值运算符将自动处理正常复制).

相反,如果您只想在特定条件之后创建数组,则必须使用(智能)指针和动态分配,但恕我直言,这非常麻烦(特别是因为您必须得到正确的"三巨头" - 复制构造函数,赋值运算符,析构函数); 您可以简单地使用自动分配来分配向量,并使用单独的标志将数组标记为未初始化,或者仅检查其大小是否为0.