一.队列和优先队列
队列是front,back可以访问队首队尾,优先队列用top访问优先级最高
#include<iostream> #include<queue> using namespace std; struct st{ int x; int y; friend bool operator<(const st T1,const st T2) { return T1.x>T2.x; } }; int main() { priority_queue<int,vector<int>,greater<int> > qu; qu.push(2);qu.push(3);qu.push(5); while(!qu.empty()) { cout<<qu.top();//235 qu.pop(); } cout<<endl; priority_queue<st>qq; st t1,t2; t1.x=2;t2.x=3; qq.push(t2);qq.push(t1); while(!qq.empty()) { cout<<qq.top().x;//23 qq.pop(); } return 0; }
二.栈
栈和队列一样没有clear的清空函数,需要循环pop。栈先进后出,访问栈顶的元素用top。其他操作与队列类似。
.size()可以知道元素个数
#include<iostream> #include<stack> using namespace std; int main() { stack<int> s; s.push(2);s.push(3);s.push(4); cout<<s.size()<<endl;//3 while(!s.empty()) { cout<<s.top();//432 s.pop(); } return 0; }
三.向量(动态数组)
vector可以用下标访问
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
vector<int> v;
v.push_back(2);v.push_back(6);v.push_back(8);
cout<<v.size()<<endl;//3
cout<<v.front();cout<<v.back()<<endl;//28
reverse(v.begin(),v.end());
//v.end()是尾地址加一类似于sort
for(int i=0;i<3;++i)
cout<<v[i];//862
cout<<endl;
v.pop_back();
cout<<v.front()<<endl;//8
v.pop_back();
cout<<v.empty()<<endl;//0
v.clear();
cout<<v.empty();//1
return 0;
}
四.集合
set是有序,互异的集合,可以在logn时间进行查找,插入,删除等操作。只能用迭代器访问
#include<iostream> #include<set> #include<algorithm> using namespace std; int main() { set<int> s; s.insert(2);s.insert(7);s.insert(6); s.erase(2); cout<<s.count(2)<<endl;//0 for(set<int>::iterator it=s.begin();it!=s.end();it++) cout<<*it<<" ";//6 7 cout<<endl; set<int,greater<int> >st; st.insert(3);st.insert(8);st.insert(9); for(set<int,greater<int> >::iterator it=st.begin();it!=st.end();it++) cout<<*it<<" ";//9 8 3 st.clear(); cout<<endl<<st.empty();//1 return 0; }
五.string
string可以用“=”“+”等运算符,可以用“>”">=""<""<=""==""!="
#include<iostream> #include<map> #include<algorithm> using namespace std; int main() { int a[4]={1,2,3,4}; do { cout<<a[0]<<a[1]<<a[2]<<a[3]<<endl; }while(next_permutation(a,a+4));//找全排列 return 0; }
#include<iostream> #include<cstring> #include<string> #include<algorithm> using namespace std; int main() { string str("This is the world"); string str2; str2 = str.substr(6, 3); cout << str2 << endl; str2 = str.substr(6); cout << str2 << endl; //str2.insert(2,"io"); //str2.insert(2,str2); str2.insert(2, 3, 'i');//第三参不放字符串 cout << str2 << endl; cout << str.find("is") << endl;//找第一次出现的位置 cout << str.find("is", 4) << endl;//从4到结尾第一次出现的位置 string str1("agbdcfe"); sort(str1.begin(), str1.end()); cout << str1 << endl;//abcdefg next_permutation(str1.begin(), str1.end()); cout << str1 << endl;//abcdegf下一个全排列 prev_permutation(str1.begin(), str1.end()); cout << str1 << endl;//abcdefg上一个全排列 return 0; }
六.映射(map)
map是键值对容器,不能修改key,可以修改value,map会根据key自动排序
#include<iostream> #include<map> #include<algorithm> using namespace std; int main() { map<int,string> m; m[1]="zhangsan"; m[2]="lisi"; m.insert({2,"wangwu"});//若键值已经存在,就不再插入 m.insert({3,"wangwu"}); for(map<int,string>::iterator it=m.begin();it!=m.end();it++) cout<<it->first<<" "<<it->second<<endl; m.erase(2);//erase()里放键值 cout<<m.count(2)<<endl; return 0; }
标签:insert,常用,cout,STL,st,int,push,include From: https://www.cnblogs.com/ruoye123456/p/17006478.html