C++中vertor的用法

來源:互聯網
上載者:User

C++
內建的數組支援容器的機制,但是它不支援容器抽象的語義。要解決此問題我們自己實現這樣的類。在標準C++中,用容器向量(vector)實現。容器向量
也是一個類模板。
標準庫vector類型使用需要的標頭檔:#include <vector>。vector
是一個類模板。不是一種資料類型,vector<int>是一種資料類型。Vector的儲存空間是連續的,list
不是連續儲存的

一、 定義和初始化



vector< typeName > v1;       //預設v1為空白,故下面的賦值是錯誤的v1[0]=5;
vector<typeName>v2(v1); 或v2=v1;或vector<typeName>
v2(v1.begin(),
v1.end());//v2是v1的一個副本,若v1.size()>v2.size()則賦值後v2.size()被擴充為
v1.size()。
vector< typeName > v3(n,i);//v3包含n個值為i的typeName類型元素
vector< typeName > v4(n); //v4含有n個值為0的元素
int a[4]={0,1,2,3,3}; vector<int>
v5(a,a+5);//v5的size為5,v5被初始化為a的5個值。後一個指標要指向將被拷貝的末元素的下一位置。
vector<int> v6(v5);//v6是v5的拷貝
vector< 類型 > 標識符(最大容量,初始所有值);

二、 值初始化


1>     如果沒有指定元素初始化式,標準庫自行提供一個初始化值進行值初始化。
2>     如果儲存的式含有建構函式的類類型的元素,標準庫使用該類型的建構函式初始化。
3>     如果儲存的式沒有建構函式的類類型的元素,標準庫產生一個帶初始值的對象,使用這個對象進行值初始化。
      三、vector對象最重要的幾種操作


1. v.push_back(t)
   
在容器的最後添加一個值為t的資料,容器的size變大。
                     另外list有push_front()函數,在前端插入,後面的元素下標依次增大。
2. v.size()
       
返回容器中資料的個數,size返回相應vector類定義的size_type的值。v.resize(2*v.size)
或                   

v.resize(2*v.size, 99)
將v的容量翻倍(並把新元素的值初始化為99)
3. v.empty()
     判斷vector是否為空白
4. v[n]
           返回v中位置為n的元素
5. v.insert
(pointer,number, content)   
向v中pointer指向的位置插入number個content的內容。
                  還有v. insert(pointer,
content),v.insert(pointer,a[2],a[4])將a[2]到a[4]三個元素插入。
6. v.pop_back()
    刪除容器的末元素,並不返回該元素。
7.v.erase(pointer1,pointer2)

刪除pointer1到pointer2中間(包括pointer1所指)的元素。
                   vector中刪除一個元素後,此位置以後的元素都需要往前移動一個位置,雖然當前迭代器位置沒有自動加1,
                   但是由於後續元素的順次前移,也就相當於迭代器的自動指向下一個位置一樣。
8. v1==v2          判斷v1與v2是否相等。
9. !=、<、<=、>、>=      保持這些操作符慣有含義。
10. vector<typeName>::iterator

p=v1.begin( ); p初始值指向v1的第一個元素。*p取所指向元素的值。
                    對於const
vector<typeName>只能用vector<typeName>::const_iterator類型的指標訪問。
11.   p=v1.end( );
p指向v1的最後一個元素的下一位置。
12.v.clear()
     
刪除容器中的所有元素。12.v.clear()      刪除容器中的所有元素。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.