STL容器

本文介绍了C++STL中的几种重要容器,包括Vector的初始化和操作,Pair的使用,String的方法,以及Queue,Priority_Queue,Stack,Deque的基本操作。同时,还涵盖了Set,Map,Multiset,Multimap以及unordered系列容器的特性,最后提到了Bitset在位操作中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Vector-变长数组

初始化

vector<int>a[n];
vector<int>a(10,3);  //长度为十,每个数字为三

操作

a.size()  //返回元素个数,时间复杂度为o(1)
a.empty()//是否为空
a.clear()  //清空
front()  //返回vector第一个数
back()    //返回vector最后一个数
push_back()//最后插入一个数
pop_back()  //最后一个数删掉

遍历

1.for(int i=0;i<a.size();i++)  cout<<a[i]<<" ";
2.for(vector<int>::iterator  /(auto)    i=a.begin();i!=a.end();i++)  cout<<*i<<" ";
3.for(auto x:a) cout<<x<<' ';

支持比较运算,按字典序

pair

初始化

pair<int,int> p;
p=make_pair(10,"yyy");
p={20,"aaa"};

pair<int,pair<int,int>>p;

支持比较运算,按字典序,以first为第一关键字

string

字符串
substr() 返回某一个字串
c_str()
empty()
size()/ength()返回字符串长度
clear()

string a="yxc"
a+="def"
a+='c'
cout<<a<<endl;
cout<<a.substr(1,2)<<endl;//c从下标一开始,输出两个  ----xc  
printf("%S\n",a.c_str() ); //

queue

size()
empty()
push() 队尾插入一个元素
front()返回队头元素
back() 返回队尾元素
pop()弹出队头元素
清空
q=queue<int>();

priority_queue(堆)

优先队列

定义默认是大根堆
priority_queue<int> heap;
定义小根堆
priority_queue<int,vector<int>,greater<int> > heap;

push()插入一个元素
top()返回堆顶元素
pop()弹出堆顶元素

stack

size()
empty()
push()向栈顶插入一个元素
top()返回栈顶元素
pop()弹出栈顶元素

deque双端队列

速度慢
size()
empty()
clear()
front()
back()
push_back()/pop_back()
push_front()/pop_front()
begin()/end()
队头队尾都可插入删除

set multiset

基于平衡二叉树(红黑树),动态维护有序序列

multisetMS;
可以有重复元素
setS;
不能有重复元素

set
insert() 插入一个数
find()查找一个数
count() 返回一个数的个数
erase() 输入是一个数x,删除所有x  o(k+logn)
        输入是一个迭代器,删除这个迭代器
lower_bound(x)返回大于等于x的最小的数的迭代器
upper_bound(x)返回大于x的最小的数的迭代器
size()
empty()
clear()

map multimap

insert() 插入的是一个pair
erase() 输入的参数是pair或迭代器
find()  
lower_bound(x)返回大于等于x的最小的数的迭代器
upper_bound(x)返回大于x的最小的数的迭代器
size()
empty()
clear()

unordered_set,unordered_map,unordered_multiset,unordered_multimap

基于哈希表
增删改查时间复杂度o(1)
不支持lower_bound(x) ,upper_bound(x) (基于排序的操作)
不支持迭代器的++,–

bitset

压位
省八倍空间
bitset<1000>s; //个数
与,或,异或
<<,>> 移位操作
==,!=
[ ]
count() 返回多少个一
any/none() 判断是否至少有一个一 / 判断是否全为0 true/false
set() 所有位置一
set(k,v) 把第k位变成v

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值