【STL】关联容器的分类

14 篇文章 0 订阅

14天阅读挑战赛

前言

由于本文涉及内容比较多,为了尽可能的讲详细些,会把各种例子附上,所以代码样例会比较多,也为了更好的布局,本系列将分开讲解,并且前期为了更加贴合实战需求,暂时只对一些常用的STL容器和基本功能进行讲解。

为了使每篇文章具有一定的独立性,后续的文章大多数会将之前文章涉及的知识点中提取,并且在后续会将相应的例子补上。

本文STL系列知识参考《C++语言程序涉及(第5版)》

STL指南

关联容器的分类

关联容器的键之间必须能过够使用"<"进行比较,对于int,double这些类型,c++有内置的比较运算符,而对于类类型,需要重载“<”运算符

关联容器除了无序容器外都会自动对键进行排序

顺序容器最坏情况下需要进行n次比较后才可找到
而关联容器使用“平衡二叉树”结构,在最坏情况下查找元素大约需要lgn次比较即可查到

关联容器分为单重关联容器和多重关联容器

单重关联容器

单重关联容器中的键值是唯一的,不允许重复,集合(set)映射(map)就是单重关联容器

多重关联容器

多重关联容器中,相同的键值允许重复出现,多重集合(multiset)多重映射(multimap)就是这一类

简单关联容器

以元素本身作为键,集合(set)多重集合(multiset)属于这一类

二元关联容器

元素由键和某种类型的附加数据共同构成,键只是元素的一部分
映射(map)多重映射(multimap)属于这一类

关系表

简单关联容器二元关联容器
单重关联容器集合(set)映射(map)
多重关联容器多重集合(multiset)多重映射(multimap)

二元组(pair)

二元关联容器的元素是由键类型和附加数据类型的组合,这种组合可以是用一个二元组(pair)来表示,pair是<utility>头文件总定义的结构体模板(如下)

template<class T1,class T2>
struct pair{
	//成员均为public
	T1 first;
	T2 second;
	pair();//默认构造函数
	pair(const T1 &x,const T2 &y);//构造first=x,second=y的二元组
	template<class U,class V>pair(const pair<U,V>&p);//复制构造函数
}

例如
map<int,double>的元素类型是pair<int,double>
multimap<string,int>的是pair<string,int>
pair类型对象构造支持列表初始化:

pair<string,int>str_int_pair={"first",2};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LenckCuak

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值