1

質問は自明です。しかし補足するとmap<int,int>、少なくとも 10 個の要素が挿入されているとします。最後に挿入された要素を削除する正しい方法は何ですか?

最後に挿入された要素とは、マップの最後の要素ではなく、最後に要素を挿入したときに挿入した要素を意味します。

4

2 に答える 2

6

最後に挿入された要素に反復子を保存します。マップ内の要素は、挿入順ではなく、キー値によって並べ替えられます。

map::insert最後に挿入された要素への反復子 (およびbool挿入が行われたかどうかを示す) を返します。

auto p = yourMap.insert(k,v);
if(p.second) {
    lastInsert = p.first;
} else {
    //Ambiguous. Depending on what you want
    //this could be an error, or you update the value and the iterator,
    //or you update just the value.
}

http://en.cppreference.com/w/cpp/container/map/insert

于 2012-08-25T10:35:17.540 に答える
5

それを行うための API 関数はありません。要素を挿入した順序を追跡することが重要な場合は、 から要素vector<map<...>::iterator>を削除するときに最新の状態に保つだけでなく、 の を挿入する必要がありますmap

それをどの程度正確に行うかは、コードがどのように構造化されているか、 がどこにあるmapか、そして何がそれとの相互作用を管理するかによって異なります。

于 2012-08-25T10:33:23.310 に答える