1. 程式人生 > >利用STL實現動態數組

利用STL實現動態數組

ring eof bfs cst nbsp tor cin cit turn

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實現動態數組