从队列中删除第一个元素?

jma*_*erx 2 c++ queue data-structures

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

void ClientPlayerManager::queueTableMessage( const std::string& playerName, const std::string& message )
{
    m_tableQ.push(std::make_pair(playerName,message));

    if(m_tableQ.size() > m_maxTableMessages)
    {
        //m_tableQ.pop_back(); does not exist
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法用 std 队列来做到这一点?

谢谢

tem*_*def 6

您可以使用 astd::deque代替 a std::queue,它支持push_front, push_back, pop_front, 和pop_back。这也允许整个过程中的随机访问,但您可以忽略它并将其视为deque双端队列。(其实deque就是双端队列的缩写)。

希望这可以帮助!