![](https://i-blog.csdnimg.cn/blog_migrate/1bc9e284ab0b4370335e4876f64772d0.png)
1、vector
![](https://i-blog.csdnimg.cn/blog_migrate/5a17ebed6fb79e6303ed7eaf233114d2.png)
#include <bits/stdc++.h>
using namespace std;
vector<int> v;//定义
int main(){
int n,x;
cin>>n;
for(int i=0;i<n;i++){
cin>>x;
v.push_back(x);//添加新元素
}
for(int i=0;i<v.size();i++){
cout<<v[i]<<' ';
}
puts("");
sort(v.begin(),v.end());//排序
for(int e:v)cout<<e<<' ';
puts("");
reverse(v.begin(),v.end());//反转
for(int e:v)cout<<e<<' ';
return 0;
}
#include <bits/stdc++.h>
using namespace std;
struct edge{
int u,v,w;
bool operator<(const edge &t)const
{return w<t.w;}
};//边按权值排列
vector<edge> es;//边集
int main(){
int m,a,b,c;
cin>>m;
for(int i=1;i<=m;i++){
cin>>a>>b>>c;
es.push_back({a,b,c});
}
sort(es.begin(),es.end());
for(int i=0;i<es.size();i++){
printf("%d %d %d\n",es[i].u,es[i].v,es[i].w);
}
//for(auto e:es)
// printf("%d %d %d\n",es[i].u,es[i].v,es[i].w);
return 0;
}
2、stack栈
![](https://i-blog.csdnimg.cn/blog_migrate/6946bbf7cdab5f9ee8f459ccdb003c05.png)
#include <bits/stdc++.h>
using namespace std;
stack<int> s;
int main(){
int n,x;
cin>>n;
for(int i=1;i<=n;i++){
cin>>x;
s.push(x);//入栈
}
while(s.size()){
cout<<s.top()<<'\n';
s.pop();
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int s[10000],top;
int main(){
int n,x;
cin>>n;
for(int i=1;i<=n;i++){
cin>>x;
s[++top]=x;//入栈并令top指针加一
}
while(top){
cout<<s[top]<<'\n';
top--;
}
return 0;
}
3、queue与priority_queue
![](https://i-blog.csdnimg.cn/blog_migrate/e5e3d2115f5aa8bf549dde449b59a9b3.png)
#include <bits/stdc++.h>
using namespace std;
const int N=100010;
vector<int> e[N];
int vis[N];
queue<int> q;
void bfs(){
vis[1]=1;
q.push(1);
while(q.size()){
int x=q.front();
q.pop();
cout<<x<<endl;
for(auto y:e[x]){
if(vis[y])continue;
vis[y]=1;//标记
q.push(y);
}
}
}
int main(){
int n,m,a,b;
cin>>n>>m;
for(int i=0;i<m;i++){
cin>>a>>b;
e[a].push_back(b);
e[b].push_back(a);//a,b之间连了一条无向边
}
bfs();
return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int N=100010;
int n,m,s,a,b,c;
struct edge{int v,w;};
vector<edge> e[N];
int d[N], vis[N];
priority_queue<pair<int,int>> q;
void dijkstra(){
for(int i=0;i<=n;i++) d[i]=1e9;
d[1]=0; q.push({0,1});
while(q.size()){
auto t=q.top(); q.pop();
int u=t.second;
if(vis[u])continue;
vis[u]=1; //标记
for(auto ed : e[u]){
int v=ed.v, w=ed.w;
if(d[v]>d[u]+w){
d[v]=d[u]+w;
q.push({-d[v],v});
}
}
}
}
int main(){
cin>>n>>m;
for(int i=0; i<m; i++){
cin>>a>>b>>c;
e[a].push_back({b,c});
}
dijkstra();
return 0;
}
4、 unordered_set与unordered_map
![](https://i-blog.csdnimg.cn/blog_migrate/88ea42df8b46e4c4157621ee759e3218.png)
#include <bits/stdc++.h>
using namespace std;
unordered_set<int> s;
int main(){
int n,c,x;
cin>>n;
while(n--){
cin>>c>>x;
if(c==1)s.insert(x);
else s.count(x)?puts("Yes"):puts("No");
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
unordered_map<string,int>h;
int main(){
int n,c;
string str;
cin>>n;
while(n--){
cin>>c>>str;
if(c==1)h[str]++;
else{
if(h.count(str))printf("%d\n",h[str]);
else puts("No");
}
}
return 0;
}