STL总结
vector
#include<vector>
vector<int> v; vector<double> v(10,8.6);
v.push_back(); //尾部扩充元素
vector<int>::iterator it;
for(it=v.begin();it!=v.end();it++) cout<<*it;
v.insert(v.begin(),6); //在最前面插入6;找位置v.begin()+i
v.erase(v.begin()+1,v.begin()+5); //删除[1,5), v.erase(v.begin());删除第一个
reverse(v.begin(),v.end()); //反向排序,algorithm
sort(v.begin(),v.end(),Comp);
bool Comp(const int &a,const int &b){ //从大到小
if(a!=b) return a>b;
else return a>b; }
v.size() //大小
v.empty() //是否为空
v.clear();//清空
string
#include<string>
string s;
s="hello,c++stl"; //赋值
s=s+'a'; //尾部扩充元素
s=s+"abc"; s.append("abc"); //扩充字符串
s.insert(s.begin()+1,'p') //插入元素
s.erase(s.begin()+1,s.begin()+5); //删除[1,5)
s.length() //长度
s.empty() //是否为空
s.replace(3,3,"good") //从第三个开始,将连续的3个字符换成good
s.find('c') //返回第一个c的下标,没有返回4294967295或-1
s.compare(ss) //s比ss大返回1,相等0,小-1
reverse(s.begin(),s.end()); //反排序,algorithm
vector<string> v;
s.clear();//清空
set
#include<set>
set<int> s; //无相同
s.insert(x); //插入元素
set<int>::reverse_iterator rit;
for(rit=s.rbegin();rit!=rend();rit++){
cout<<*rit; } //反向遍历
s.erase(6); //删除6这个元素
s.clear();//清空
s.find(6); //查找6这个元素,返回迭代器位置
it=s.find(6); if(it!=s.end()) //找到
struct myComp{
bool operator () (const int &a,const int &b){
if(a!=b) return a>b;
else return a>b;}
}; //set<int,myComp> s;
struct Info{
string name;
float score;
bool operator < (const Info &a) const{
return a.score<score;}
};
multiset<string> ms; //多重集合容器,可相同
map
#include<map>
map<string,float> m; //string的是键值,float的是映照值
m["Jack"]=98; //插入
map<string,float>::iterator it;
for(it=m.begin();it!=m.end();it++) //遍历,也可反向
cout<<(*it).first<<(*it).second<<endl;
map<string,float,myComp> m; //可自定义比较函数,和色图类似
multimap<string,float> mm;//多重映照容器
stack
#include<stack> //先进后出
stack<int> st;
s.push(x); //入栈
s.top(); //访问栈顶元素
s.pop(); //出栈
s.size() //大小
s.empty() //是否为空
queue
#include<queue>//先进先出
queue<int> q;
q.push(x); //入队
q.front(); //访问队首
q.back(); //访问队尾
q.pop(); //删除队首
struct Info{
string name;
float score;
bool operator < (const Info &a) const{
return a.score<score;}
};
priority_queue<Info> pq; //优先队列
bitset
#include<bitset> //二进制转换
bitset<10> b; //10个元素
#include <bitset>
#include <algorithm>
using namespace std;
int main(){
int x,n;
bitset<16> a;
cin>>n;
while(n--){
cin>>x;
a=x;//把十进制的x以二进制存进a中
if(a.any()==0) //判断是否存在1
cout<<"0"<<endl;
for(int j=15;j>=0;j--) //倒序输出
{
if(a[j]!=0) //去前导0
{
for(int i=j;i>=0;i--)
cout<<a[i];
cout<<endl;
break;
}
}
} return 0;
}