vector的資料安排以及操作方式,與array非常相似。兩者的唯一區別在於空間的運用的靈活性。array是靜態空間,一旦配置了就不能改變。vector是動態空間,隨著元素的加入,它的內部機制會自行擴充空間以容納新元素。因此,vector的運用對於記憶體的合理利用與運用的靈活性有很大的幫助,我們再也不必因為害怕空間不足而一開始要求乙個大塊的array。
vector動態增加大小,並不是在原空間之後持續新空間(因為無法保證原空間之後尚有可供配置的空間),而是以原大小的兩倍另外配置一塊較大的空間,然後將原內容拷貝過來,然後才開始在原內容之後構造新元素,並釋放原空間。因此,對vector的任何操作,一旦引起空間重新配置,指向原vector的所有迭代器就都失效了。
1 #include 2 #include 3 #includevector建立二維陣列:4 #include 5
using
namespace
std;67
intmain()8;
10//
建立乙個空vector容器
11 vectorv1;
12//
建立乙個有10個空元素的vector容器
13 vector v2(10
);14
//建立乙個有10個元素的vector容器,並為每個元素賦值為0
15 vector v3(10,0
);16
//根據字串陣列建立vector容器
17 vector v4(str,str + 3
);18
19//
迭代器法遍歷
20 vector::iterator sit =v4.begin();
21while(sit !=v4.end())
24 cout<
2526
//拷貝構造
27 vectorv5(v4);
28//
下標法遍歷
29for(int i = 0;i < 3;i ++)
32 cout<
3334
return0;
35 }
1 #include 2 #include 3二維陣列去除重複行:using
namespace
std;
4int
main()
520 cout<
after resizing:
"<
21//
新增兩行,對列也要重新設定大小
22 array.resize(5
);23 array[3].resize(3
);24 array[4].resize(3
);25
//現在是5x3的陣列了
26for(int i=0; i <5; i++)
27for(int j=0; j <3; j++)
28 array[i][j]=(i*j);
29for(int i=0; i <5; i++)
3035
return0;
36 }
1 res.erase(unique(res.begin(), res.end()), res.end());
二維陣列迭代輸出:
1 vectorint>>::iterator ie;23 vector::iterator it;
4for(ie=array.begin();ie)
510 cout<
11 }
STL vector基本用法
vector的資料安排以及操作方式,與array非常相似。兩者的唯一區別在於空間的運用的靈活性。array是靜態空間,一旦配置了就不能改變。vector是動態空間,隨著元素的加入,它的內部機制會自行擴充空間以容納新元素。因此,vector的運用對於記憶體的合理利用與運用的靈活性有很大的幫助,我們再也...
STL vector的基本用法
include includeusing namespace std vector容器 void test01 輸出1,2,3,6,6,9,9,9,13,13.容量的擴法。以及並不是按兩倍去擴 void printvector vector v cout endl vector建構函式 vector...
STL vector用法及模板
方便檢視 在stl的標頭檔案中定義了vector 向量容器模板類 vector容器以連續陣列的方式儲存元素序列,可以將vector看作是以順序結構實現的線性表。當我們在程式中需要使用動態陣列時,vector將會是理想的選擇,vector可以在使用過程中動態地增長儲存空間。vector模板類需要兩個模...