当前位置: 首页 > news >正文

购物网站开发视频教程南里商濮阳网站建设

购物网站开发视频教程,南里商濮阳网站建设,在线企业建站模板,龙海网站开发C提高编程 第三章 STL - 常用容器 九、map/ multimap容器 1. map基本概念 简介#xff1a; map中所有元素都是pairpair中第一个元素为key#xff08;键值#xff09;#xff0c;起到索引作用#xff0c;第二个元素为value#xff08;实值#xff09;所有元素都会根…C提高编程 第三章 STL - 常用容器 九、map/ multimap容器 1. map基本概念 简介 map中所有元素都是pairpair中第一个元素为key键值起到索引作用第二个元素为value实值所有元素都会根据元素的键值自动排序 本质 map/multimap属于关联式容器底层结构是用二叉树实现。 优点 可以根据key值快速找到value值 map和multimap区别 map不允许容器中有重复key值元素multimap允许容器中有重复key值元素 2. map构造和赋值 功能描述 对map容器进行构造和赋值操作 函数原型 构造 mapT1, T2 mp; //map默认构造函数:map(const map mp); //拷贝构造函数 赋值 map operator(const map mp); //重载等号操作符 示例 #include mapvoid printMap(mapint,intm) {for (mapint, int::iterator it m.begin(); it ! m.end(); it){cout key it-first value it-second endl;}cout endl; }void test01() {mapint,intm; //默认构造m.insert(pairint, int(1, 10));m.insert(pairint, int(2, 20));m.insert(pairint, int(3, 30));printMap(m);mapint, intm2(m); //拷贝构造printMap(m2);mapint, intm3;m3 m2; //赋值printMap(m3); }int main() {test01();system(pause);return 0; }/*key 1 value 10key 2 value 20key 3 value 30key 1 value 10key 2 value 20key 3 value 30key 1 value 10key 2 value 20key 3 value 30 */总结map中所有元素都是成对出现插入数据时候要使用对组 3. map大小和交换 功能描述 统计map容器大小以及交换map容器 函数原型 size(); //返回容器中元素的数目empty(); //判断容器是否为空swap(st); //交换两个集合容器 示例 #include mapvoid printMap(mapint,intm) {for (mapint, int::iterator it m.begin(); it ! m.end(); it){cout key it-first value it-second endl;}cout endl; }void test01() {mapint, intm;m.insert(pairint, int(1, 10));m.insert(pairint, int(2, 20));m.insert(pairint, int(3, 30));if (m.empty()){cout m为空 endl;}else{cout m不为空 endl;cout m的大小为 m.size() endl;} }//交换 void test02() {mapint, intm;m.insert(pairint, int(1, 10));m.insert(pairint, int(2, 20));m.insert(pairint, int(3, 30));mapint, intm2;m2.insert(pairint, int(4, 100));m2.insert(pairint, int(5, 200));m2.insert(pairint, int(6, 300));cout 交换前 endl;printMap(m);printMap(m2);cout 交换后 endl;m.swap(m2);printMap(m);printMap(m2); }int main() {test01();test02();system(pause);return 0; }/*m不为空m的大小为 3交换前key 1 value 10key 2 value 20key 3 value 30key 4 value 100key 5 value 200key 6 value 300交换后key 4 value 100key 5 value 200key 6 value 300key 1 value 10key 2 value 20key 3 value 30 */总结 统计大小 — size判断是否为空 — empty交换容器 — swap 4. map插入和删除 功能描述 map容器进行插入数据和删除数据 函数原型 insert(elem); //在容器中插入元素。clear(); //清除所有元素erase(pos); //删除pos迭代器所指的元素返回下一个元素的迭代器。erase(beg, end); //删除区间[beg,end)的所有元素 返回下一个元素的迭代器。erase(key); //删除容器中值为key的元素。 示例 #include mapvoid printMap(mapint,intm) {for (mapint, int::iterator it m.begin(); it ! m.end(); it){cout key it-first value it-second endl;}cout endl; }void test01() {//插入mapint, int m;//第一种插入方式m.insert(pairint, int(1, 10));//第二种插入方式m.insert(make_pair(2, 20));//第三种插入方式m.insert(mapint, int::value_type(3, 30));//第四种插入方式m[4] 40; printMap(m);//删除m.erase(m.begin());printMap(m);m.erase(3);printMap(m);//清空m.erase(m.begin(),m.end());m.clear();printMap(m); }int main() {test01();system(pause);return 0; }/*key 1 value 10key 2 value 20key 3 value 30key 4 value 40key 2 value 20key 3 value 30key 4 value 40key 2 value 20key 4 value 40*/总结 map插入方式很多记住其一即可 插入 — insert删除 — erase清空 — clear 5. map查找和统计 功能描述 对map容器进行查找数据以及统计数据 函数原型 find(key); //查找key是否存在,若存在返回该键的元素的迭代器若不存在返回set.end();count(key); //统计key的元素个数 示例 #include map//查找和统计 void test01() {mapint, intm; m.insert(pairint, int(1, 10));m.insert(pairint, int(2, 20));m.insert(pairint, int(3, 30));//查找mapint, int::iterator pos m.find(3);if (pos ! m.end()){cout 找到了元素 key (*pos).first value (*pos).second endl;}else{cout 未找到元素 endl;}//统计int num m.count(3);cout num num endl; }int main() {test01();system(pause);return 0; }/*找到了元素 key 3 value 30num 1 */总结 查找 — find 返回的是迭代器统计 — count 对于map结果为0或者1 6. map容器排序 学习目标 map容器默认排序规则为 按照key值进行 从小到大排序掌握如何改变排序规则 主要技术点: 利用仿函数可以改变排序规则 示例 #include mapclass MyCompare { public:bool operator()(int v1, int v2) const {return v1 v2;} };void test01() {//默认从小到大排序//利用仿函数实现从大到小排序mapint, int, MyCompare m;m.insert(make_pair(1, 10));m.insert(make_pair(2, 20));m.insert(make_pair(3, 30));m.insert(make_pair(4, 40));m.insert(make_pair(5, 50));for (mapint, int, MyCompare::iterator it m.begin(); it ! m.end(); it) {cout key: it-first value: it-second endl;} } int main() {test01();system(pause);return 0; }/*key:5 value:50key:4 value:40key:3 value:30key:2 value:20key:1 value:10 */总结 利用仿函数可以指定map容器的排序规则对于自定义数据类型map必须要指定排序规则,同set容器 十、案例-员工分组 1. 案例描述 公司今天招聘了10个员工ABCDEFGHIJ10名员工进入公司之后需要指派员工在那个部门工作员工信息有: 姓名 工资组成部门分为策划、美术、研发随机给10名员工分配部门和工资通过multimap进行信息的插入 key(部门编号) value(员工)分部门显示员工信息 2. 实现步骤 创建10名员工放到vector中遍历vector容器取出每个员工进行随机分组分组后将员工部门编号作为key具体员工作为value放入到multimap容器中分部门显示员工信息 案例代码 #includeiostream using namespace std; #include vector #include string #include map #include ctime/* - 公司今天招聘了10个员工ABCDEFGHIJ10名员工进入公司之后需要指派员工在那个部门工作 - 员工信息有: 姓名 工资组成部门分为策划、美术、研发 - 随机给10名员工分配部门和工资 - 通过multimap进行信息的插入 key(部门编号) value(员工) - 分部门显示员工信息 */#define CEHUA 0 #define MEISHU 1 #define YANFA 2class Worker { public:string m_Name;int m_Salary; };void createWorker(vectorWorkerv) {string nameSeed ABCDEFGHIJ;for (int i 0; i 10; i){Worker worker;worker.m_Name 员工;worker.m_Name nameSeed[i];worker.m_Salary rand() % 10000 10000; // 10000 ~ 19999//将员工放入到容器中v.push_back(worker);} }//员工分组 void setGroup(vectorWorkerv,multimapint,Workerm) {for (vectorWorker::iterator it v.begin(); it ! v.end(); it){//产生随机部门编号int deptId rand() % 3; // 0 1 2 //将员工插入到分组中//key部门编号value具体员工m.insert(make_pair(deptId, *it));} }void showWorkerByGourp(multimapint,Workerm) {// 0 A B C 1 D E 2 F G ...cout 策划部门 endl;multimapint,Worker::iterator pos m.find(CEHUA);int count m.count(CEHUA); // 统计具体人数int index 0;for (; pos ! m.end() index count; pos , index){cout 姓名 pos-second.m_Name 工资 pos-second.m_Salary endl;}cout ---------------------- endl;cout 美术部门 endl;pos m.find(MEISHU);count m.count(MEISHU); // 统计具体人数index 0;for (; pos ! m.end() index count; pos, index){cout 姓名 pos-second.m_Name 工资 pos-second.m_Salary endl;}cout ---------------------- endl;cout 研发部门 endl;pos m.find(YANFA);count m.count(YANFA); // 统计具体人数index 0;for (; pos ! m.end() index count; pos, index){cout 姓名 pos-second.m_Name 工资 pos-second.m_Salary endl;}}int main() {srand((unsigned int)time(NULL));//1、创建员工vectorWorkervWorker;createWorker(vWorker);//2、员工分组multimapint, WorkermWorker;setGroup(vWorker, mWorker);//3、分组显示员工showWorkerByGourp(mWorker);测试//for (vectorWorker::iterator it vWorker.begin(); it ! vWorker.end(); it)//{// cout 姓名 it-m_Name 工资 it-m_Salary endl;//}system(pause);return 0; }/*策划部门姓名 员工A 工资 16609姓名 员工B 工资 18235姓名 员工E 工资 13506----------------------美术部门 姓名 员工H 工资 19680姓名 员工J 工资 12307----------------------研发部门 姓名 员工C 工资 11034姓名 员工D 工资 16951姓名 员工F 工资 12186姓名 员工G 工资 12650姓名 员工I 工资 19337 */总结 当数据以键值对形式存在可以考虑用map 或 multimap
http://www.w-s-a.com/news/521474/

