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 队列来做到这一点?
谢谢
您可以使用 astd::deque
代替 a std::queue
,它支持push_front
, push_back
, pop_front
, 和pop_back
。这也允许整个过程中的随机访问,但您可以忽略它并将其视为deque
双端队列。(其实deque
就是双端队列的缩写)。
希望这可以帮助!