这个问题是不言自明的。但补充假设: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 函数可以做到这一点。如果跟踪插入元素的顺序很重要,那么您将必须进行 a vector<map<...>::iterator>
of 插入,并在从map
.
你如何做到这一点取决于你的代码的结构、代码的位置map
以及管理与它的交互的方式。