实验目的: 1.了解map的实现原理 2.熟练掌握map的基本操作 实验器材: C++ 实验内容: 按照部门名称对职工进行查找 实验步骤: #include<iostream> #include<map> using namespace std; //按照部门查询人员信息 /* 人事部 张三 20 销售部 李四 22 人事部 王五 23 销售部 赵六 25 销售部 钱七 26 输出: 销售部 李四 22 赵六 25 钱七 26 */ class Person { string name; int age; public: Person(string n,int a){name=n;age=a;} void show(){cout<<name<<" "<<age<<endl;} }; class Manage { multimap<string,Person> m; public: Manage(pair<string,Person> *fir,pair<string,Person> *las) :m(fir,las){} void disp() { multimap<string,Person>::iterator i=m.begin(); for(;i!=m.end();i++) { cout<<(*i).first<<" "; (*i).second.show(); } } void select(string bumen) { /*1、容器遍历 2、equal_range 3、find+count */ pair<multimap<string,Person>::iterator, multimap<string,Person>::iterator> p; p=m.equal_range(bumen);//返回值是pair multimap<string,Person>::iterator Beg=p.first,End=p.second; cout<<(*Beg).first<<endl; for(;Beg!=End;Beg++) { cout<<" "; (*Beg).second.show(); } } }; int main() { Person p1("张三",20),p2("李四",22),p3("王五",24),p4("赵六",23),p5("钱七",25); pair<string,Person> p[]={make_pair("人事部",p1), make_pair("销售部",p2), make_pair("人事部",p3), make_pair("销售部",p4), make_pair("销售部",p5)}; Manage mg(p,p+5); mg.disp(); cout<<endl; mg.select("销售部"); return 0; } |
实验结果(附数据和图表): 实验结果分析及结论: 实验成功,成功给multimap容器赋值,并且用equal_range函数查询出了销售部的员工信息。 要注意equal_range函数的返回值是pair,map容器本身也是pair。 实验心得体会和建议: 映射 map(一对一)、multimap(一对多),由pair构成的红黑树(key)同时通过pair访问元素。map默认生序排列,原因采用了less<T>排序 [key]:返回值是value,当key存在,输出对应的value,key不存在,输出对应数据类型的默认值,并且自动添加到容器中 |
实验评价及结论: 实验指导老师签字: 年 月 日 |
C++STL实验之map容器的应用
最新推荐文章于 2024-06-09 20:18:37 发布