string
#include <iostream>
#include<string>
using namespace std;
int main(){
ios::sync_with_stdio(false);
//初始化1
string a;
char b[100];
cin>>b;
a=b;
cout<<"a="<<a<<endl;
//初始化2
string c="123";
cout<<"c="<<c<<endl;
//初始化3
string d=a+c;
cout<<"d="<<d<<endl;
//比较大小
cout<<"a/c 比较:"<<(a>c)<<endl;
//.size()
cout<<"c length="<<c.size()<<endl;
//c.[i]
cout<<"c[0]="<<c[0]<<endl;
//.empty()
//0 非空 1 空
cout<<"string c 判空:"<<c.empty()<<endl;
//可读入空格getline(cin,string);
//持续输入
//while(cin>>string)空格无法存入,输入回车+Ctrl Z 结束
//while(getline(cin,a))空格可以存入,输入回车+Ctrl Z 结束
}
stack
#include <iostream>
#include<stack>
using namespace std;
int main(){
ios::sync_with_stdio(false);
stack<char> s;
s.push('a');
s.push('b');
while(!s.empty()){
cout<<"当前大小:"<<s.size()<<"当前元素:"<<s.top()<<endl;
s.pop();
}
}
queue
#include <iostream>
#include<queue>
using namespace std;
int main(){
queue<char> q;
q.push('a');
q.push('b');
q.push('c');
cout<<"大小:"<<q.size()<<endl;
cout<<"队头:"<<q.front()<<endl;
cout<<"队尾:"<<q.back()<<endl;
q.pop();
cout<<"pop后"<<endl;
cout<<"队头:"<<q.front()<<endl;
cout<<"队尾:"<<q.back()<<endl;
cout<<"判空:"<<q.empty();
}
vector
#include <iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct stu{
int cja;
int cjb;
};
//多级比较
int cmp(stu a,stu b){
if(a.cja>b.cjb)return true;
else if(a.cja==b.cja)return a.cjb>b.cjb;
else return false;
}
int main(){
vector<stu> v;
for(int i=1;i<=10;i++){
stu a={i,i-1};
v.push_back(a);
}
cout<<"大小:"<<v.size()<<endl;
cout<<"第1个学生\n"<<"cja="<<v[1].cja<<"\tcjb="<<v[1].cjb<<endl;
cout<<endl;
//降序
sort(v.begin(),v.end(),cmp);
//后往前输出
while(!v.empty()){
cout<<"cja="<<v[v.size()-1].cja<<"\tcjb="<<v[v.size()-1].cjb<<endl;
v.pop_back();
}
}
priority_queue
#include <iostream>
#include<queue>
using namespace std;
int main(){
priority_queue<int> pq;
pq.push(1);
pq.push(3);
pq.push(5);
while(!pq.empty()){
cout<<"top:"<<pq.top()<<endl;
pq.pop();
}
//结果为5 3 1
}
unique
#include <iostream>
#include<algorithm>
using namespace std;
int main(){
int a[15]={1,1,1,2,2,2,3,3,3,1,2,3,4,5,6};
int t;
sort(a,a+15);
t=unique(a,a+15)-a;//去重后,最后一个元素的位置
for(int i=0;i<t;i++)
cout<<a[i]<<" ";
//没sort结果为1 2 3 1 2 3 4 5 6
//sort后结果为1 2 3 4 5 6
}
next_permutation
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
char ch[80];
cin>>ch;
cout<<"全排列:"<<endl;
int len=strlen(ch);
sort(ch,ch+len);
do{
for(int i=0;i<len;i++)
cout<<ch[i];
cout<<endl;
}while(next_permutation(ch,ch+len));
}
upper_bound/lower_bound
lower_bound(begin,end,val)
返回第一个>=val的元素的位置
upper_bound(begin,end,val)
返回第一个>val的元素的位置
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int a[10]={1,1,2,2,3,3,5,6,7,8};
cout<<*lower_bound(a,a+10,0);//结果是1
cout<<*upper_bound(a,a+10,3);//结果是5
}
set
集合,不可重复
#include<iostream>
#include<set>
using namespace std;
int main(){
set<int> s;
s.insert(111);
s.insert(111);
s.insert(222);
s.insert(333);
//迭代器
set<int>::iterator itr;
for(itr=s.begin();itr!=s.end();itr++){
cout<<*itr<<endl;
}
cout<<"查找"<<endl;
itr=s.find(333);
if(itr!=s.end())
cout<<*itr;
else
cout<<"无";
}
map
键-值对,用来存储一组映射关系的集合
键不可重复
#include<iostream>
#include<map>
using namespace std;
int main(){
map<string,int> m;
m["张三"]=99;
m["李四"]=100;
m["王五"]=98;
m.insert(make_pair("ac",100));
map<string,int>::iterator itr;
itr=m.find("张三");
if(itr!=m.end())
cout<<itr->first<<" "<<itr->second;
else
cout<<"无";
}