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 函数可以做到这一点。如果跟踪插入元素的顺序很重要,那么您将必须进行 a vector<map<...>::iterator>of 插入,并在从map.

你如何做到这一点取决于你的代码的结构、代码的位置map以及管理与它的交互的方式。

于 2012-08-25T10:33:23.310 回答