我正在使用像
这样的无序地图unorderedmap.insert(make_pair(5, 6));
我怎样才能得到键位置的迭代器(值5)?我是否需要再次使用find()或者我可以从返回值中获取它吗?
感谢。
答案 0 :(得分:3)
假设您正在使用this unordered_map
,则迭代器为:
unorderedmap.insert(make_pair(5, 6)).first;
答案 1 :(得分:2)
首先,unordered_map
不是标准容器。但是如果您使用编译器提供的unordered_map
提供类似于this的API,那么它将返回一对<iterator,bool>
。可以使用iterator
访问的对中的.first
部分将为您提供插入元素的位置(如果已成功插入,则可以使用bool second
进行测试)
答案 2 :(得分:0)
这取自http://www.cplusplus.com/reference/stl/map/insert/
如前所述,使用pair :: first来获取迭代器。
第一个版本返回一对,用 其成员对::首先设置为 迭代器指向新的 插入元素或元素 已经有相同的价值了 地图。中的对::第二个元素 如果是新元素,则pair设置为true 如果元素被插入或者为false 具有相同的价值。
答案 3 :(得分:0)
unordered_map
界面类似于set
界面或map
界面,insert
方法返回std::pair<iterator,bool>
:
bool
如果插入发生,则为真,如果容器中已存在具有类似键的元素,则不会发生iterator
指向右侧元素:已存在的元素或新插入的元素,具体取决于案例因此,如果您只想访问该元素,只需使用:
map.insert(std::make_pair(key,value)).first
但是,检查您是否需要知道插入是否成功,通常需要关注它:)