C++map的用法

map:关联容器,提供一对一(第一个为关键字,第二个为关键字的值,关键字只能出现一次)的数据处理能力。关键字:key,对应的值:value;key值唯一。

map内部自建一颗红黑树,具有对数据自动排序的功能,所以在map内部所有的数据都是有序的。

 

头文件:

#include <map>

map构造函数:

map<int, string> mapString;

map数据插入:

第一种:用insert函数插入数据
mapString.insert(pair<int, string>(1, "hello"));
mapString.insert(pair<int, string>(2, "world"));

第二种:insert函数配合value_type
mapString.insert(map<int ,string>::value_type(3, "c++"));
mapString.insert(map<int, string>::value_type(4, "learning"));

第三种:数组的方式插入
mapString[5] = "true";
mapString[6] = "false";

第一种方式与第二种方式插入重复key值数据时,是无法插入的,第三种方式插入重复key值数据会将原来的数据覆盖掉。

 

mapString.size() //计算map的大小
mapString.clear(); //情况map内容
mapString.empty(); //判断容器是否为空
mapString.swap(); //交换容器内容
map<int, string> mapString;
map<int, string> test;
mapString[1] = "true";
mapString[2] = "false";
test[1] = "hello";
test[2] = "world";
test[3] = "test";
test.swap(mapString);

结果:test容器与mapString容器的内容会发生交换

打印mapString内容:

1:hello

2:world

3:test

 

map遍历:

map<int, string>::iterator iter;
for(iter = mapString.begin(); iter != mapString.end(); ++iter)
{
    cout<<iter->first<<"=>"<<iter->second<<endl;
}

输出:

[root@localhost workplace]# ./test

1=>hello

2=>world

 

反向迭代器输出:

map<int, string>::reverse_iterator iter;
for(iter = mapString.rbegin(); iter != mapString.rend(); ++iter)
{
    cout<<iter->first<<"=>"<<iter->second<<endl;
}

结果:

[root@localhost workplace]# ./test

2=>world

1=>hello

 

map中find用法:根据key查找容器中是否存在

map<int, string>::iterator iter = mapString.find(1);
if(iter != mapString.end())
{
    cout<<iter->second<<endl;
}

 

map中erase用法:删除map中的数据

void erase (iterator position); //erasing by iterator
map<int, string>::iterator iter = mapString.find(1);
mapString.erase(iter);

size_type erase (const key_type& k);// erasing by key
mapString.erase(3);

void erase (iterator first, iterator last); // erasing by range
iter = mapString.find(4);
mapString.erase(iter, mapString.end());

 

参考:

https://www.cnblogs.com/fnlingnzb-learner/p/5833051.htm

http://www.cplusplus.com/reference/map/map/

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值