C ++对象列表只是副本

时间:2012-07-07 03:15:45

标签: c++ stl

我发现自己需要保留两个对象列表以达到性能原因(速度超过内存)。

我正在使用对象指针,例如

std::list<MyClass*> m_list1;
std::list<MyClass*> m_list2;

我通过

将对象添加到列表中
MyClass* myObject = new MyClass();
m_list1.push_back(myObject);
m_list2.push_back(myObject);

我遇到的问题是我对m_list1所做的更改不会影响m_list2,所以显然它们是副本而不是真正的交易。

存储这些内容的正确方法是什么,因此它们不会是副本?不使用指针不是一个选项,因为这些都将在堆上分配。

1 个答案:

答案 0 :(得分:2)

Std容器复制传入的值,但由于您传入了指针,因此它是复制的指针。因此他们仍然指向同一个对象。问题必定在其他地方。也许您可以发布您认为表现出这种行为的特定代码?