利用STL实现动态数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用STL实现动态数组相关的知识,希望对你有一定的参考价值。
vector 的用法 1.vector定义了动态的不确定大小的数组 2.用法的操作很像队列的stl操作 3.vector<int>a 定义了一个不确定大小的一维数组a 之后的具体操作: (1)a.push_back(x):相当于在a数组最后一个位置压入一个元素x,并且在开辟一个空间 eg:a.push_back(1) 则 a[0]=1; 继续 a.push_back(2) 则 a[1]=2; 所以要注意动态数组开空间是按顺序的,是从0开始的 (2)理解了上面的关键操作后,列举出来其他操作: a.size():a数组中含有元素的个数 扩展: vextor<int>a[100] a[x].size():二维数组a[x][]中不确定大小的那一维的元素个数 a.clear():清空所有数据 a.begin():返回第一个元素 eg:int k=a.begin():k为a数组中第一个元素,即a[0] a.end():返回最后一个元素 #include <bits/stdc++.h> using namespace std; #define maxn 100 vector<int>a[maxn]; int col[maxn]; int main(){ ios::sync_with_stdio(false); int u,v; cin>>u>>v; a[u].push_back(v); cout<<a[1][0]; } syzoj.com 最短路问题 #include<iostream> #include<cstdio> #include<algorithm> #include<vector> #include<queue> #include<cstring> using namespace std; vector<int>a[100001],b[100001]; queue<int>bfs; int dis[100001]; int main(){ memset(dis,127,sizeof(dis)); dis[1]=0; int n,m; cin>>n>>m; int u,v,c; for(int i=1;i<=m;i++){ cin>>u>>v>>c; a[u].push_back(v); b[u].push_back(c); } bfs.push(1); while(!bfs.empty()){ int city=bfs.front(); bfs.pop(); int num=a[city].size(); for(int i=0;i<num;i++){ int next=a[city][i]; //cout<<next<<endl; int next_c=b[city][i]; dis[next]=min(dis[next],dis[city]+next_c); bfs.push(next); } } cout<<dis[n]; return 0; }
以上是关于利用STL实现动态数组的主要内容,如果未能解决你的问题,请参考以下文章