只是想知道您认为关于 C++ 中 vector 的最佳实践是什么。
如果我有一个包含 vector 成员变量的类。
何时应将此 vector 声明为:
vector<MyClass> my_vector;
vector<MyClass>* my_vector;
vector<MyClass*> my_vector;
vector<MyClass*>* my_vector;
我在我的一个类中有一个具体示例,其中我目前已将 vector 声明为案例 4,即
vector<AnotherClass*>* my_vector;
其中 AnotherClass 是我创建的另一个类。然后,在构造函数的初始化列表中,我使用 new 创建 vector :
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;
}
vector 的元素添加到我的类的方法之一中。
我无法提前知道将有多少对象添加到我的 vector 中。这是基于解析 xml 文件的代码执行时间决定的。
这是好的做法吗?还是应该将 vector 声明为其他情况 1、2 或 3 之一?
什么时候使用哪种情况?
我知道如果 vector 的元素是另一个类的子类(多态性),它们应该是指针。但是在其他任何情况下都应该使用指针吗?
非常感谢!!
最佳答案
通常,解决方案 1 是您想要的,因为它是 C++ 中最简单的:您不必负责管理内存,C++ 会为您完成所有工作(例如,您不需要提供任何析构函数)。
在某些特定情况下这不起作用(最明显的是在处理多态对象时),但总的来说这是唯一的好方法。
即使在处理多态对象或需要堆分配对象(无论出于何种原因)时,原始指针也几乎不是一个好主意。相反,使用智能指针或智能指针容器。现代 C++ 编译器提供 shared_ptr
来自即将到来的 C++ 标准。如果你使用的编译器还没有,你可以使用 implementation from Boost .
关于c++ - 指向 vector 的指针 vs 指针 vector vs 指向指针 vector 的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5648746/