如何在队列中使用内存?

时间:2010-07-20 03:53:03

标签: c++ stl queue

在我的项目中,我使用std :: queue类。我想知道如果我做以下事情会发生什么。

  • 获取队列中元素的指针(注意:指针而不是迭代器)。
  • 我在队列中进行修改,如队列中的push和pop(pop元素不是前一个指针所指向的)

我的指针是否仍然指向我在开头指定的同一个元素?它是由队列规范定义的吗?

2 个答案:

答案 0 :(得分:1)

只需使用std :: deque。 std :: queue旨在防止用户做任何非队列的事情,如。

答案 1 :(得分:1)

std::queue使用序列容器来实现它。默认情况下,使用std::deque。使用std::deque,只要所有插入和删除都位于容器的开头或结尾,容器中元素的引用和指针就不会失效。

但是,我不知道你将如何获得指向队列中元素的指针;它没有为此提供功能(您只能获得对队列中第一个和最后一个元素的引用)。