vectorios
特色:數組
1.可變長的動態數組
2.使用時包含頭文件 #include
3.支持隨機訪問迭代器
• 根據下標隨機訪問某個元素時間爲常數
• 在尾部添加速度很快
• 在中間插入慢
成員函數spa
初始化code
[cpp] view plaincopy 01.vector(); 初始化成空 02.vector(int n); 初始化成有n個元素 03.vector(int n, const T & val); 初始化成有n個元素, 每一個元素的值都是val,類型是T 04.vector(iterator first, iterator last); 初始化爲與別的容器上區間[first, last)一致的內容
舉例:對象
1.建立一個int類型的空的vector對象:ci
vector<int> intvec;
2.建立一個包含5個int類型數據的vector:it
vector<int> intvec(5);
3.建立一個包含5個int類型數據的vector,而且都初始化爲2:io
vector
4.經過複製某vec容器來建立
vector
元素的訪問
intvec.at(index)
返回由index指定的位置上的元素
intvec[index]
返回由index指定的位置上的元素
舉例:
[cpp] view plaincopy 01.include <iostream> 02.#include <vector> 03.using namespace std; 04.int main() 05.{ 06. vector<int> vec(10); 07. for (int i = 0;i != vec.size();i++) 08. { 09. vec.at(i) = i; 10. //vec[i] = i ; 11. } 12. 13. for (int i = 0;i != vec.size();i++) 14. { 15. cout << vec.at(i)<<endl; 16. //cout <<vec[i]<<endl; 17. } 18. 19. 20. 21. 22. return 0; 23.}
容器的大小
表達式
做用
intvec.capacity()
返回不從新分配空間能夠插入到容器intvec中的元素的最大個數
intvec.empty()
容器intvec爲空,返回true;不然,返回false
Intvec.size()
返回容器intvec中當前的個數
intvec.resize(num)
將元素個數改成num。若是size()增長,默認的構造函數負責建立這些新元素
intvec.resize(num, elem)
將元素個數改成num。若是size()增長,默認的構造函數將這些新元素初始化爲elem
舉例:
[cpp] view plaincopy 01.#include <iostream> 02.#include <vector> 03.using namespace std; 04.int main() 05.{ 06. vector<int> vec1; 07. cout << vec1.empty()<<endl; //返回1 08. cout << vec1.size()<<endl; //返回0 09. 10. vector<int> vec2(20); 11. cout << vec2.empty()<<endl; //返回0 12. cout << vec2.size()<<endl; //返回20 13. 14. vector<int> vec3(15,1); 15. cout << vec3.capacity()<<endl;//返回15 16. vec3.push_back(1); 17. cout << vec3.size()<<endl; //返回16 18. cout << vec3.capacity()<<endl;//返回30 19. //數組不夠時,下次從新分配時會擴大爲兩倍 20. 21. return 0; 22.}
容器的操做
語句
做用 intvec.clear()
從容器中刪除全部元素
intvec.erase(position)
刪除由position指定的位置上的元素
intvec.erase(beg,end)
刪除從beg到end-1之間的全部元素
intvec.insert(position, elem)
將elem的一個拷貝插入到由position指定的位置上,並返回新元素的位置
intvec.inser(position, n, elem)
將elem的n個拷貝插入到由 position指定的位置上
intvec.insert(position, beg, end)
將從beg到end-1之間的全部元素的拷貝插入到intvec中由position指定的位置上
intvec.push_back(elem)
將elem的一個拷貝插入到vector的末尾
intvec.pop_back()
刪除最後元素
intvec.front()
返回第一個元素的引用,不檢查容器是否爲空
Intvec.back()
返回最後一個元素的引用,不檢查容器是否爲空
[cpp] view plaincopy 01.#include <iostream> 02.#include <vector> 03.using namespace std; 04.int main() 05.{ 06. vector<int> vec(10,1); 07. cout<<vec.empty()<<endl; //返回0 08. vec.clear(); 09. cout<<vec.empty()<<endl; //返回1 10. 11. vector<int> vec1(1,1); 12. vec1.insert(vec1.begin()+1,2); //在該位置插入,把原來該位置以其之後的元素總體後移 13. for(int i = 0;i != vec1.size();i++) 14. cout<<vec1.at(i); //12 15. cout<<endl; 16. 17. vec1.push_back(3); 18. for(int i = 0;i != vec1.size();i++) 19. cout<<vec1.at(i); //123 20. cout<<endl; 21. 22. vec1.pop_back(); 23. vec1.pop_back(); 24. for(int i = 0;i != vec1.size();i++) 25. cout<<vec1.at(i); //1 26. cout<<endl; 27. 28. return 0; 29.} [cpp] view plaincopy 01.#include <iostream> 02.#include <vector> 03.using namespace std; 04.int main() 05.{ 06. vector<int> vec(10,1); 07. vec.push_back(2);//12 08. 09. cout<<vec.front()<<endl; //返回1 10. cout<<vec.back()<<endl; //返回2 11. 12. int &head = vec.front(); 13. head++; 14. int &tail = vec.back(); 15. tail--; 16. cout<<vec.front()<<endl; //返回2 17. cout<<vec.back()<<endl; //返回1 18. 19. return 0; 20.}
二維數組
vector< vector<int> > v(3);
//v有3個元素,
//每一個元素都是vector
[cpp] view plaincopy 01.#include <iostream> 02.#include <vector> 03.using namespace std; 04.int main() { 05. vector< vector<int> > v(3); 06. for(int i=0; i<v.size(); ++i) 07. for(int j=0; j<4; ++j) 08. v[i].push_back(j); 09. for(int i=0; i<v.size(); ++i){ 10. for(int j=0; j<v[i].size(); ++j) 11. cout<<v[i][j]<<" "; 12. cout<<endl; 13. } 14. return 0; 15.}
輸出:
0 1 2 3
0 1 2 3
0 1 2 3