【博客60】C++使用pair接收 “多返回值“ 函数的 “返回值“
内容: C++中有的函数返回值不止一个,这时候如果你对几个返回值都需要,那么你要创建pair去接收它,因为函数其实没有办法真的返回来多个返回值,而是函数也是返回一个pair的。这种情况在STL容器使用中,尤为多见。代码:我以map的插入为例子假设你现在要对你的map对象,my_map进行插入,你可以使用下列语句:情况一: 如果你要获得新插入的元素对应的迭代器呢?可以使用下列语句:情况二...
内容: 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 时表示元素已经存在并更新了这个元素。
更多推荐
所有评论(0)