Мне нужно вести два списка объектов по соображениям производительности (скорость по сравнению с памятью).
Я использую указатели объектов, такие как
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
не имеет обновления? Этого следовало ожидать. Что касается самих указателей, то они указывают на один и тот же объект кучи, поэтому изменения в экземпляре в одном списке будут отражены в другом. Не могли бы вы прояснить свое замешательство? - person chrisaycock   schedule 07.07.2012std::shared_ptr
и убедитесь, что это не соответствует вашим целям. - person Benjamin Lindley   schedule 07.07.2012