相关文章:

  • 桂林建站平台哪家好给别人做网站怎么收取费用
  • python做网站显示表格用visual做的网站
  • 彩票网站建设需要什么聊城网站建设首选天成网络
  • 安徽建设工程网站wordpress标签云代码
  • 推荐佛山顺德网站建设手机网站建设域名空间
  • 电子商务网站建设策划书例子企业官网用什么cms系统
  • 网站栏目设计怎么写平面设计接单报价表
  • 做网站美工要学什么网站推广的方法包括
  • 哪个网站可以做笔译兼职wordpress加表单
  • 百度站内搜索 wordpress微餐饮建站费用
  • 用什么做网站的访问量统计制作手工作品
  • 微信公众号搭建网站河南卫生基层系统网站建设
  • steam账号注册网站重庆手机版建站系统哪家好
  • 中新生态城建设局门户网站wordpress云盘视频播放
  • 大型网站开发基本流程wordpress记录用户搜索
  • 云服务器安装win系统做网站wordpress边栏扩大尺寸
  • 网站开发面试自我介绍软件下载网站如何建设
  • 可以做翻译任务的网站陕西省建设厅八大员证
  • 昆明 网站推广重庆网页优化seo公司
  • 网站排名下降怎么上去设计一套app页面多少钱
  • 专门用来查找网址的网站查公司名字是否被注册
  • 自己创建网站教程河南省建设厅官方网站李学军
  • 一个网站需要多少容量怎样免费设计网站建设
  • 建设工程交易中心网站12306的网站是哪个公司做的
  • 建设网站经营范围自己给公司做网站
  • 河北省住房建设厅政务网站网络营销推广的岗位职责有哪些
  • 上海网站建设优化价格孝义做网站的公司
  • 哪个公司网站做的最好义乌 网站 制作
  • 百度站长工具综合查询wordpress 上传pdf
  • 旅游短租公寓网站建设深圳龙岗招聘网