C++ STL 常用方法(函数)之-map篇

来源:互联网 发布:中国移动宽带网络测速 编辑:程序博客网 时间:2024/04/28 17:03

#include<map>
using namespace std;
map<char,int>M; 


① M.size(); 

返回容器中元素个数


②M.count(char C);

来判定关键字是否出现,无法定位数据出现位置,由于map的特性(无重复键值),就决定了count函数的返回值只有两个,不存在返回0,存在返回1。


③M.find(char C);

来定位数据出现位置,它返回的一个迭代器,当数据出现时,它返回数据所在位置的迭代器,如果map中没有要查找的数据,它返回的迭代器等于M.end()函数返回的迭代器。


④M.clear();

清空map中的数据。


⑤M.empty();

判定map中是否有数据,它返回true则空。 


⑥M.erase();有三个重载函数

M.erase(const key_type&__x)删除等于某个键值的元素

M.erase(iterator __first,iterator __last)删除一个迭代区间上的所有元素

M.erase(iterator __positation)删除某个迭代器位置上的元素


另:

将元素插入到map(红黑树)中的时候,map会根据设定的比较函数将该元素放到相应的节点上去。

在定义map的时候如果没有指定比较函数,那采用默认的比较函数,即按键值由小到大的顺序插入元素。

而对于非默认排序需要自己编写比较函数

(1) 如果元素不是结构体 

struct myComp{bool operator()(const int &a, const int &b){return a>b;// 按键值从大到小排序}};


(2) 如果元素是结构体 那么 可直接把比较函数写在结构体内

struct node{string name;int score;bool operator()(const node &a)const{return a.score<a.score    }};




0 0