我有两个
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
没有标准容器知道您放入其中的数据。
因此它不能使用、处理或以其他方式操纵它存储的数据,而只能存储它。因此,如果您存储指针,双端队列无法释放指针指向的对象,因为它不知道它是指向对象的指针。
所以回答你的问题:是的,将指针从一个容器“移动”到另一个容器是安全的。复制或移动指针本身不会影响所指向的对象。