c++基礎之向量Vector


首先和string一樣要在開頭

#include <vector>
#include <string>

和string一樣,也算是一種容器,而且同屬於STL(standard template library)里的好基友

1.初始化向量

        vector<int> a ;                                //聲明一個int型向量a
        vector<int> a(10) ;                            //聲明一個初始大小為10的向量
        vector<int> a(10, 1) ;                         //聲明一個初始大小為10且初始值都為1的向量
        vector<int> b(a) ;                             //聲明並用向量a初始化向量b
        vector<int> b(a.begin(), a.begin()+3) ;        //將a向量中從第0個到第2個(共3個)作為向量b的初始值

也可以用數組來初始化向量

        int n[] = {1, 2, 3, 4, 5} ;
        vector<int> a(n, n+5) ;              //將數組n的前5個元素作為向量a的初值
        vector<int> a(&n[1], &n[4]) ;        //將n[1] - n[4]范圍內的元素作為向量a的初值

2.向量元素的輸出和訪問

普通的

 1     #include<iostream>
 2     #include<vector>
 3 
 4     using namespace std ;
 5 
 6     int main()
 7     {
 8         vector<int> a(10, 0) ;      //大小為10初值為0的向量a
 9 
10         //對其中部分元素進行輸入
11         cin >>a[2] ;
12         cin >>a[5] ;
13         cin >>a[6] ;
14 
15         //全部輸出
16         int i ;
17         for(i=0; i<a.size(); i++)
18             cout<<a[i]<<" " ;
19 
20         return 0 ;
21     }

在輸出上,還可以使用迭代器,類似城管一樣,一個一個不漏地弄出來vector里面的元素

比如在這種申明形式下

vector <int> a(b.begin(),b.begin()+3);

中,可以使用城管iterator

    //全部輸出
    vector<int>::iterator t ;
    for(t=a.begin(); t!=a.end(); t++)
        cout<<*t<<" " ;

3.向量的基本操作

    1>. a.size()                 //獲取向量中的元素個數


    2>. a.empty()                //判斷向量是否為空


    3>. a.clear()                //清空向量中的元素


    4>. 復制
        a = b ;            //將b向量復制到a向量中


    5>. 比較
        保持 ==、!=、>、>=、<、<= 的慣有含義 ;
        如: a == b ;    //a向量與b向量比較, 相等則返回1


    6>. 插入 - insert
        ①、 a.insert(a.begin(), 1000);            //將1000插入到向量a的起始位置前
        
        ②、 a.insert(a.begin(), 3, 1000) ;        //將1000分別插入到向量元素位置的0-2處(共3個元素)
        
        ③、 vector<int> a(5, 1) ;
            vector<int> b(10) ;
            b.insert(b.begin(), a.begin(), a.end()) ;        //將a.begin(), a.end()之間的全部元素插入到b.begin()前


    7>. 刪除 - erase
        ①、 b.erase(b.begin()) ;                     //將起始位置的元素刪除
        ②、 b.erase(b.begin(), b.begin()+3) ;        //將(b.begin(), b.begin()+3)之間的元素刪除


    8>. 交換 - swap
        b.swap(a) ;            //a向量與b向量進行交換

4.二維向量

vector< vector<int> > b(10, vector<int>(5));        //創建一個10*5的int型二維向量

輸入輸出的方式

 8         vector< vector<int> > b(10, vector<int>(5, 0)) ;
 9 
10         //對部分數據進行輸入
11         cin>>b[1][1] ;
12         cin>>b[2][2] ;
13         cin>>b[3][3];
14 
15         //全部輸出
16         int m, n ;
17         for(m=0; m<b.size(); m++)           //b.size()獲取行向量的大小
18         {
19             for(n=0; n<b[m].size(); n++)    //獲取向量中具體每個向量的大小
20                 cout<<b[m][n]<<" " ;
21             cout<<"\n" ;
22         }
23 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM