内容: C++中有的函数返回值不止一个,这时候如果你对几个返回值都需要,那么你要创建pair去接收它,因为函数其实没有办法真的返回来多个返回值,而是函数也是返回一个pair的。这种情况在STL容器使用中,尤为多见。

代码:我以map的插入为例子

假设你现在要对你的map对象,my_map进行插入,你可以使用下列语句:
在这里插入图片描述

情况一: 如果你要获得新插入的元素对应的迭代器呢?可以使用下列语句:
在这里插入图片描述

情况二: 如果你不想获得迭代器,你只想知道有没有成功呢?可以使用下列语句:
在这里插入图片描述

情况三: 如果你又想获得迭代器又想知道成功不成功呢?这时候你就可以创建一个pair来接收insert的返回值了。
在这里插入图片描述
这时候你就可以拿ret这个实例化pair对象去获取它的first和second成员了,从而达到你的目的。

接下来,那么pair是个什么东西呢?其实pair是一个类型模板,上面的ret是在创建它的实例化对象。pair定义在utility头文件中。下面我来给出它的定义:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意: 使用 map[x]=y; 时,如果map[x]还没有被插入过,那么这时候将会创建一个map[x] ,然后设置值为y,如果map[x]已经有了,那么修改值为y。!!!

总结一下:
map 的 insert 函数返回的是一个 pair 模板类对象,原型是 pair<iterator, bool>,其中 iterator 返回的是成功插入或更新的元素,bool 为 true 时表示插入了一个元素,为 false 时表示元素已经存在并更新了这个元素。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