小编Lis*_*isa的帖子

对传染媒介的尖对指针传染媒介对指针传染媒介的指针

只是想知道你认为什么是关于C++中矢量的最佳实践.

如果我有一个包含vector成员变量的类.该向量何时应声明为:

  1. "全对象"矢量成员变量包含值,即 vector<MyClass> my_vector;
  2. 指向矢量的指针,即 vector<MyClass>* my_vector;
  3. 指针传染媒介,即 vector<MyClass*> my_vector;
  4. 指向矢量指针,即 vector<MyClass*>* my_vector;

我在我的一个类中有一个特定的例子,我当前已将一个向量声明为case 4,即vector<AnotherClass*>* my_vector; AnotherClass是我创建的另一个类.

然后,在我的构造函数的初始化列表中,我使用new创建向量:

MyClass::MyClass()
: my_vector(new vector<AnotherClass*>())
{}
Run Code Online (Sandbox Code Playgroud)

在我的析构函数中,我执行以下操作:

MyClass::~MyClass()
{
  for (int i=my_vector->size(); i>0; i--)
  {
    delete my_vector->at(i-1);
  }
  delete my_vector;
}
Run Code Online (Sandbox Code Playgroud)

向量的元素添加到我的类的一个方法中.我不知道有多少物体会提前添加到我的矢量中.这是在代码执行时决定的,基于解析xml文件.

这是好习惯吗?或者是否应该将向量声明为其他情况1,2或3中的一个?

何时使用哪种情况?

我知道如果向量的元素是另一个类的子类(多态),则它们应该是指针.但是应该在任何其他情况下使用指针吗?

非常感谢你!!

c++ pointers vector

12
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×1

pointers ×1

vector ×1