博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STL map容器常用API
阅读量:6214 次
发布时间:2019-06-21

本文共 4163 字,大约阅读时间需要 13 分钟。

map容器:键值和实值是分开的,排序规则按照键值排序

#define _CRT_SECURE_NO_WARNINGS#include
#include
#include
using namespace std;template
void printMap(T &m){ for (map
::iterator it = m.begin(); it != m.end(); ++it){ cout << "key:" << it->first << " value:" << it->second << endl; }}//注意:map的排序规则,传入的参数不是pair类型,而是key类型struct mycompare{ bool operator()(int key1, int key2){ return key1 > key2; }};//1. map容器的使用void test01(){ //map是否支持随机访问?不支持随机访问,双向迭代器 //创建map容器 map
mymap; //1. 第一种插入方式 mymap.insert(pair
(3,"aaa")); //2. 第二种插入方式 mymap.insert(make_pair(6, "bbb")); //3. 第三种插入方式 mymap.insert(map
::value_type(2,"ccc")); //4. 第四种插入方式 mymap[4] = "ddd"; mymap[4] = "eee"; mymap.erase(2); printMap(mymap); //cout << "size:" << mymap.size() << endl; //如果使用[]号这种方式输出一个不存在的key的值,那么编译器会以指定key增加新的数据 //如果使用[]号方式插入一条key存在的数据,那么已有数据会被修改 //cout << mymap[100] << endl; //cout << "size:" << mymap.size() << endl;}//3. map查找操作/*find(key);//查找键key是否存在,若存在,返回该键的元素的迭代器;/若不存在,返回map.end();count(keyElem);//返回容器中key为keyElem的对组个数。对map来说,要么是0,要么是1。对multimap来说,值可能大于1。lower_bound(keyElem);//返回第一个key>=keyElem元素的迭代器。upper_bound(keyElem);//返回第一个key>keyElem元素的迭代器。equal_range(keyElem);//返回容器中key与keyElem相等的上下限的两个迭代器。*/void test02(){ map
mymap; mymap.insert(make_pair(1, "aaa")); mymap.insert(make_pair(2, "bbb")); mymap.insert(make_pair(3, "ccc")); mymap.insert(make_pair(4, "ddd")); mymap.insert(make_pair(5, "eee")); map
::iterator it = mymap.find(30); if (it == mymap.end()){ cout << "查找失败!" << endl; } else{ cout << "Key:" << it->first << " Value:" << it->second << endl; } it = mymap.lower_bound(3); if (it == mymap.end()){ cout << "查找失败!" << endl; } else{ cout << "Key:" << it->first << " Value:" << it->second << endl; } it = mymap.upper_bound(3); if (it == mymap.end()){ cout << "查找失败!" << endl; } else{ cout << "Key:" << it->first << " Value:" << it->second << endl; } pair
::iterator, map
::iterator> ret = mymap.equal_range(3); if (ret.first != mymap.end()){ cout << "Key:" << ret.first->first << " Value:" << ret.first->second << endl; } if (ret.second != mymap.end()){ cout << "Key:" << ret.second->first << " Value:" << ret.second->second << endl; }}int main(){ //test01(); test02(); system("pause"); return EXIT_SUCCESS;}

 

map容器案例:员工分组案例

#define _CRT_SECURE_NO_WARNINGS#include
#include
#include
#include
#include
using namespace std;//公司今天招聘了5个员工,5名员工进入公司之后,需要指派员工在那个部门工作//人员信息有: 姓名 年龄 电话 工资等组成//通过Multimap进行信息的插入 保存 显示//分部门显示员工信息 显示全部员工信息#define SALE_DEPATMENT 1 //销售部门#define DEVELOP_DEPATMENT 2 //研发部门#define FINACIAL_DEPATMENT 3 //财务部门class Woker{public: string mName; int mAge; int mSalary;};//创建员工void CreateWorkers(vector
&vWorkers){ srand((unsigned int)time(NULL)); string nameSeed = "ABCDE"; for (int i = 0; i < 5;i ++){ Woker worker; worker.mName = "员工"; worker.mName += nameSeed[i]; worker.mAge = rand() % 30 + 30; worker.mSalary = rand() % 10000 + 10000; vWorkers.push_back(worker); }}//员工分组void WokerByGroup(vector
&vWorkers, multimap
&mWokers){ //遍历员工 for (vector
::iterator it = vWorkers.begin(); it != vWorkers.end(); ++it){ int departmentID = rand() % 3 + 1; //员工保存在分组之后容器中 mWokers.insert(make_pair(departmentID,*it)); }}void Group(multimap
&mWokers, int depID){ multimap
::iterator it = mWokers.find(depID); int mcount = mWokers.count(depID); int index = 0; for (; it != mWokers.end() && index < mcount; ++it, ++index){ cout << "Name:" << it->second.mName << " Age:" << it->second.mAge << " Salary:" << it->second.mSalary << "美刀!" << endl; }}//打印各组员工信息void PrintWorkers(multimap
&mWokers){ cout << "财务部门员工信息如下:" << endl; Group(mWokers, FINACIAL_DEPATMENT); cout << "研发部门员工信息如下:" << endl; Group(mWokers, DEVELOP_DEPATMENT); cout << "销售部门员工信息如下:" << endl; Group(mWokers, SALE_DEPATMENT);}int main(){ vector
vWorkers;// 保存未分组的员工信息 multimap
mWokers; //保存分组后的员工信息 CreateWorkers(vWorkers); WokerByGroup(vWorkers, mWokers); PrintWorkers(mWokers); system("pause"); return EXIT_SUCCESS;}

 

转载于:https://www.cnblogs.com/w-x-me/p/6796425.html

你可能感兴趣的文章
利用gulp,当引入文件改动时,版本号自动更新~
查看>>
字符串连接比较(std::unique_ptr实现)
查看>>
性能产生的十大原因
查看>>
java对象引用,对象赋值
查看>>
Android 底层系统架构图
查看>>
应用程序开发者关于MeeGo平台的2010总结
查看>>
全方位掌握 NSIS 的使用[转]
查看>>
MySQL如何利用索引优化ORDER BY排序语句
查看>>
[NOI.AC]NOI2019省选模拟赛 第二场
查看>>
日均5亿查询量,京东到家订单中心ES架构演进
查看>>
Ahjesus获取自定义属性Attribute或属性的名称
查看>>
JVM虚拟机选项:Xms Xmx PermSize MaxPermSize区别(转)
查看>>
CCF 201403-2 窗口
查看>>
delete noprompt archivelog 报错ORA-00245,RMAN-08132
查看>>
tomcat添加context方式部署web应用
查看>>
docker监控
查看>>
uboot学习之一-----源码配置
查看>>
2012_7_5
查看>>
codeforces911G
查看>>
java 集合、接口
查看>>