Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无序地图C和x2B+;_C++_Stl - Fatal编程技术网

C++ 无序地图C和x2B+;

C++ 无序地图C和x2B+;,c++,stl,C++,Stl,我用的是无序的地图 unorderedmap.insert(make_pair(5, 6)); 如何获取键位置的迭代器(值5)?我是否需要再次使用find(),或者如何从返回值中获取它 谢谢。假设您正在使用,迭代器是: unorderedmap.insert(make_pair(5, 6)).first; 这是从 如前所述,使用pair::first获取迭代器 第一个版本返回一对,带有 其成员对::首先设置为 迭代器,指向新的 插入元素或将其添加到元素 这已经有了同样的价值 地图中的第二个元

我用的是无序的地图

unorderedmap.insert(make_pair(5, 6));
如何获取键位置的迭代器(值5)?我是否需要再次使用find(),或者如何从返回值中获取它

谢谢。

假设您正在使用,迭代器是:

unorderedmap.insert(make_pair(5, 6)).first;
这是从

如前所述,使用pair::first获取迭代器

第一个版本返回一对,带有 其成员对::首先设置为 迭代器,指向新的 插入元素或将其添加到元素 这已经有了同样的价值 地图中的第二个元素 如果有新元素,则将pair设置为true 如果是元素,则为插入或false 具有相同的价值存在


首先,
unordered_map
不是标准容器。但是,如果您使用的是编译器提供的
无序映射
,它提供了类似的API,那么它将返回一对
。该对的
迭代器
部分可以使用
进行访问。首先
将给出插入元素的位置(如果插入成功,可以使用bool
第二个
进行测试).

无序映射接口类似于设置接口或映射接口,因为插入方法返回一个
std::pair

  • 如果插入发生,则
    bool
    为真;如果容器中已存在具有类似键的元素,则不会发生插入
  • 迭代器
    指向右侧元素:根据具体情况,可以是已经存在的元素,也可以是新插入的元素
因此,如果您只希望访问元素,只需使用:

map.insert(std::make_pair(key,value)).first

但是,请检查您是否不需要知道插入是否成功,通常情况下,您会关心它:)

。第二个
会告诉您插入是否成功。这是C++0x中的标准,尚未正式发布,但大多数新编译器已经开始实现它。@Gorpik,@DeadMG:因为问题标记为STL,也许提问者“应该”使用
hash\u map
。仍然有相同的插入功能。啊,我想他指的是地图。我学到了一些新东西,谢谢。现在来看看两者之间的区别:)