目录
简介
map是关联容器之一,存储的都是 pair 对象(键值对)。其中,各个键值对的键和值可以是任意数据类型,包括C++基本数据类型(char、int、double 等)、自定义的结构体或类,键的值既不能重复也不能被修改。
有映射的功能,采用红黑树,自动按照键值排序。默认情况下,map 容器选用std::less<T>
排序规则(其中 T 表示键的数据类型),根据键的大小对所有键值对做升序排序。当然,根据实际情况的需要,我们可以手动指定map容器的排序规则,既可以选用STL标准库中提供的其它排序规则(比如std::greater<T>
),也可以自定义排序规则。
map可以根据下标访问等,接下来用一个程序将这些函数串起来进行展示。
代码
/*
Author:YuBo
Date:2018/2/6
map
*/
#include<iostream>
#include<string>
#include<map>
using namespace std;
map<string, float> m;
map<string, float>::iterator it;
map<string, float>::reverse_iterator rit;
void menu()
{
cout << "******1.插入 2.删除******" << endl;
cout << "******3.查找 4.显示******" << endl;
cout << "******5.退出******" << endl;
}
void Insert()
{
int i, n; string s; float f;
cout << "请输入同学人数:" << endl;
cin >> n;
cout << "请依次输入" << n << "位同学的姓名及成绩:" << endl;
for (i = 0; i<n; i++)
{
cin >> s >> f;
m[s] = f;
}
}
void Delete()
{
int i, place, flag;
string ss;
cout << "******1.删除某个同学信息 2.删除某位置的同学信息******" << endl;
cout << "******3.全部删除 ******" << endl;
cin >> i;
switch (i)
{
case 1: {
cout << "请输入该同学的名字:" << endl;
cin >> ss;
flag = m.erase(ss);
if (flag == 0)cout << "没有这位同学,删除