set与map(我用的是VS2013)
一.首先 介绍一下容器的概念:
容器用来存储数据的,数据可以是用户自定义类型(对象),也可以是预定义类型。c++中的容器主要vector,list(顺序容器) 这些都是已经封装好了的,包含头文件"vector","list",通过迭代器iterator访问容器中的据,map,set(关联容器),关联容器map键值对形式出现key,value,key唯一,mutimap多映射可以不唯一;set是一个单一值的集合eg:1,2,3,4(set多用于查找key,map多用于通过key找value)。如下图:
二.简述pair
首先pair是一个模板类,pair模板类的简单实现如下:(在set,map中运用甚广)
可以说pair模板的作用是将两个数据组合为一个数据;这样在set与map中就得到了灵活的运用。
三.set (K)
set包含在#include<set>头文件中
1. set容器的特点及一些用法:
(1)set底层原理为红黑树
(2)set打印出的数据为(以中序)有序数据(默认为升序)(注:字符型数据以ASCLL码为准)
(3)set中当插入重复数据时当打印出来只出现一次(防冗余,过滤)
(4)const_iterator 的迭代器可const set<int> 的对象成员函数;
(5)set还可以用来排序(把一组数据插入到set容器中,利用set自身的特点打印出来就是有序的(默认升序,也可以为降序))
(6)pair在set中的应用:
(7)erase的运用:
2.set的应用
(1)检查一个单词拼写对错
(2)过滤(爬虫)
3.set的效率
由于set底层是由红黑树实现的所以效率为lg(n);
三.map(K,V)
map包含在#include<map>头文件中
1. map容器的特点及一些用法:
(1)map与set的构造有所不同map的模板有两个参数<K,V>(key,value);
2.map的应用:
(1)可以使用map统计一个数组里面的单词出现的个数
(2) (在一的基础上)可以找出出现次数最多的前n个
该功能可以用sort、堆、优先级队列(底层也为堆实现的)实现
3.map的效率
由于map底层也是由红黑树实现的所以效率为lg(n);