【C++】容器

在 C++ 中,容器是用来存储和管理一组对象的类模板。标准模板库(STL)提供了多种容器,每种容器都有其特定的用途和特性。容器主要可以分为以下几类:

1. 序列容器(Sequence Containers)

这些容器维护了元素的线性顺序。常见的序列容器包括:

  • std::vector: 动态数组,可以高效地在末尾添加和删除元素,随机访问元素的时间复杂度为常数时间 O(1)
  • std::deque: 双端队列,可以在前后两端高效地添加和删除元素,但随机访问的时间复杂度稍高于 std::vector
  • std::list: 双向链表,支持在任意位置进行高效插入和删除操作,但随机访问的时间复杂度为线性时间 O(n)
  • std::forward_list: 单向链表,支持高效的插入和删除操作,但只支持单向遍历。

2. 关联容器(Associative Containers)

这些容器基于某种排序规则(通常是二叉搜索树),提供高效的元素查找和插入。常见的关联容器包括:

  • std::set: 存储唯一元素,自动排序。
  • std::multiset: 存储多个相同元素,自动排序。
  • std::map: 存储键值对,键唯一,自动排序。
  • std::multimap: 存储多个相同键的键值对,自动排序。

3. 无序关联容器(Unordered Associative Containers)

这些容器基于哈希表实现,提供平均常数时间复杂度 O(1) 的元素查找、插入和删除操作。常见的无序关联容器包括:

  • std::unordered_set: 存储唯一元素,不保证元素顺序。
  • std::unordered_multiset: 存储多个相同元素,不保证元素顺序。
  • std::unordered_map: 存储键值对,键唯一,不保证元素顺序。
  • std::unordered_multimap: 存储多个相同键的键值对,不保证元素顺序。

4. 容器适配器(Container Adapters)

容器适配器提供了对底层容器的特定操作接口。常见的容器适配器包括:

  • std::stack: 基于另一个容器(如 std::deque 或 std::list)实现的栈(后进先出,LIFO)数据结构。
  • std::queue: 基于另一个容器实现的队列(先进先出,FIFO)数据结构。
  • std::priority_queue: 基于一个容器实现的优先队列,提供对元素优先级的管理。

结构关系图: 

容器(Container)

顺序容器(Sequence)

关联容器(Associative  Container)

可逆容器(Reversible Container)

List

Set Multiset

Map Multimap

随机访问容器(Random Container)

Vector

Deque

 关于每个容器的用法将在后续介绍。

(1)std::vector:

http://t.csdnimg.cn/1YUbd

(2)std::deque: 

http://t.csdnimg.cn/aHy8A

(3)std::list:  

http://t.csdnimg.cn/ededJ 

(4)std::forward_list: 

http://t.csdnimg.cn/1FmpH

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

data_structure_wr

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

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

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

打赏作者

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

抵扣说明:

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

余额充值