一、vector的常見用法詳解
1.vector的定義
標頭檔案:#include
單獨定義乙個vector:
vectorname;
注:如果typename也是乙個stl容器,定義的時候要記得在》符號之間加上空格,因為一些使用c++11之前標準的編譯器會把它視為移位操作,導致編譯錯誤。
如果typename是vector,就是下面的這樣定義:
vector> name; //>>之間要加空格
例子:vectorname;
vectorname;
vectorname;
vectorname;
定義vector二維陣列:
vectorarrayname[arraysize];
例如:vectorvi[100];
這樣arrayname[0]~arrayname[arraysize-1]中每乙個都是乙個vector容器。
2.vector容器內元素的訪問
(1)通過下標訪問
vector[index] 即可訪問
(2)通過迭代器訪問
迭代器(iterator)可以理解為一種類似指標的東西,其定義為:
vector::iterator it
這樣it就是乙個vector::iterator 型的變數。
例子:vector::iterator it;
vector::iterator it;
這樣就定義了迭代器it,並且可以通過*it來訪問vector裡的元素。
例如:
vectorvi;for(int i=1;i<=5;i++)
可以通過類似下標和指標訪問陣列的方式訪問容器內的元素
#include#includeusing
namespace
std;
intmain()
為取首元素位址,而it指向這個位址
vector::iterator it=vi.begin();
for(int i=0;i<5;i++)
return0;
}
輸出結果:1 2 3 4 5
其中 vi[i]和*(vi.begin()+i)是等價的
例如:
for(vector::iterator it=vi.begin();it!=vi.end();it++)
3.vector常用函式例項解析
(1)push_back()
push_back(x)就是在vector後面新增乙個元素x,時間複雜度o(1)。
(2)pop_back()
pop_back() 用以刪除vector的尾元素,時間複雜度為o(1)。
(3)size()
size()用來獲得vector中元素的個數,時間複雜度o(1)。
(4)clear()
clear()用來清空vector中的所有元素,時間複雜度o(n)。
注意:因為相應記憶體區域的內容並沒有被覆蓋,這樣就保持著原來的值,直到這部分記憶體被重新寫入時才會改變。
(5)insert()
insert(it,x)用來向vector的任意迭代器it處插入元素x,時間複雜度o(n)。
(6)erase()
erase()有兩種用法:刪除單個元素、刪除乙個區間內的所有元素,時間複雜度o(n)。
4.vector的常見用途
(1)儲存資料
(2)用鄰接表儲存圖
C 標準模板庫(STL)之vector
vector即長度可變的陣列 標頭檔案宣告 include using namespace std 1.定義 vector int v vectorint age 兩個 之間需加空格,不然會被誤以為是移位操作 vector int vi 100 vector陣列,vi 0 vi 99 每乙個都是乙個...
C 標準模板庫(STL)之 string
在c語言中,一般使用字元陣列char str來存放字串,但是使用字元陣列有時會顯得麻煩,c 在stl中加入了string型別,對字串常用的需求功能進行了封裝,使得操作起來更方便,且不易出錯。如果需要使用string 需要新增string標頭檔案,即 include 注 string.h和string...
C 標準模板庫(STL)之Stack
stack 棧,乙個後進先出的容器。1.1 stack的定義 加上標頭檔案 include和using namespace std stacksk 1.2 stack容器元素的訪問 stack是一種操作受限制的線性表,只能通過top 來訪問棧頂元素。include include using nam...