B站视频链接:B01 STL 容器_哔哩哔哩_bilibili
1、vector
#include
using namespace std;
vector v;//定义
int main(){
int n,x;
cin>>n;
for(int i=0;i>x;
v.push_back(x);//添加新元素
}
for(int i=0;i
#include
using namespace std;
struct edge{
int u,v,w;
bool operator<(const edge &t)const
{return w 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
2、stack栈
#include
using namespace std;
stack s;
int main(){
int n,x;
cin>>n;
for(int i=1;i<=n;i++){
cin>>x;
s.push(x);//入栈
}
while(s.size()){
cout<
#include
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<
3、queue与priority_queue
#include
using namespace std;
const int N=100010;
vector e[N];
int vis[N];
queue q;
void bfs(){
vis[1]=1;
q.push(1);
while(q.size()){
int x=q.front();
q.pop();
cout<>n>>m;
for(int i=0;i>a>>b;
e[a].push_back(b);
e[b].push_back(a);//a,b之间连了一条无向边
}
bfs();
return 0;
}
#include
using namespace std;
const int N=100010;
int n,m,s,a,b,c;
struct edge{int v,w;};
vector e[N];
int d[N], vis[N];
priority_queue> 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>a>>b>>c;
e[a].push_back({b,c});
}
dijkstra();
return 0;
}
4、 unordered_set与unordered_map
#include
using namespace std;
unordered_set 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
using namespace std;
unordered_maph;
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;
}