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