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