STL常用函数(我这个新手认为的)

以后再完善这个博客

一、vector(vector< type >v)

v.push_back(type num);//在末尾添加num

v.pop_back();//删除末尾元素

v.size();//获取v中元素个数

v.resize(type num)把v的长度设定为n个元素(不会初始化长度内的已有元素)

v.empty();//判断v是否为空,空返回1,非空0

v.clear()//清空,size变为0

v.insert(iterator it,type num)//在it指向元素前插入一个元素

v.erase(iterator it)//删除迭代器指向元素

v.front()//返回首元素的引用

v.back()//返回尾元素的引用

v.begin()返回指向首元素的迭代器

v.end()返回尾迭代器

二、string(s)

(非函数部分)
s1=s2//将s2字符串赋给s1
s1==s2、s1!=s2、s1<s2…//比较两字符串
s1=s1+s2、s1+=s2//将s2连到s1后面

(函数部分)
cin>>s1不能输入空格,用getline(cin,s1)可以输入
s[n]返回字符串中下标为n的字符//同数组的a[n]一样
s.substr(p,n)返回从s的下标p开始的n个字符组成的字符串
s.length()返回字符串长度
s.empty()判断s是否为空,空返回1,非空放回0
//下面几个函数好像可以写几种形参,就不乱写了
s.erase()
s.insert()
s.insert()
s.replace()
s.find()
s.rfind()

三、queue(queue< type>q)

(queue只能在容器末尾添加元素,在头部移出元素)
q.push(元素)//末尾添加
q.pop()//头部出队
q.front()//获取头部元素
q.size()//获取q中元素个数
q.empty()//判断q是否为空,空1非0

四、优先队列priority_queue(priority_queue<Type,Container,Functional>pq//数据类型,容器(默认vector),比较函数(默认求大值)(可以自己定义)(如果是结构体类型,要自己重载一个比较运算符)//type可以比较时后两个可以省去后面两个参数)

pq.push(item)//在pq中添加元素
pq.top()//获取pq中最大的元素
pq.pop()//使最大元素出队
pq.size()//获取pq中元素个数
pq.empty()//老empty了

五、set(集合)

六、map(映射)

七、bitset(二进制有序集)

八、max(val1,val2)返回更大的值

九、min(val1,val2)返回小值

十、swap(type,type)交换值,类型可以是值也可以是容器

十一、sort(first,last,compare)//快排

first为起始位置,用指针或迭代器
last
compare为比较方式,省略则默认升序,如果排序结构体,必须compar
时间为O(nlogn)

十二、去重函数unique(first,last)

移除区间内的重复项
[first,last]范围内的值必须有序
返回最后一个元素的迭代器

十三、二分函数

lower_bound(first,last,value)
upper_bound(first,last,value)

value为查找的值
lower返回的是序列中第一个大于等于value的元素的位置,时间为O(logn)
upper返回的是
[first,last]内必须有序,如果找不到就返回last

十四、next_permutation(first,last)

用于求序列[first,last]元素全排列中一个排序的下一个排序

上一篇:Ugly Numbers UVA - 136


下一篇:Missile Silos CodeForces - 144D