C++进阶 —— 容器分类

目录

一,序列式容器

二,关联式容器

三,键值对


        按数据结构可序列式容器、关联式容器;

一,序列式容器

  • 是STL的一类容器,可提供按顺序存储元素,即元素顺序与插入元素顺序相同;
  • 其底层为线性数据结构,不支持快速查找,可支持随机访问;

常见序列式容器

  • vector,类似动态数组容器,可快速尾部插入和删除,支持随机访问(即可通过下标访问);
  • list,一种双向链表,可在任意位置插入或删除,不支持随机访问,只能通过迭代器访问;
  • deque,一种双开口的“连续”空间的数据结构,支持头尾插入和删除,对于大量插入删除操作效率较高;
  • forward_list,一种链表容器,与list不同,只能头部插入和删除,且只支持单向遍历;

二,关联式容器

  • 是STL的一类容器,可看作是键值对<key、value>的集合,其中每个元素都有一个唯一对应的值;
  • 这类容器都提供快速查找、插入、删除元素的操作,且具有较好的时间复杂度;
  • 其底层为树形结构,可快速查找和访问,不支持随机访问;

常见关联式容器

  • map,元素按照键的升序进行排序,其中每个元素都是一个pair对象;
  • multimap,类似map,但允许键重复,键相同按照插入顺序保存;
  • set,元素按照键的升序进行排序,其中每个元素都是键,不允许重复;
  • multiset,类似set,但允许键重复,键相同按照插入顺序保存;

此四种容器的共同点,是使用平衡搜索树(即红黑树)作为底层结构,容器中的元素是一个有序的序列;

三,键值对

  • 用来表示具有一一对应关系的一种结构,该结构中一般只包含两个成员变量key(键值)/value(与key对应的信息),如英汉互译字典;
template <class T1, class T2>
struct 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)
	{}
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值