unordered_map C ++

时间:2010-11-08 10:37:52

标签: c++ stl

我正在使用像

这样的无序地图
unorderedmap.insert(make_pair(5, 6));

我怎样才能得到键位置的迭代器(值5)?我是否需要再次使用find()或者我可以从返回值中获取它吗?

感谢。

4 个答案:

答案 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

但是,检查您是否需要知道插入是否成功,通常需要关注它:)