如何安全地使用 deque::pop_front() 中的元素?

问题描述 投票:0回答:1

我有两个

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

c++ stl
1个回答
2
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.