c++ 之map用法

使用map时,需包含头文件< map>
.

一、定义及初始化

//  直接定义
map<char,int> mymap;
mymap['a'] = 10;
mymap['b'] = 60;

//   复制
map<char, int> second(mymap);

//  通过迭代器
map<char, int> third(mymap.begin(),mymap.end());

二、插入元素

map<string, string> mapStudent;

//  用insert函数插入pair
mapStudent.insert(pair<string, string>("r000", "student_zero"));

//  用"array"方式插入
mapStudent["r123"] = "student_first";
mapStudent["r456"] = "student_second";

//  指定位置插入
map<string, string>::iterator it = mapStudent.begin();
mapStudent.insert(it, pair<string, string>("r324", "student_third" ));  //效率更高

三、删除元素

map<int, int> mp;
for (int i = 0; i < 20; i++){
        mp.insert(make_pair(i, i));
}

mp.erase(0);
mp.erase(mp.begin());

 //等同于mp.clear()
 mp.erase(mp.begin(), mp.end());

// 删除指定键值的键值对
mp.erase(2);

四、打印元素

map <int, string> _map; 
_map[200] = "booomm";
_map.insert(pair<int, string>(4, "33333"));
	
//  Map中元素取值主要有at和[]两种操作,at会作下标检查,而[]不会。

//  使用at会进行关键字检查,因为没有100因此该语句会报错	
cout<< _map.at(100).c_str() << endl;         

//  因为已经有4了,不会报错		      
cout << _map.at(4).c_str() << endl;

//  ID_Name中没有关键字200,使用[]取值会导致插入,因此不会报错,但打印结果为空
cout << _map[300].c_str() << endl;

五、寻找元素

map<int, int> mp;
map<int, int>::iterator it_find;
it_find = mp.find(0);

if (it_find != mp.end()){
        it_find->second = 20;
}else{
        printf("no!\n");
}

六、遍历元素

map<int, int>::iterator it;
for (it = mp.begin(); it != mp.end(); it++){
        printf("%d->%d\n", it->first, it->second);
}

七、交换元素

map <int, int> m1, m2;
m1.insert ( pair <int, int>  ( 1, 10 ) );
m1.insert ( pair <int, int>  ( 2, 20 ) );
m2.insert ( pair <int, int>  ( 10, 100 ) );
m2.insert ( pair <int, int>  ( 20, 200 ) );

m1.swap( m2 );

八、获取元素个数

int nSize = mapStudent.size();

九、排序

 Map中的元素是自动按key升序排序,所以不能对map用sort函数

十、类型

 unordered_map是用哈希表实现的,复杂度为O(1),而map是用红黑树实现的。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值