stl

string
头文件 #include
直接支持流式读写 cin cout
定义
string s;

赋值
string s(“123”);
string s(5,‘a’); “aaaaa”
string s(“123456”,3); “123”
string s(“123456”,2,4); “3456”
可以像整数一样“相加”(末尾添加)
s.append(“456”);
s+=“456”;
末尾添加字符
s.push_back(‘4’);

迭代器
<迭代器名称>string::iterator it;
首位置 s.begin();
cout<<(*it)<<endl;
it++;
it=s.end();末尾后一位 ( 左闭右开)
遍历
for(it=s.begin();it!=s.end();it++) auto it=s.begin();
for(int i=0;i<s.length();i++){
cout<<i<<": "<<s[i]<<endl;
}
初始化 s.clear();
int p=s.find(“123”);
找目标字符位置{
string s2(“111123451”);
int p=-1;
while(s2.find(“1”,p+1)!=-1){
p=s2.find(“1”,p+1);
cout<<p<<endl;
}}
删除
s.erase(s.begin());
s.erase(s.begin(),s.begin()+3);

vector 动态数组(不定长数组) 内存连续
vector<数据类型>a;
vector<vector<数据类型>>a;(二维数组)
vectorv2(2);
vectorv3({1,2,3,4,5});
vectorv4(v3);
大小 v.size();
改变大小 v.resize();
删除最后一个元素v.pop_back()
下标访问v[i];
尾部添加v.push_back(7);
v.empty();true / false;
首v.front() 尾v.back();
v.begin(); v.end();
for(int(类型) x:v)
{
cout<<x<<endl;
}

queue 队列 ,先进先出(FIFO)
queuequ;
添加qu.push(1);
删qu.pop();
不支持下标
出队
while(qu.size()){
cout<<qu.front()<<endl;
qu.pop();
}

stack 栈,先进后出(FILO)
stackst;
st.push(1);
while(st.size()){
cout<<st.top()<<endl;
st.pop();
}

set 集合,元素有序排列,不重复
setse;
常用函数insert() erase() find() size() clear() count()
lower_bound(x):大于等于x的第一个元素位置,不存在返回end()
upper_bound(x):大于x的第一个元素的位置,不存在返回end()
erase()指向下一个:(删除奇数)
for(auto it=se.begin();it!=se.end()😉
{
if((*it)%2==1)
it=se.erase(it);
else
it++;
}

map
字典,映射,key-value键值对,按key有序排列
map<类型,类型>mp;
常用函数 erase() find() size() clear() count()
lower_bound() upper_bound()
可通过下标访问
for(auto it=mp.begin();it!=mp.end();it++){
cout<<(it->first)<<" "<<(it->second)<<endl;
}

list
双向链表,内存不连续
listli;
常用函数 push_back() push_front() pop_back() pop_front() insert() erase()
不支持随机访问

sort排序 #include
for(int i=1;i<=n;i++)
{
x[i]=rand()%100+1;
}
sort(x+1,x+1+n);

sort(x+1,x+1+n,cmp);
bool cmp(int a,int b)
{
return a>b;
}

sort(x+1,x+1+n,[](int a,int b)
{
if(a%2==b%2)return a<b;
return a%2>b%2;
});

struct node{
int a;
string s;
}a[MAXN];
bool cmp(node a,node b)
{
if(a.a!=b.a)return a.a<b.a;
return a.s<b.s;
}
sort(a+1,a+1+n,cmp);

struct node{
int a;
string s;
bool friend operator<(node a,node b)
{
if(a.a!=b.a)return a.a<b.a;
return a.s<b.s;
}
}a[MAXN];
bool cmp(node a,node b)
{
if(a.a!=b.a)return a.a<b.a;
return a.s<b.s;
}
sort(a+1,a+1+n);

vectorve;
sort(ve.begin(),ve.end());

reverse
翻转数组、容器
int x[1005];
reverse(x+1,x+1+n);
vectorve;
reverse(ve.begin(),ve.end());

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值