1. 程式人生 > >論STL的動態數組vector的基本應用

論STL的動態數組vector的基本應用

com span 分享 並且 循環 關於 sca 都是 內容

STL,就是c++的標準數據庫,今天要講的就是附屬與它的vector的基本應用。

個人來說,我認為這個東東基本上沒有什麽用,但是總歸得看懂吧。。。

這是一個動態的數組,可以隨時定義它的大小(長度)

除了用萬能頭文件(bits/stdc++.h)的人,其它都要加上#include<vector>,如果只用BITS時報錯,那就把這個加上吧。

定義位置:和定義普通數組一樣。

定義方法:vector<數組類型名>數組名;

如果想定義多維數組,可以:vector<vector<數組類型名> >數組名;

註意,數組類型名後的兩個> >中必須有空格,否則編譯器將把它當作>>右移運算處理。

這是二維的,如果想更多維,可以將數組類型名改為vector<>,這個東東是可以嵌套的。

定義好了的數組,是從0開始的,並且長度為零,如何設置長度呢?

一維數組:

//若長度為n,數組名為a。

a.resize(n);

//好了,這是一個從0-(n-1)的數組,如何操作後面再說。

二位數組:

//若要大小為n*n,數組名為a。

a.resize(n);//這樣第一維的長度就定好了

for(int i=0;i<n;i++)a[i].resize(n);//這樣每一行的維度就都設置好了,就像二維數組了。過程如圖示:

技術分享

三位及以後,只要多重循環就行了,本人就不多講了。

定義好了數組後,我們就要想如操作它了,以下介紹兩種方法:

1、普通數組操作

for (int i=0;i<n;i++)scanf("%d",&a[i]);

就像普通數組一樣操作。

2、叠代器操作

for (vector<和你要操作的數組一個類型(包括多維)>::iterator 循環變量名=要操作數組名.begin();循環變量名<要操作數組名.end();循環變量名++)scanf("%d",&(*循環變量名));

如果是多維,額(⊙o⊙)…我就沒研究啦。

樣例:

讀入n(回車)1 2 3 4 5,輸出1 2 3 4 5。

#include<bits/stdc++.h>
using namespace std;
int n;
int main()
{
scanf("%d",&n);
vector<int>a;
a.resize(n);
for ( vector<int>::iterator it=a.begin();it!=a.end();++it ) scanf("%d",&(*it));
for ( vector<int>::iterator it=a.begin();it!=a.end();++it ) printf("%d ",(*it));

return 0;

}

既然會使用了,那也要會用,下面介紹幾種關於它的基本操作。

以下所講的函數,都是以要操作的數組名.函數名()來操作的,就算()裏為空,也得加上括號。

1、push_back(n);//將n添加在數組最後(長度會自動加)

2、pop_back();//清除數組最後的一個元素。

3、clear();//野蠻的將整個的長度清零,內容清零

4、insert(位置(從0開始),內容);在位置插入內容。

整節課就講完啦!接下有一道練習題,大家可以做做。

蛇形方陣

【問題描述】

輸入n,n≤100。輸出n階蛇形方陣。例如n=5時,輸出如下:

1 2 6 7 15

3 5 8 14 16

4 9 13 17 22

10 12 18 21 23

11 19 20 24 25

答案

論STL的動態數組vector的基本應用