C++ 对象列表只是拷贝

标签 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,因此很明显它们是拷贝而不是真正的交易。

存储这些文件的正确方法是什么,以免它们成为拷贝?不使用指针不是一种选择,因为它们都将分配在堆上。

最佳答案

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

关于C++ 对象列表只是拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11371973/

相关文章:

c++ - 从第三方代码检查库版本

c++ - g++ std::visit 泄漏到全局命名空间?

c++ - 通用容器清除过程中的异常,C++

c++ - 错误 LNK2019 : unresolved external symbol main referenced in function __tmainCRTStartup MSVCRTD. lib(crtex.obj)

c++ - 使用 bool 值设置位集的最佳方法

c++ - 标准容器的复杂性保证是什么?

c++ - 我的代码中的 binary_search 谓词有什么问题

c++ - 如何从 STL 的 const_iterator 中获取数据?

c++ - back_insert_iterator<> 按值传递安全吗?

c++ - 将私有(private)变量添加到 C++ STL 类