|
C++ STL的學(xué)習(xí)從vector入手,但是在正式使用STL的內(nèi)容之前,要先在主函數(shù)前添加一句 using namespace std;
它的作用就是定義標(biāo)示符,如果不加上這句代碼就要在每句使用C++標(biāo)準程序庫的任何標(biāo)識符時加上“std::”了。 比如說 std::string s = 'Hellow World!'; std::cout<<s<<std::endl;
如果主函數(shù)前加上了using namespace std;的話,這樣就好了 string s = 'Hellow World!'; cout<<s<<endl;
怎么樣比剛才好多了吧,所以不要偷懶,凡是要用到C++標(biāo)準程序庫的任何標(biāo)識符,都要先加上這一句代碼。 
說了這么多,現(xiàn)在終于要說說vector了。 vector
不定長數(shù)組、變長數(shù)組
頭文件:#include<vector> 定義:vector<typename>name; (在剛剛以及接下來的STL容器的定義中所用的typename表示可以是任何基本類型,例如int、double、char,也可以是自定義結(jié)構(gòu)體或STL容器,例如vector、string等) 元素訪問:(現(xiàn)已定義vector<int>vi;) 下標(biāo)訪問 vi[0]、vi[1],這與一維數(shù)組的訪問方式極像。 通過迭代器訪問。 vi.begin()和vi[0]是等價的;vi.begin()+4和vi[4]也是等價的。
遍歷: 下標(biāo)訪問 for(int i = 0; i < vi.size(); i++)
迭代器訪問 for(vector<int>::iterator it = vi.begin(); it != vi.end(); it++)
看完了兩種遍歷方式想必你一定知道我推薦的是哪一種訪問方式了,沒錯就是下標(biāo)訪問。 常用函數(shù): push_back(x) 在vector后面添加一個元素x,時間復(fù)雜度O(1)。 pop_back() 刪除vector的尾元素,O(1)。 size() 獲取vector中元素的個數(shù)。 clear() 清空vector中的所有元素,O(N)。 insert(it,x) 向vector的it迭代器處插入一個元素x,O(N)。 例如,vi.insert(vi.begin()+2,-1); 將-1插入到vi[2]的位置上。 (1)erase(it) 刪除迭代器it處的元素,O(N)。 (2)erase(first,last) 刪除[first,last)內(nèi)所有的元素,O(N)。 例如,vi.erase(vi.beegin()+1,vi.begin()+4); 刪除vi[1],vi[2],vi[3].
|