初识STL

本文介绍了C++的STL标准模板库,包括容器如vector、stack、list、deque、priority_queue和关联式容器set、multiset、map、multimap的特性及应用场景,同时提到了它们在算法中的应用。
摘要由CSDN通过智能技术生成

STL(Standard Template Library)是C++的标准模板库。
STL包含6个部分。

  • 容器(container)
  • 迭代器(iterator)
  • 空间配置器(allocator)
  • 配接器(adapter)
  • 算法(algorithm)
  • 仿函数(functor)

下面主要介绍常用容器和常用算法。

一、容器

STL包括顺序式容器和关联式容器。

1、顺序式容器

顺序式容器包括vector、list、deque、queue、priority_queue、stack等,它们的特点如下:

1.1 vector

动态数组,从末尾能快速插入与删除,直接访问任何元素。
数组是基本的数据结构,有静态数组和动态数组两种类型。在算法竞赛中,编码的惯例是:若空间足够,能用静态数组就用静态数组,而不用指针管理动态数组;如果空间紧张,用vector。

1.2 stack

栈,先进后出。
应用:按位输出数字

1.3 list

双链表,从任何地方快速插入与删除。
应用(结合结构体):C语言读者管理系统

ps: list 和 vector的应用场景不同
(1) vector: 插入和删除少,随机访问元素频繁
(2) list: 插入和删除频繁,随机访问较少

1.4 deque

双向队列,从前面或后面快速插入与删除,直接访问任何元素。
应用:蓝桥杯 算法提高 奥运会开幕式 deque

1.5 priority_queue

优先队列,最高优先级元素总是第一个出列。
应用:BFS(广度优先搜索)、迪杰斯特拉算法

2、关联式容器

关联式容器包括set、multiset、map、multimap等

2.1 set

集合,快速查找,不允许重复值
应用:蓝桥杯 算法提高 P0603 统计不同单词个数

2.2 multiset

在set的基础上允许重复值

2.3 map

一对多映射,基于关键值查找,不允许重复值。实现从键(key)到值(value)的映射。map效率高的原因是它用平衡二叉搜索树来存储和访问。
应用:

2.4 multimap

在map基础上允许重复值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值