class B{//};
class A
{
public:
void Funcs();
private:
std::vector<A> vecA;
};
class B{//};
class A
{
public:
void Funcs();
private:
std::vector<A*> vecpA;
};
哪一个更好,有没有指导方针?
答案 0 :(得分:3)
这是取决于具体方案的事情之一。以下是在决定这些不同选项时要问自己的问题的不完整清单:
如果你选择了指针,通常你会想要使用boost :: unique_ptr(如果类是唯一的所有者),或者如果数据可以在多个对象,线程等之间共享则使用boost :: shared_ptr。罕见的情况是原始的,常规的C ++指针正确的方法。很难确定那些是什么。
答案 1 :(得分:0)
尽可能使用对象矢量。当这是完成你想要的唯一(合理)方式时,使用指针向量。除此之外,您还必须处理A
是否拥有 vecA
中的对象或仅引用其他对象所拥有的对象等问题。
答案 2 :(得分:0)
如果'A'不可复制和可分配,你别无选择,只能使用指针'A'。如果'A'不可复制和可分配,你别无选择,只能使用指针到'A'。
假设“A”是可复制和可分配的,那么选择将受到以下因素的指导,包括但不限于:
a)你真的希望容器/算法在一个单独的副本而不是原始对象(通过指针)上运行
b)复制的性能损失是什么?
c)您是否希望使用指针方法在容器中存储多态对象?
我想在C ++ 0x的RValue引用在(a)和(b)点提供了一些缓解,但我不确定。