C++中vector容器所包含的一些方法

vector是一個能夠存放任意類型的動態數組,能夠增加和壓縮數據。使用vector 需要在頭文件中增加 #include <vector>

vector其實是一個模板,我們在使用時必須指定元素的類型,如聲明一個int類型的vector,

vector<int> test; //聲明一個int類型的vector叫test。

vector初始化:

  vector<int> test(10,-1); // test初始化爲含有10個元素值爲-1的vector容器。

  或  vector<int>  test={1,2,3,4};  //test含有元素爲1,2,3,4這4個元素,這是c++新的標準,有的編譯器可能不支持。

如何動態的添加元素到vector中呢?

1. push_back()  //  使用vector中的成員函數push_back()可以往vector中添加函數。長度不限。

可以通過下標修改、訪問指定位置的元素,如test[2]訪問vector中的第3個元素,與數組類似。

通過迭代器訪問修改vector中的元素,如

        vector<int>::iterator it;

        for(it=test.begin();it!=test.end();it++)     //vector中的begin()成員函數獲得第一個元素,end()獲得最後一個函數。

             cout<<*it<<"   ";    //  輸出vector中的所有元素。  這裏也可以修改元素的值 如 *it=10,將元素的值改爲10;

2. at(int index)  // 獲得指定下標的元素。  

3. size()  // 獲得vector的元素的個數。

4. empty()  // 判斷vector是否爲空,爲空返回true。

5. erase()   // 從指定容器刪除指定位置的元素或某段範圍內的元素,指向的是刪除元素的下一個元素。返回值是一個迭代器.

  特別注意:

  如vector中有: 3  10  10  6  9  15

一一遍歷容器找到元素值爲10,然後一一刪除

  1. for(Iter = v1.begin(); Iter != v1.end(); Iter++) 
  2.   if(*Iter == 10) 
  3.   { 
  4.       v1.erase(Iter); //這裏可能會出現錯誤(當調用erase()後Iter迭代器就失效了,變成了一野指針。)最好還是採用下面修改後的方式,
  5.   } 
  6. }
修改後的代碼爲:

  1. for(Iter = v1.begin(); Iter != v1.end(); Iter++) 
  2.   if(*Iter == 10) 
  3.   { 
  4.    Iter = v1.erase(Iter);//Iter爲刪除元素的下一個元素的迭代器
  5.   }
最後vector中的元素爲:3  10  6  9   15

注意:這裏只刪除了一個10,原因是erase函數返回的是刪除元素的下一個元素,然後這後面還有Iter++,所以就跳過了後面那個10.

  

 clear()     // 移除容器中所有數據。

pop_back()       // 刪除最後一個數據。

insert(pos,elem)    // 在pos位置插入一個elem拷貝,傳回新數據位置。

c1.swap(c2)
swap(c1,c2)        // 將c1和c2元素互換。

vector提供了erase(),pop_back(),clear()來刪除數據。


溫馨提示: 對於list刪除元素可以使用remove方法。

例子如下:  

   list<int> a;  

    a.push_back(1);  
    a.push_back(6);  
    a.push_back(3);  
    a.push_back(6);  
    a.push_back(6);  
    a.push_back(2);  
  
    list<int>::iterator itor;  
    a.remove(6);
    for(itor=a.begin();itor!=a.end();itor++)
cout<<*itor<<"  ";

顯示結果爲:1  3  2。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章