常用STL

一、栈(stack)

栈(stack)是一种先进后出的数据结构,只能从栈顶操作,插入或删除元素。

c++中的栈stl在stack头文件中。

#include<stack>

 声明方法如下:

stack<int>st;

常用函数包括:

st.push(x)//插入元素x
st.pop()//从栈顶弹出元素
st.size()//返回栈元素个数
st.empty()//返回栈是否为空,空返回1
st.top()//返回栈顶元素

 时间复杂度为O(1) 

 

二、队列(queue)

队列是一种先进先出的数据结构,从队尾插入元素,从队头取出元素

c++中的队列stl在queue头文件中。

#include<queue>

声明方法如下:

queue<int>q;

常用函数包括:

q.push(x)//从队尾插入元素
q.pop()//从队头弹出元素
q.front()//返回队头元素
q.size()//返回队列元素个数
q.empty()//返回队列是否为空

除push和pop为O(log n)外,其余时间复杂度为O(1)

 三、映射(map)

map是一种有序的数据结构。它是一个键值对。

map的头文件是<map>

#include<map>

声明方法如下:

map<char,int>mp;

一个map类型的数据有两个部分,分别为键和值。可以用类似于数组访问的方法存储键值对。比如上面char类型到int类型的mp,可以通过mp['c']=1;的方法把‘c'和1这个键值对存储进mp里。

迭代器

map是通过迭代器顺序访问的。创建迭代器方法如下:

map<char,int>::iterator it;

以下是通过迭代器和for循环顺序访问mp的代码:

for(map<char,int>::iterator it=mp.begin();it!=mp.end();it++)

此时可以通过it->first访问键,it->second访问值。

map中的顺序是有序的,根据键从小到大排列,没有两个键相同的键值对。

map中的常用函数如下:

mp.begin()//返回指向mp头部的迭代器
mp.end()//返回指向mp尾部的迭代器
mp.find(x)//查询元素x出现的位置
mp.count(x)//查询元素x出现的次数
mp.clear()//清空mp

unordered_map

这种map是无序的map,使用方法类似于map。存在于头文件<unordered_map>中。

unordered_map底层逻辑为哈希表,所以较为省时,所有命令时间复杂度趋近于O(1)。

multimap

这种map是一键对多值的map,存在于头文件<map>中。

这两种map都通过迭代器访问

四、集合(set)

集合是一种有序去重的数据结构。存在于头文件<set>中。

声明方法如下:

set<int>s;

在这个数据结构中,不会出现两个相同的元素。元素都会自动排好序。例如输入

1,3,5,2,4,4,2,3

这几个元素,进入某个set后,通过迭代器遍历,输出为

1,2,3,4,5 

set常用函数有:

s.insert(x)//插入元素x
s.eraase(x)//删除元素x
s.clear()//清除s

 set迭代器创建方法与map类似

unordered_set

这种set无序且去重。即,不会排序,但不会出现两个相同元素。例如输入

1,3,5,2,4,4,2,3

时,将其存入set中,再遍历输出会得到

1,3,5,2,4 

multiset

这种set有序但不去重。即,会自动排序,但也会出现两个相同的元素。例如输入

1,3,5,2,4,4,2,3

时,将其存入set中,再遍历输出会得到 

1,2,2,3,3,4,4,5

 

unordered_set与multiset和set的关系,与unordered_map与multimap和map的关系类似

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值