#include<iostream>
#include<map>
#include"student.h"
using namespace std;
//map<键的类型,值的类型> map名;<>中作为键值对
//同时map中要存放pair类型,然后再将pair插入到map中去 pair<键类型,值类型> pair名(键,值);
//再调用 map名.insert(pair名); 函数进行插入,但注意插入map的键是必须可以进行比较大小的
typedef bool(*fun_cmp)(const student&, const student&);//因为写那个函数作为泛型有点长,我们就直接将其替代为fun_cmp
bool stucmp(const student& s1,const student& s2) //因为student作为键无法直接比较,所以用一个函数指针来作比较
{
return s1.getId() > s2.getId(); //用student类型中的id来作比较
}
int main()
{
map<student, double,fun_cmp> stus(stucmp);//这里要加上泛型和函数指针(which is后者stu的括号中的)
student stu("Sechs", 100);
pair<student, double> p(stu, 100);
//做好pair和map的准备之后就将pair插入map中
stus.insert(p);
//
stus[stu] = 90; //这样使用会直接访问到map stus中的stu,并且是会修改的,且如果没有stu,会自动创建一个stu,对应值0
map<student, double>::iterator it;
for (it = stus.begin(); it != stus.end(); it++)
{
const student& stu = it->first; //对应map的键
double score = it->second; //对应其值
stu.showname();
cout << "score:" << score << endl;
}
}
c++进阶学习笔记--map
于 2022-02-21 14:09:08 首次发布