常用的C++标准模板库(STL)用途简单总结(算法笔记)

一、vector的常见用途

vector即向量,可以理解为变长数组。常见用途:

1.      储存数据

(1)对于长度不确定的数组可以使用vector,节省空间。

(2)对于输出格式有严格限制的,可以用vector记录并输出。如:将数据在一行输出,每个数据中间用空格隔开,且最后一个数据没有多余的空格。

2.      用邻接表存储图

对于指针不太熟悉的开发者,使用vector实现邻接表比较方便。

二、set的常见用途

set即集合,是一个内部自动有序且不含重复元素的容器(set内部使用红黑树实现),因此碰到需要去重但是不方便开数组的情况下可以使用set解决。

注意:

(1)set中元素是唯一的,若是处理不唯一的情况,可以使用multiset。

(2)C++ 11标准中增加了unorder_set(内部使用散列实现),可以实现只去重不排序的功能(速度比set快的多)。

三、string的常见用途

这个不用介绍了,大家都明白。使用string要添加string头文件,即#include<string>,并加上 “using namespace std ;”。

要注意的是:string和string.h/cstring是不同的头文件。string.h(string.h和cstring是一个东西)头文件,是C版本的头文件,其中包含strcpy、strcat等字符串处理函数。但是string头文件,是C++标准定义的头文件,其中包含operator+=、compareoperator、length()/size()、insert()、erase()等函数。

四、map的常见用途

map即映射,map可以将任意基本类型映射到任意基本类型(包括STL容器)。常见用途:

(1)使用map把字符/字符串与整数映射。

(2)判断大整数或其他类型数据是否存在,把map当bool数组用。

(3)字符串与字符串之间的映射。

注意:map的键和值是唯一的,若是一个键对应多个值的情况,只能用multimap。C++11标准中还增加了unorder_map,使用散列代替map内部的红黑树实现,可以实现只映射不按key排序的功能(速度比map快的多)。

五、queue的常见用途

queue即队列,是实现先进先出的容器。广度优先搜索时用queue。注意:STL中还有双端队列(deque)和优先队列(priority_queue)。双端队列即插入和删除均可在两端进行的队列。优先队列内部使用堆实现,可以用来解决贪心问题。

六、stack的常见用途

stack即栈,是实现后进先出的容器,用来模拟实现递归。

七、pair的常见用途

想要将两个元素绑在一起合成一个元素,而又不想定义结构体时使用pair(即可以代替二元结构体及其构造函数)。还可以作为map的键值对,进行插入。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值