c++ 向map添加元素 pair返回问题

c++ 向map添加元素 pair返回问题,第1张

insert返回一个pair

即ret是一个pair,

他的first是迭代器,他的位置是给定关键字元素的位置,

second是bool值 ret.second你加的是bool,应该不行的。

你的测试时怎么成功的,应该不行啊。

输入1 2 1 2 1

现在的map是 (1, 3)(2, 2)

输入2

ret返回pair(2的迭代器,bool)

ret.first(2的迭代器)->second(value++)

(1,3)(2,3)

C++中map容器提供一个键值对容器,map与multimap差别仅仅在于multiple允许一个键对应多个值。本文主要总结一下map基本用法嵌套用法示例。

一、map基本用法

1 头文件

#include <map>

2 定义

map<int, int> my_Map//注意这里的int和int可以是其他类型

或者是typedef map<int, int> MY_MAP

MY_MAP my_Map

3 插入数据

(1) my_Map[1] = 1

(2) my_Map.insert(map<int, int>::value_type(2,2))

(3) my_Map.insert(pair<int,int>(3,3))

(4) my_Map.insert(make_pair<string,int>(4,4))

4 查找数据和修改数据

(1) int i = my_Map[1]

my_Map[1] = i

(2) MY_MAP::iterator my_Itr

my_Itr.find(2)

int j = my_Itr->second

my_Itr->second = j

注意:

A.键本身是不能被修改的,除非删除。

B.不管键存不存在,比如my_Map[1] = i,都会执行赋值 *** 作。

5 删除数据

(1) my_Map.erase(my_Itr)

(2) my_Map.erase(3)

6 遍历数据

for (my_Itr=my_Map.begin() my_Itr!=my_Map.end() ++my_Itr) {}

7 其它方法

my_Map.size() :返回元素数目

my_Map.empty():判断是否为空

my_Map.clear() :清空所有元素

二、嵌套用法

1.示例如下:

[cpp]

map<int,map<int,int>>multiMap//对于这样的map嵌套定义,

map<int, int>temp //定义一个map<int, string>变量,对其定义后在插入multiMap

temp[9] = 9

temp[10] = 10

multiMap[10] = temp

multiMap[10][11]=11

multiMap[5][30]=30

map<int,map<int,int>>::iterator multitr // 以下是如何遍历本multiMap

map<int,int>::iterator intertr

for(multitr=multiMap.begin()multitr!=multiMap.end()multitr++)

{

for(intertr= multitr ->second.begin()intertr != multitr ->second.end()intertr ++)

cout<<multitr ->first<<" "<<intertr->first<<" ("<<intertr ->second <<")"<<endl

}

2.

也可以这样:

[cpp]

map<int,map<int,int>* >multiMap

map<int, int>* temp = new map<int, int>

multiMap[10]=temp

这样动态new内存,就要记得delete,否则会有内存泄露,delete如下:

[cpp]

map<int, int>* temp1

for(multitr=multiMap.begin()multitr!=multiMap.end()multitr++)

{

temp1 = multitr ->second

delete temp1

temp1 = NULL

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11364302.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存