【发布时间】:2011-08-04 15:50:12
【问题描述】:
只是想知道您认为关于 C++ 中向量的最佳实践是什么。
如果我有一个包含向量成员变量的类。 这个向量什么时候应该被声明为:
- “整个对象”向量成员变量包含值,即
vector<MyClass> my_vector; - 指向向量的指针,即
vector<MyClass>* my_vector; - 指针向量,即
vector<MyClass*> my_vector; - 指向指针向量的指针,即
vector<MyClass*>* my_vector;
我的一个类中有一个特定示例,我目前已将向量声明为案例 4,即vector<AnotherClass*>* my_vector;
其中 AnotherClass 是我创建的另一个类。
然后,在我的构造函数的初始化列表中,我使用 new 创建向量:
MyClass::MyClass()
: my_vector(new vector<AnotherClass*>())
{}
在我的析构函数中,我执行以下操作:
MyClass::~MyClass()
{
for (int i=my_vector->size(); i>0; i--)
{
delete my_vector->at(i-1);
}
delete my_vector;
}
向量的元素被添加到我的类的方法之一中。 我不知道有多少对象会提前添加到我的向量中。这是在代码执行时根据解析 xml 文件决定的。
这是好的做法吗?还是应该将向量声明为其他情况 1、2 或 3 之一?
什么时候用哪种情况?
如果向量的元素是另一个类的子类(多态性),我知道它们应该是指针。但是在其他情况下是否应该使用指针?
非常感谢!!
【问题讨论】: