STL说明:
定义集合类型(STL中不同数据结构)变量,数据元素类型在尖括号内说明,通过变量名.成员函数去执行具体功能。
一.栈(stack)
1.栈是一种先进后出的数据结构,只能操作最顶端的元素
2.头文件#include<stack>
格式 stack<int>(尖括号内是堆栈内元素的类型,可以是结构体等其他类型)s;
3.操作: s.empty()------返回bool型,表示栈内是否为空
s.size()------返回栈内元素个数
s.top()-----返回栈顶元素值
s.pop()------移除栈顶元素值
s.push(a)------向栈顶压入一个元素a
二.动态数组(vector)
1.操作: v.empty()------返回bool型,表示动态数组是否为空
v.size()------返回vector中元素个数
v.push_ back(a)------将元素a插入最尾端
v.pop_back------将最尾端元素删除
v[i]---------和数组作用相同
三.map
1.map是一个关联容器,是一种映射.
2.map结构:map<key_type,value_type>map_show
map<string,int>mp默认按string由小到大排序
mp.begin()返回一个双向迭代器,指向第一个元素
mp.end()返回一个双向迭代器,指向最后一个元素的下一个位置
3.添加数据:
map<string,int>mp;
mp.insert(pair<string,int>(“achieve”,12);
4. 查找:
map<int ,string> ::iterator it;
it = mp.find(112);
if(it == mp.end())
cout<<“we do not find 112”<<endl;
else cout<<“we find 112”<<endl;
map<string,int>mp;
cout<<“mp->first(键值)”<<“mp->second(实值)”
四.set
1.迭代器举例(遍历)
set<int>::iterator pos;
for(pos=s.begin();s!=s.end();pos++)
s.size()-----返回容器中的元素个数
s.empty()-----返回bool类型
五.队列(queue)
1.定义:#include<queue>
2.格式:#include<int>q
3. q.front()---------队头
q.back()---------队尾
q.pop()----------在队头删元素 而stack的s.pop()则是在栈顶删元素
查找
upper_bound和lower_bound
upper_bound(begin,end,zhi)----返回大于zhi元素的第一个位置
lower_bound(begin,end,zhi)-----返回大于等于zhi元素的第一个位置
例如:
num[]={1,2,2,3,4,5};
lower_bound(num,num+6,2)为num+1
upper_bound(num,num+6,2)为num+3
sort排序
格式:sort(begin,end) //默认按从小到大排序
sort(begin,end,cmp)
例如:int num[]={1,5,6,2,9}
bool cmp(int a,int b)
{
return a>b;
}
sort(num,num+5,cmp); //num[]={9,6,5,2,1}
给STL排序
sort(b.begin(),b.end,cmp)
万能头文件
#include<bits/stdc++.h>