C++ STL

vector:变长数组

定义

头文件:#include<vector>
vector<int> name;
vector<node> name;
vector<int> vi[10];  //一维长度固定的二维数组
vector<vector<int> > vi;   //二维长度都不固定的二维数组

访问

  • 下标访问
  • 迭代器访问
vector<int>::iterator iter;
it=vec.begin();
it=vec.end();
vector<int>::reverse_iterator r_iter
r_iter=vec.rbegin();
r_iter=vec.rend();

常用函数

函数描述
push_back(x)添加元素x
pop_back()移除尾元素
size()长度
clear()清空
insert(iterator,x)在迭代器位置添加元素 x
erase(iterator)删除迭代器处的元素
erase(firstIterator,lastIterator)删除 [ )区间的元素

set:有序不重复

定义 :头文件 #include<set> 类似vector

访问:迭代器访问

常用函数

函数描述
insert(x)添加元素x
find(value)返回值为value的元素的迭代器
erase(iterator)删除迭代器处的元素
erase(value)删除值为value的元素
erase(firstIterator,lastIterator)删除[ )区间的元素
size()长度
clear()清空

string:字符串

定义

头文件`#include<string>`
string str="abcd";

如果要读入或者输出整个字符串,只能用 cincout头文件#include<iostream>)
使用printf输出字符串 printf("%s",str.c_str() ),转换成字符数组输出

访问

  • 下标
  • 迭代器

常用函数

函数描述
+拼接两个string
=、!=、<、>比较字符串
size()长度
insert(pos,string)在指定位置插入字符串
erase(iterator)、erase(first_iterator,last_iterator)删除单个元素或区间元素
clear()清空
substr(pos,len)截取字符串,若len大于剩余长度,则截取到str末尾
find(str)在当前字符串中查找str,返回第一次出现的下标位置,若查找失败返回string::npos
replace(pos,len,str2)从pos位置起,长度为len的字串替换为str2

map:键值对,key有序不重复

map可以是任何基本类型(包括STL)映射到任何基本类型(包括STL)

定义:头文件#include<map> ,声明map<type1,type2> mp;

访问

  • 下标:mp[“string”]、mp[‘a’] …
  • 迭代器map<type1,type2>::iterator it;通过it->first,it->second访问键和值

常用函数

函数描述
find(key)返回键为key的键值对的迭代器
erase(iterator)、erase(key)、erase(first_iterator,last_iterator)删除单个元素或区间元素
size()长度
clear()清空
unorder_map<type1,type2> mp   //声明  #include<unorder_map>  ,不排序map

queue:队列

定义:头文件#include<queue> ,声明queue<type> qu;

函数描述
front()获得队首元素
back()获得队尾元素
push(x)x入队
pop()出队
empty()检测是否为空
size()长度

priority_queue:优先队列

定义:头文件#include<queue>,声明priority_queue<type> qu;

常用函数

函数描述
push(x)x入队
pop()出队
top()获得队首元素,使用前判断是否为空
empty()判断为空
size()长度

优先级设置

  • 基本数据类型
默认越大排前面:priority_queue<int> qu ; priority_queue<int, vector<int> ,less<int> >
小的排前面:priority_queue< int, vector<int> ,greater<int> >
  • 结构体:在结构体内重载<

struct fruit{
string name;
int price;

friend bool operator < (fruit f1 ,  fruit f2){
return f1.price<f2.price;    // 按price排序,<  <不变,价格大的排前面

stack:栈

定义:头文件 #include<stack> , 声明 stack<type> st;

常用方法

函数描述
push(x)x入队
pop()出队
top()获得栈顶元素
empty()判断是否为空
size()长度

algorithm常用函数

函数描述
max(x,y)、min(x,y)、abs(x)最大值,最小值(参数只能两个,可以为浮点数);abs(x),必须为整数;fabs(x) ,x可为浮点数
swap(x,y)交换x和y的值
reverse(t1,t2)将指针或者迭代器在 [t1,t2) 内的元素反转
next_permutation(t1,t2)返回值bool,改变指针或迭代器[t1,t2)内元素的位置,全排列最后一个返回false
fill(t1,t2,val)将数组或者容器迭代器[t1,t2)范围内的值填充为val

lower_bound() 和 upper_bound()

使用条件:有序数组或容器

lower_bound(first,last,val):查找数组或容器 [first,last) 范围内大于等于val元素的位置,数组返回该位置指针,容器返回该位置迭代器

upper_bound(first,last,val)::查找数组或容器 [first,last) 范围内第一个大于val值的元素的位置,数组返回该位置指针,容器返回该位置迭代器

如果没有找到该元素,返回val应该插入的位置的指针或迭代器

sort

对数组指针或容器迭代器 [t1,t2) 的元素排序,sort(a,a+10,cmp),默认小到大,第三个参数是比较函数,非必填

cmp函数

  • 基本数据类型
bool cmp(type a, type b){
return a>b;
}
  • 结构体
bool cmp(node a,node b){
return a.x>b.y;   // 按照x的大小将结构体从大到小排序
}
  • 容器
bool cmp(string a,string b){
return a>b;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值