STL之map笔记

今天用了用map现在来总结一下。

map

Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字(key),每个关键字只能在map中出现一次,第二个可能称为该关键字的值(value))的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一 种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序且不重复的。

map的创建

map<int,int> m;

前一个int是key的种类,后一个是value的种类,不一定非要是 int,其他的数据类型都可以,甚至是自定义类型。

map常用接口

查找函数

//返回键值等于 key 的元素个数
m.count(key)
 
//返回键值等于 key 的第一个元素,找不到就返回 end(),注意该函数返回的是map的迭代器
m.find(key)
 
//返回 键值 >= key 的第一个元素位置
m.lower_bound(key)
 
//返回 键值 >= key 的第一个元素位置
m.upper_bound(key)
 
//返回 键值 == key 的元素区间
m.equal_range(key)

迭代器

 map<int, string>::iterator iter; 

我们这样定义一个map 的迭代器

iter->first返回当前元素的key

iter->second返回当前元素的value

插入操作

插入介绍两种,做题用的都是第一种。

m[key]=value


m.insert(map<int, int> :: value_type(key, value))

要注意的是 第一种方法过程是先在m中查找主键为key的项,没发现,然后将一个新的对象插入m中,键是key,值是一个缺省值。插入完成后,将值赋为value;所以可以不用判断是否存在。直接用。

删除操作

移除某个map中某个条目用erase()

该成员方法的定义如下

  • iterator erase(iterator it); //通过一个条目对象删除
  • iterator erase(iterator first, iterator last);        //删除一个范围
  • size_type erase(const Key& key); //通过关键字删除

clear()就相当于 enumMap.erase(enumMap.begin(), enumMap.end());

此处加一个面试问过问题,map的查找的时间复杂度是O(\log n)

以后在继续写吧。。先继续肝ddl了

 

猜你喜欢

转载自blog.csdn.net/qq_37702890/article/details/83476311