关联容器-multimap
来源:互联网 发布:辽宁省软件行业协会 编辑:程序博客网 时间:2024/05/16 18:28
multimap与multiset类型容许一个键对应多个值,与map和set相比,唯一的区别是不能使用下标来进行操作。
以下实例详细说明了multimap的定义、元素的添加和删除、元素的查找等操作。
#include "stdafx.h"#include <string>#include <iostream>#include <map>using namespace std;int _tmain(int argc, _TCHAR* argv[]){// anthor---bookmultimap<string,string> strmap;//元素的添加操作:typedef multimap<string,string>::value_type pair_type;//pair类型//注意:元素插入的顺序 != 元素在容器中保存的顺序strmap.insert(pair_type("jone","c++"));strmap.insert(pair_type("jone","c"));strmap.insert(pair_type("jone","c++ primer"));strmap.insert(pair_type("jerry","java"));strmap.insert(pair_type("jerry","javascript"));strmap.insert(pair_type("Alan","oracle"));strmap.insert(pair_type("Alan","sqlserver"));strmap.insert(pair_type("Alan","mysql"));cout<<"元素的查找1:"<<endl;typedef multimap<string,string>::size_type sz_type;sz_type nCount = strmap.count("Alan");//返回键:Alan 出现的次数multimap<string,string>::iterator iter = strmap.find("Alan");//指向第一个拥有该键的元素 //同一个键所关联的元素相邻存放for (sz_type i = 0;i < nCount;i++){cout<<"键:"<<iter->first<<" "<<"值:"<<iter->second<<endl;iter++;}cout<<"元素的查找2:"<<endl;//lower_bound(k) 返回一个迭代器,指向第一个与k(键)匹配的元素//upper_bound(k) 返回一个迭代器,指向最后一个与k(键)匹配元素的下一位置multimap<string,string>::iterator iter1 = strmap.lower_bound("jerry");multimap<string,string>::iterator iter2 = strmap.upper_bound("jerry");for (;iter1 != iter2;iter1++){cout<<"键:"<<iter1->first<<" "<<"值:"<<iter1->second<<endl;}cout<<"元素的查找3:"<<endl;//equal_range(k) 返回一个迭代器对的pair对象,first是lower_bound(k),second是upper_bound(k)。typedef multimap<string,string>::iterator iter_type;pair<iter_type,iter_type> p = strmap.equal_range("jone");for (;p.first != p.second;p.first++){cout<<"键:"<<p.first->first<<" "<<"值:"<<p.first->second<<endl;}cout<<"元素的删除1:"<<endl;multimap<string,string>::iterator iter3 = strmap.lower_bound("Alan");multimap<string,string>::iterator iter4 = strmap.upper_bound("jerry");cout<<"删除前:"<<strmap.size()<<endl;strmap.erase(iter3,iter4);//删除两个迭代器之间的元素cout<<"删除后:"<<strmap.size()<<endl;multimap<string,string>::iterator iter5;for (iter5 = strmap.begin();iter5 != strmap.end();iter5++){cout<<"键:"<<iter5->first<<" "<<"值:"<<iter5->second<<endl;}cout<<"元素的删除1:"<<endl;int iCount = 0;iCount = strmap.erase("jone");cout<<"第一次删除数量:"<<iCount<<endl;iCount = strmap.erase("jerry");cout<<"第二次删除数量:"<<iCount<<endl;iCount = strmap.erase("Alan");cout<<"第三次删除数量:"<<iCount<<endl;cout<<"最终: "<<strmap.size()<<endl;return 0;}
阅读全文
0 0
- 关联容器之multimap
- 关联容器 multimap
- 关联容器-multimap
- Chapter 17.关联容器multimap
- STL关联容器—multimap
- 关联容器(四):multimap
- 关联式容器map/multimap
- STL容器-关联式容器map/multimap
- C++容器---关联式容器<map>&<multimap>
- C++语法基础--关联容器--multimap,multiset
- 关联容器(map、set、multimap、multiset)
- [c++ primer] 关联容器_set,multimap
- 关联容器 map/set/multimap/multiset
- STL关联容器之multiset和multimap
- SGISTL源码探究-关联式容器:multimap
- 关联容器(set & multiset & Map& multimap)
- STL概览-关联容器set,multiset,map,multimap(四)
- linux下练习 c++ 关联式容器multimap特性
- 面试题30.最小的K个数
- c/s与b/s的优缺点
- d3实现横向柱状图数据展示(V4)
- android插件化框架DL学习笔记及漫谈一点插件化技术
- mybatis报Invalid bound statement (not found)错误
- 关联容器-multimap
- WinDBG技巧:在加载/卸载一个DLL 的时候下断点
- 常用正则表达式
- 欢迎使用CSDN-markdown编辑器
- 如何使用thinkphp5开发一个采集工具
- application/x-www-form-urlencoded与application/json
- 将Android项目开源到JCenter两种方式
- restful api http动词含义
- scrapy 爬取漫画