0

パフォーマンス上の理由(メモリよりも高速)のために、オブジェクトの2つのリストを保持する必要があることに気付きました。

次のようなオブジェクトポインタを使用しています

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ことです。したがって、明らかにそれらはコピーであり、実際の取引ではありません。

コピーにならないようにこれらを保存する正しい方法は何ですか?ポインタはすべてヒープに割り当てられるため、ポインタを使用しないことはオプションではありません。

4

1 に答える 1

2

標準コンテナは渡された値をコピーしますが、ポインタを渡したため、コピーされるのはポインタです。したがって、それらはまだ同じオブジェクトを指しています。問題はどこかにあるに違いありません。おそらく、この動作を示していると思われる特定のコードを投稿できますか?

于 2012-07-07T03:19:02.587 に答える