初探STL容器之Vector

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 intvec(5, int(2)); ast

4.經過複製某vec容器來建立

vector intvec(vec.begin+M,vec.begin+N)

元素的訪問

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

相關文章
相關標籤/搜索