每天一个知识:STL数据结构

前言

我准备这个参考大量文献,非常辛苦,渴望你能点一个赞,在点个关注,这对我来说非常重要,我会不定时完善这篇文章,望周知

STL是什么?

标准模板库(Standard Template Library,STL) 是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。虽说它主要出现到C++中,但在被引入C++之前该技术就已经存在了很长时间。STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。

1.栈

栈(stack)是限定仅在表尾进行插入或删除,先进来的数,最后才出,头文件<stack>
stack<type>stk

方法功能
stk.empty()栈是否为空
stk.size()返回栈中元素个数
stk.top()返回栈顶元素
stk.push(x)在栈顶加入一个元素
stk.pop()删除栈顶元素(至少有一个元素)

2.队列

队列(queue)是限定在队头进行删除,在后端进行插入,需打开头文件<queue>
queue<type>q

方法功能
q.empty()返回队列是否为空
q.size()返回队列中元素个数
q.front()返回队列队头元素
q.back()返回队列队尾元素
q.push(x)在队尾一个元素
q.pop()删除队头元素(至少有一个元素)

3.链表

链表(list)是支持任何位置插入元素,就像一个链表一样,一个元素只告诉你的上链和下链是谁,这样,删除、插入只波动2个元素,大大增加代码效率,需要打开头文件<list>
list<type>lst

方法功能
lst.empty()返回链表是否为空
lst.size()返回链表中元素个数,复杂度 O ( n ) O(n) O(n)
lst.front()返回链表第一个元素
lst.back()返回链表最后一个元素
lst.clear()擦除所有元素
lst.insert(position,value)在position迭代器前插入元素
lst.erase(position)在position迭代器前删除元素
lst.push_back(x)在链表最后插入一个元素
lst.push_front(x)在链表首段插入一个元素
lst.pop_back()删除链表最后元素(至少有一个元素)
lst.pop_front()删除链表首段元素(同上)
lst.resize(count)更改链表大小

4.向量

向量(vector),又被称为可变长数组,是一个封装了动态大小数组的顺序容器(sequence container),用时需打开头文件<vector>
vector<type>v

方法功能
v.empty()返回向量是否为空
v.size()返回向量中元素个数
v.front()返回向量第一个元素
v.back()返回向量最后一个元素
v.clear()擦除所有元素
v.insert(position,value)在position迭代器前插入元素
v.insert(position,n,x)在position前插入 n n n x x x
v.inset(position,first,end)在position前插入同等向量
v.erase(position)在position迭代器指向删除元素
v.erase(first,last)在下标为first一直删到end-1
v.push_back(x)在向量最后插入一个元素
v.pop_back()删除最后元素(至少有一个元素)
v.max_size()返回最大可允许的元素范围
v.at(pos)返回pos位置元素的引用
v.begin()让指针指向头元素
v.end()让指针指向最后,而并非元素
v.rbegin()让指针反向迭代,指向最后一个元素
v.rend()同上,指向第一个元素

键值对

键值对(pair),相当于一个小型struct结构体用时需打开头文件<pair>
pair<type,type>p

映射

映射(map),相当于一个键值对数组,能存下多个键值对,访问时可以

mp[type1,type2]=xxx

用时需打开头文件<map>
map<type1,type2>mp

集合

集合(set)是一个可以去重,自动排列的数据结构,用时需打开头文件<set>

set<int>st;

优先队列

优先队列(priority_queue)可以自动排列队列,用时需打开头文件<queue>

priority_queue<type>pq;

指针

STL中的指针是用来当做“下标”的东西,用法如下

类型<type>::iterator it;

有时遍历忘记iterator怎么拼了,可以用autoauto是通过数据判断是什么类型。

后记

如果有遗漏的,请在评论区留言!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值