首页 > 解决方案 > 如何安全地使用 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 constructorsassignment constructors

标签: c++stl

解决方案


没有标准容器知道您放入其中的数据。

因此它不能使用、处理或以其他方式操纵它存储的数据,只能存储它。所以如果你存储一个指针,双端队列就不能释放指针指向的对象,因为它不知道它是一个指向对象的指针。

所以回答你的问题:是的,将指针从一个容器“移动”到另一个容器是安全的。被指向的对象不会受到复制或移动指针本身的影响。


推荐阅读