关联式结构和键值对map and set
关联式结构setmap
关联式结构和键值对 map and set 关联式结构1.关联式结构:也是用来存储数据的,但是与序列式结构不同的是,关联式结构存储的是键值对结构在数据检索时比序列式容器的效率更高。
2.
①:键值对:用来表示一种具有一一对应的关系一种结构,这个结构一般有两个类型,分别为
②:在底层,键值对用pair来表示:其内部的实现结构如下代码:
templatestruct pair { typedef T1 first_type; typedef T2 second_type; T1 first; T2 second; pair(): first(T1()), second(T2()) {} pair(const T1& a, const T2& b): first(a), second(b) {} };
3.树形结构的关联式容器:map,set,multimap,multiset.
其中他们的共同点是:底层的实现都是用红黑树来实现的。
其中mulitmap和mulitset操作方式与map和set相同,但是不同的是mulitmap和mulitset中可以存储重复元素。
1.介绍:
按照一定次序存储数据的容器。在set中,元素value也就是key,比较的顺序也是按照value来比较的,并且value插入后就不能修改,但是可以进行删除。在set容器内部,是按照升序排序排序的。set容器通过访问key的数据的速度比unordered_set的速度慢,但是它可以按照顺序对数据进行直接迭代。set的底层是通过红黑树实现的。
注意:
set与map/multimap,不同,set中存储的时候只需存储value就可以了,但是其底层的存储结构是 2.set的使用: ②:set函数的使用: 2.set的迭代器: 3.set的容量: 4.set的修改: 1.介绍: map是关联式容器,是按照特等次序(经过key的比较),来存储 2.map的使用 ②:map函数的接口: 2.迭代器: 其中还用const类型的迭代器,就是在上述的接口前面加上c即可。 上述重载[]使用的时候需要注意的是,如果寻找的下标的数不在map中,那么map就会创建以一个这样的数插入map中。 5.总结: 其中:对于set和map注意的是,如果想要进行降序排序,只需在其类型后面加上降序的函数即可,例子如下:
①:set的参数模板:template
1.set的构造:set (const Compare& comp = Compare(), const Allocator &= Allocator() );//构造空的set
set (InputIterator first, InputIterator last, const Compare&
comp = Compare(), const Allocator& = Allocator() );//使用迭代器来构造set其中,构造的是区间[frist,end)中的数据。
set ( const set
begin() //容器首元素的位置
end() //容器末尾元素的位置
rbegin() //容器末尾元素的位置
rend() //容器首元素的位
//其中rbegin()和rend()的迭代器与正向迭代器相反。
bool empty () const//检测set是否为空,空返回true,否则返回true
size_type size() const //返回set中有效元素的个数
pair
map
①:map的参数:
在底层map的所需要的类为:template
1.构造:map() //构造一个空的map
map(const map& x);//拷贝构造一个与x相同的map
map(const value_type *first, const value_type *last,
const Pred& comp = Pred(),const A& al = A());//通过迭代器构造
begin() //容器首元素的位置
end() //容器末尾元素的位置
rbegin() //容器末尾元素的位置
rend() //容器首元素的位
//其中rbegin()和rend()的迭代器与正向迭代器相反。
3.容量与元素的访问:bool empty ( ) const//检测map是否为空,如果为空返回true否则返回false
size_type size() const//返回map中的有效数量,意思为只返回存储数据的节点数量
mapped_type& operator[] (const key_type& k)//map中重载了[],可以根据下表去访问map中的元素。
4.元素的修改:pair
map中的元素是键值对。map中的key是唯一的并且不能修改(由于底层是红黑树结构,如果修改那么就会破坏红黑树的性质,但是可以删除)默认是按照升序的方式排序的。如果使用迭代器对map中的元素进行迭代,那么就会得到一个有序的数据底层实现为红黑树,查询效率高(log2(N))。支持[]操作符,可以进行插入查找。
set



