C++ STL的學習從vector入手,,但是在正式使用STL的內(nèi)容之前,要先在主函數(shù)前添加一句 using namespace std;
它的作用就是定義標示符,,如果不加上這句代碼就要在每句使用C++標準程序庫的任何標識符時加上“std::”了,。 比如說 std::string s = 'Hellow World!'; std::cout<<s<<std::endl;
如果主函數(shù)前加上了using namespace std;的話,這樣就好了 string s = 'Hellow World!'; cout<<s<<endl;
怎么樣比剛才好多了吧,,所以不要偷懶,,凡是要用到C++標準程序庫的任何標識符,都要先加上這一句代碼,。 說了這么多,,現(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;) 下標訪問 vi[0],、vi[1],這與一維數(shù)組的訪問方式極像,。 通過迭代器訪問,。 vi.begin()和vi[0]是等價的;vi.begin()+4和vi[4]也是等價的,。
遍歷: 下標訪問 for(int i = 0; i < vi.size(); i++)
迭代器訪問 for(vector<int>::iterator it = vi.begin(); it != vi.end(); it++)
看完了兩種遍歷方式想必你一定知道我推薦的是哪一種訪問方式了,,沒錯就是下標訪問。 常用函數(shù): push_back(x) 在vector后面添加一個元素x,時間復雜度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].
|