问题是不言自明的。但补充假设:map<int,int>
至少插入10个元素。删除最后插入的元素的正确方法是什么?
通过插入的最后一个元素,我的意思是,不是地图的最后一个元素,而是我上次插入元素时插入的元素。
答案 0 :(得分: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.
}
答案 1 :(得分:5)
没有API功能可以做到这一点。如果跟踪您插入元素的顺序非常重要,那么您将不得不进行vector<map<...>::iterator>
插入,并在从{{{{}}移除内容时使其保持最新状态。 1}}。
具体取决于您的代码的结构,map
的位置以及与之交互的内容。