这篇文章是在做一道ccf题的时候起意写的,也是为了方便自己以后回顾叭。包含一些map的常用简单操作。
一、插入
在使用map时,插入有3种方法。
- 用insert函数插入pair。
- 用insert函数插入value_type数据。
- 用array数组方式插入。
map<int,string> student;
//1
student.insert(pair<int,string>(000,"student0");
//2
student.insert(map<int,string>::value_type(001,"student1");
//3
student[12] = "student12";
这三种方法第一种和第二种效果是一样的,不能违背map的唯一性,也就是如果原本map容器种存在该key值,那么插入失败。但是第三种可以插入覆盖原值。
二、删除
map容器种和删除相关的函数有erase、clear、empty等。
- empty
用来判断map容器是否为空。函数返回值为bool型,返回true说明是空map,反之则表示map中有元素。 - clear
用来清空map容器。 - erase
erase函数用来删除指定元素,map中写了三种erase函数方便我们使用。
1、迭代器删除
2、用关键字删除
3、范围删除
//迭代器刪除
iter = student.find("student0");
student.erase(iter);
//用关键字刪除
int n = student.erase("student1");//如果刪除了會返回1,否則返回0
//用迭代器范围刪除 : 把整个map清空
student.erase(student.begin(), student.end());
//等同于student.clear()
三、查询
map容器中提供对关键字进行查询,也就是find函数。
find函数如果找到就返回指向该关键字的迭代器,如果找不到就返回指向end的迭代器。
iter = student.find("student0");
if(iter!=student.end()){
cout<<"student0 is at"<<iter->second<<endl;
}
else{
cout<<"Didn't find student0"<<endl;
}
四、排序
排序这部分涉及的内容很多,要详细写可以再单独写一篇文了hh,想要详细了解的伙伴们可以看下文附带的链接,这里只是简单写一下。
map为实现快速排序,内部本身就是按照key值有序排列的(红黑树),所以我们插入键值对时会自动按照key值顺序存储,这也是作为键值key的类型必须要能够进行<运算的原因。
map里面对key值的两种排序方法都提供了(升/降序),一般默认是使用less(升序),你也可以指定第三个参数为为greater(降序)。
map<string,int,greater<string>> student; //在定义时声明
来源:CSDN
作者:糖葫芦糖
链接:https://blog.csdn.net/qq_41296389/article/details/104146432