由于性能原因(速度超过内存),我发现自己需要保留两个对象列表。C++对象列表仅为副本
我使用对象指针如
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
,显然他们是副本,而不是真正的交易。
什么是正确的方式来存储这些,所以他们不会被复制?不使用指针不是一个选项,因为这些都将被分配在堆上。
*我对m_list1所做的更改不会影响m_list2 *您是说您在'm_list1'中删除/插入项目,但是'm_list2'没有更新?这是可以预料的。至于指针本身,它们指向相同的堆对象,因此在一个列表中对**实例**的更改将反映在另一个列表中。你能澄清你的困惑吗? – chrisaycock 2012-07-07 03:21:42
看看['std :: shared_ptr'](http://en.cppreference.com/w/cpp/memory/shared_ptr),看看它是否不适合你的目的。 – 2012-07-07 05:28:17