Lis*_*isa 12 c++ pointers vector
只是想知道你认为什么是关于C++中矢量的最佳实践.
如果我有一个包含vector成员变量的类.该向量何时应声明为:
vector<MyClass> my_vector;vector<MyClass>* my_vector;vector<MyClass*> my_vector;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中的一个?
何时使用哪种情况?
我知道如果向量的元素是另一个类的子类(多态),则它们应该是指针.但是应该在任何其他情况下使用指针吗?
非常感谢你!!
Eri*_*rik -1
指向 a 的指针vector很少有用 - a 的vector构造和析构成本很低。
对于 中的元素vector,没有正确答案。多久改变一次vector?复制构造 中的元素要花多少钱vector?其他容器是否有指向vector元素的引用或指针?
根据经验,在您看到或测量到您的类的复制成本很高之前,我不会提供任何指导。当然,您提到的情况(在 中存储基类的各种子类)vector将需要指针。
如果您的设计需要使用指针作为元素,则像引用计数智能指针这样的引用计数智能指针boost::shared_ptr可能是最佳选择vector。
| 归档时间: |
|
| 查看次数: |
12411 次 |
| 最近记录: |