STL常用容器

string

string类可以直接用来比较大小

str.size(),length()         字符串的长度

str.insert(pos,string)   在pos号位置插入字符串string

str.erase()    有两种用法:删除单个元素、删除一个区间内的所有元素,时间复杂度均为O(N)

str.erase(pos,length),其中pos为需要开始删除的起始位置,length为删除的字符个数

str.substr(pos,len),返回从pos号位置开始、长度为len的子串,时间复杂度为O(len) 

str.find(str2),当str2是str的子串时,返回其在str中第一次出现的位置;如果str2不是str的子串,那么返回string::npos

str.replace(pos,len,str2),把str从pos号位置开始,长度为len的子串替换为str2

vector

v.size()     表长度

v.begin()        返回第一个元素的迭代器

v.end()        返回最后一个元素的迭代器

v.empty()        判断是否为空

v.push_back()        在尾部插入元素;

v.pop_back()        弹出尾部元素

v.front()        返回第一个元素

v.back()        返回最后一个元素

v.insert()        插入一个或多个元素

v1.swap(v2)        交换两个容器的所有元素

deque(双端队列)

empty(); //判断容器是否为空

size(); //返回容器中的元素的个数

push_back(x);  //在容器尾部添加数据

push_front(x);  //在容器头部插入一个数据

pop_back();  //删除容器最后一个数据

pop_front();  //删除容器第一个数据

front(); //返回容器中第一个元素

back(); //返回容器中最后一个元素

resize(num,x); //重新指定容器的长度为num,若容器变长,则以x值填充新位置。
              //如果容器变短,则末尾超出容器长度的元素被删除。
sort(deque.begin(),deque.end()) //将deque容器排序

list

头文件:#include<list>


list<int> l; //创建一个int型链表

empty();//判断是否为空

size(); //获取链表大小

push_front() //在容器头部插入数据

push_back() //在容器尾部插入数据

pop_front() //删除容器头部元素

pop_back() //删除容器尾部元素

erase(l1.begin());     //删除第一个元素

erase(l1.begin(),l1.begin()+4); //删除前4个元素

insert(li.begin(),x);     //在链表最前端插入数据x

insert(li.begin(),n,x);   //在链表最前端插入n个数据内容为x

l.sort();   //对链表l进行升序排序

stack

#include <stack> 

size() //栈的大小

empty() //是否为空

push(x) //在栈头插入元素x

pop() //移除栈顶元素
 
top() //获取栈顶元素

queue

#include<queue>

size(); //队列中元素个数

empty(); //判断是否为空

push(); //在队列尾部添加元素

pop(); //移除队列的第一个元素

front(); //返回队列的第一个元素

back(); //返回队列的最后一个元素

priority-queue

priority_queue 即优先级队列,是一种容器适配器,最大元素放在第一个。

底层用堆实现,默认是大堆,因为默认大的优先级高,可随时插入元素,可快速查找最大元素,即优先级队列中第一个元素。

empty( )://检测容器是否为空

size( )://返回容器中有效元素个数

push_back( )://在容器尾部插入元素

pop_back( )://删除容器尾部元素

top(); //返回队列头部元素 优先队列只能通过top()访问队首元素(优先级最高的元素)

没有clear

set

一个内部自动有序而且不重复元素的容器。

set只能通过迭代器iterator访问;

for (auto it = s1.begin(); it != s1.end(); ++it)
{
		cout << *it << " "; 
}

insert(x)://将x插入set容器中,并且自动递增排序和去重。时间复杂度为O(logN)

erase(x)://删除单个元素,时间复杂度为O(logN)

clear()://用来清空set所有元素,时间复杂度为O(N)

find(value):查找值为value的元素,返回它的迭代器

size(); //容器大小

count(val); //val在集合出现的次数

empty(); //判断是否为空

s1.swap(s2);//容器s1,s2互相交换 

multiset——排序但是不去重

map

begin();//返回指向容器中第一个(注意,是已排好序的第一个)键值对的双向迭代器

end();//返回指向容器的最后一个元素(注意,是已排好序的最后一个)所在位置后一个位置的双向迭代器

find(key);//在map容器中查找键为key的键值对,如果成功找到,则返回指向该键值对的双向迭代器

lower_bound(key);//返回一个指向当前map容器中第一个大于或等于key的键值对的双向迭代器

upper_bound(key); //返回一个指向当前map容器中第一个大于key的键值对的迭代器

empty(); //判断是否为空

insert();//向map容器中插入键值对

erase();//删除map容器指定位置、指定键(key)值或者指定区域内的键值对

swap();//交换2个map容器中存储的键值对,这意味着,操作的2个键值对的类型必须相同

count(key); //在当前map容器中,查找键为key的键值对的个数并返回

multimap

与map的不同之处:

1:每个键对应的值不能够修改。

2:multimap容器中可以同时存储多个键相同的键值对。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值