C++ 是否从队列中删除第一个元素?

C++ 是否从队列中删除第一个元素?,c++,data-structures,queue,C++,Data Structures,Queue,我在排队。如果超过X大小,当我推送一个元素时,我想删除队列的第一个元素。(将弹出的最后一个元素和推入的第一个元素) 有没有一种方法可以通过std队列实现这一点 谢谢您可以使用std::deque代替std::queue,后者支持push_-front、push_-back、pop_-front和pop_-back。这也允许在整个过程中进行随机访问,但您可以忽略这一点,将deque视为一个双端队列。(实际上,deque是双端队列的缩写) 希望这有帮助 您可以使用std::deque代替std::q

我在排队。如果超过X大小,当我推送一个元素时,我想删除队列的第一个元素。(将弹出的最后一个元素和推入的第一个元素)

有没有一种方法可以通过std队列实现这一点


谢谢

您可以使用
std::deque
代替
std::queue
,后者支持
push_-front
push_-back
pop_-front
pop_-back
。这也允许在整个过程中进行随机访问,但您可以忽略这一点,将
deque
视为一个双端队列。(实际上,
deque
是双端队列的缩写)


希望这有帮助

您可以使用
std::deque
代替
std::queue
,后者支持
push_-front
push_-back
pop_-front
pop_-back
。这也允许在整个过程中进行随机访问,但您可以忽略这一点,将
deque
视为一个双端队列。(实际上,
deque
是双端队列的缩写)


希望这有帮助

如果您想从
pop
所做的另一端删除元素,只需首先跳过推它:

if(m_tableQ.size() < m_maxTableMessages) {
    m_tableQ.push(std::make_pair(playerName,message));
}
if(m_tableQ.size()
如果您想从
pop
操作的另一端移除元素,只需首先跳过推它:

if(m_tableQ.size() < m_maxTableMessages) {
    m_tableQ.push(std::make_pair(playerName,message));
}
if(m_tableQ.size()
是另一种方法。使用基于STL的队列实现。

是另一种方法。使用基于STL的队列实现。

在FIFO队列中,将弹出的最后一个元素位于推入的第一个元素的另一端。你想要哪一个?是的,很混乱。为什么不直接使用push和pop并忘掉它呢?在FIFO队列中,最后一个被弹出的元素位于被推入的第一个元素的另一端。你想要哪一个?是的,很混乱。为什么不直接使用推送和弹出,然后忘记它呢?是的,这正是我需要的。谢谢。是的,这正是我需要的。谢谢。对不起,我看不出这是怎么回答这个问题的。大概OP已经在使用
std::queue
,但是想要从中删除最后一个元素,而
std::queue
自然不支持这个元素。很抱歉,我看不出这是如何回答这个问题的。大概OP已经在使用一个
std::queue
,但想从中删除最后一个元素,而
std::queue
自然不支持这个元素。不,我的想法是,我想保留前X条消息,当我有X条消息时,最不重要的一条(最老的一条)就消失了,新的一条就出现了。@Milo:在这种情况下,您可以只使用
pop
。不,我的想法是希望保留前X条消息,当我有X条消息时,最不重要的消息(最旧的消息)会消失,新的消息会出现。@Milo:在这种情况下,您可以只使用
pop