c++之关联容器-map

关联容器支持高效的关键字查找和访问,两个主要的关联容器:mapset
map中的元素是 关键字-值 对(key-value),关键字起索引作用。
set中只包含一个关键字。默认set是 无重复元素+有序存储的。除非加上unordered、multi修饰。

map定义及初始化

map<string, int> word_count;    //空容器

map<string, int> authors ={ {"Adam", 1}, 
                            {"Jack", 2},
                            {"Mike", 3} };  //直接初始化

map封装好的功能

auto mp_it = word_count.begin(); //定义一个迭代器,指向map首元素

  1. mp_it->first //string关键字
    mp_it->second //int 值
  2. 支持begin和end操作
    word_count.begin();
    word_count.end();
  1. 添加元素
    word_count.insert({“and”, 5}); //花括号方式
    word_count.insert(make_pair(“and”, 5)); //pair方式
    返回的是一个pair,pair.first是指向插入元素的迭代器;pair.second是bool,true代表插入成功。
    例:
auto ret = word_count.insert(make_pair("and", 5));
if( ret.second )   //代表插入成功
  1. 删除元素
word_count.erase("and"); //删除关键字为and的元素,返回删除数量
word_count.erase(it); //删除迭代器it指向的元素,返回it之后元素的迭代器
word_count.erase(it1, it2); //删除两个迭代器之间的元素,返回it2
  1. 访问元素
    使用find或者count函数。
word_count.find("and");  //返回迭代器,第一次and出现位置
word_count.count("and");  //返回and出现的次数
/* 无序容器不建议使用lower_bound()   upper_bound() equal_range()*/

map实现-统计单词出现次数

map<string, int> word_count;
string str;
while(cin>>str)
   ++word_count[str];  //下标操作,如果有str,加1;如果没有,会自动插入
for(const auto it : word_count)
   cout<<it.first<<"出现了"<<it.second<<"次"<<endl;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值