성능상의 이유로 (메모리 초과) 두 가지 개체 목록을 유지해야합니다. 내가 직면하고있어C++ 개체 목록은 복사 만 가능합니다.
MyClass* myObject = new MyClass();
m_list1.push_back(myObject);
m_list2.push_back(myObject);
문제가 목록에 개체를 추가 등
std::list<MyClass*> m_list1;
std::list<MyClass*> m_list2;
로
내가 객체 포인터를 사용하고있어 변경 내가 m_list1
로 만들 m_list2
에 영향을 미치는하지 않는 것입니다 , 그래서 분명히 그들은 복제품이 아니라 진짜 거래입니다.
이러한 내용을 저장하는 올바른 방법은 무엇입니까? 포인터를 사용하지 않는 옵션은 모두 힙에 할당되므로 옵션이 아닙니다.
* m_list1에 대한 변경 사항은 m_list2에 영향을 미치지 않습니다. * 'm_list1'에서 항목을 삭제/삽입하지만'm_list2 '에서 업데이트가 없다고 말하는 것입니까? 그것은 예상된다. 포인터 자체는 동일한 힙 오브젝트를 가리키고 있으므로 한 목록의 ** 인스턴스 ** 변경 사항이 다른 목록에 반영됩니다. 혼란을 분명히 할 수 있습니까? – chrisaycock
['std :: shared_ptr'] (http://en.cppreference.com/w/cpp/memory/shared_ptr)을 보시고 귀하의 목적에 맞지 않는지 확인하십시오. –