質問は自明です。しかし補足するとmap<int,int>
、少なくとも 10 個の要素が挿入されているとします。最後に挿入された要素を削除する正しい方法は何ですか?
最後に挿入された要素とは、マップの最後の要素ではなく、最後に要素を挿入したときに挿入した要素を意味します。
最後に挿入された要素に反復子を保存します。マップ内の要素は、挿入順ではなく、キー値によって並べ替えられます。
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.
}
それを行うための API 関数はありません。要素を挿入した順序を追跡することが重要な場合は、 から要素vector<map<...>::iterator>
を削除するときに最新の状態に保つだけでなく、 の を挿入する必要がありますmap
。
それをどの程度正確に行うかは、コードがどのように構造化されているか、 がどこにあるmap
か、そして何がそれとの相互作用を管理するかによって異なります。