2

キューがあります。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
    }
}

std キューでこれを行う方法はありますか?

ありがとう

4

3 に答える 3

4

、、、、およびをサポートするのstd::deque代わりに使用できます。これにより、全体を通してランダムアクセスも可能になりますが、それを無視して、両端キューのように扱うことができます。(実際には、両端キューの略です)。std::queuepush_frontpush_backpop_frontpop_backdequedeque

お役に立てれば!

于 2012-05-29T19:19:14.670 に答える
0

これを行う別の方法を次に示します。STL ベースのキュー実装を使用します。

于 2012-05-29T19:32:14.203 に答える
0

反対側の要素を削除したい場合popは、最初にプッシュするのをスキップしてください:

if(m_tableQ.size() < m_maxTableMessages) {
    m_tableQ.push(std::make_pair(playerName,message));
}
于 2012-05-29T19:22:27.590 に答える