c++ - 如何安全地使用 deque::pop_front() 中的元素?
问题描述
我有两个std::deque
,我想像这样将元素从一个移动到另一个:
T* t = new T;
q1.push_back(t);
std::deque<T*> q2;
q2.push_back(q1.front());
q1.pop_front();
我的问题是:
1:是否pop_front()
释放内存?如果是这样,q2
则无法访问该元素。
2:会push_back(q1.front())
做Copy constructors
或assignment constructors
解决方案
没有标准容器知道您放入其中的数据。
因此它不能使用、处理或以其他方式操纵它存储的数据,只能存储它。所以如果你存储一个指针,双端队列就不能释放指针指向的对象,因为它不知道它是一个指向对象的指针。
所以回答你的问题:是的,将指针从一个容器“移动”到另一个容器是安全的。被指向的对象不会受到复制或移动指针本身的影响。
推荐阅读
- scope - 如何修改 raku 代码“say $?PACKAGE;” 打印完全限定的包名称
- python - 将查询从 sql 类型转换为 mongodb 类型
- eclipse - 使用 rascal-maven-plugin 构建错误(未定义模块 vis::Render)
- html - 环绕按钮的锚点移动其位置?
- ionic-framework - Ionic4:在一行上有多个控件(输入和复选框)的列表项
- sql-server - OData 源错误:在服务器上部署后“无法从运行时连接管理器获取托管连接”
- python - Violin plot in plotly enclosing individual data points
- flutter - 网络抖动时同步数据
- c# - 如何将值列表返回到帖子?
- javascript - 如何在 VEGA Api 中使用 D3 树数据?