c++中vector向量幾種情況的總結(向量指針,指針的向量)


1.標准庫vector類型
vector 是同一種類型的對象的集合,每個對象都有一個對應的整數索引值。標准庫將負責管理與存儲元素相關的內存。我們把 vector 稱為容器,是因為它可以包含其他對象。一個容器中的所有對象都必須是同一種類型的。 
用 vector之前,必須包含相應的頭文件。

#include <vector>
1
using std::vector; 
vector 是一個類模板(class template)。使用模板可以編寫一個類定義或函數定義,而用於多個不同的數據類型。因此,我們可以定義保存 string 對象的 vector,或保存 int 值的 vector,又或是保存自定義的類類型對象vector。使用類模板時只需要簡單了解類模板是如何定義的就可以了。聲明從類模板產生的某種類型的對象,需要提供附加信息,信息的種類取決於模板。以 vector 為例,必須說明 vector 保存何種對象的類型,通過將類型放在類模板名稱后面的尖括號中來指定類型:

vector<int> ivec; // ivec holdsobjects of type int
vector<Sales_item> Sales_vec; //holds Sales_items
1
2
注意:和其他變量定義一樣(作為定義變量看待,如 int a;float b;),定義 vector 對象要指定類型和一個變量的列表。上面的第一個定義,類型是vector(相當於int,或double),該類型即是含有若干 int 類型對象的 vector,變量名為 ivec(相當於a,b)。第二個定義的變量名是 Sales_vec,它所保存的元素 是 Sales_item 類型的對象。即, 
定義方法為:vector<類型> 名稱 
vector<類型> :作為一個整體,是類型,相當於int,float。 
名稱 相當於變量的名字,a,b。 
則以下幾種都是成立的

vector<int> k;//向量
vector<int*>kk;//int指針的向量,以后再詳細斟酌
vector<int>*kkk;//vector向量指針
vector<int*>*kkkk;//int指針的向量指針(對比int*p理解,指針變量前面的“*”表示該變量的類型為指針變量,p是指針變量名,而不是*p)
vector 不是一種數據類型,而只是一個類模板,可用來定義任意多種數據類型。vector 類型的每一種都指定了其保存元素的類型。因此,vector<int> 和 vector<string> 都是數據類型。

2.Vector向量幾種情況的總結
**1)  vector<int>k;//向量**
1
#include<iostream>  
#include<vector>  
using namespace std;  
int main()  
{  
    vector<int> k;  
    for (int j = 0; j<12; j++)  
    {  
        k.push_back(j);//向kk中追加值  
    }  
    for (int j = 0; j<12; j++)  
    {  
        cout <<k[j] << " ";  
    }  
    system("pause");  
    return 0;  
}  
**2)vector <vector> kk;//int指針的向量**
#include<iostream>  
#include<vector>  
using namespace std;  
int main()  
{  
    vector<int*> k;  
    int *p = new int[15];  
    for (int j = 0; j<15; j++)  
    {  
        p[j] = j;  
        k.push_back(&p[j]);  
    }  
    for (int i = 0; i < 15;i++)  
    {  
        cout << *k[i]<< " ";//因為向量容器里面都是int型的指針變量,  
    }                           //所以值都是指針,所以需要間接訪問運算符*  
    delete[]p;  
    system("pause");  
    return 0;  
}  

**3) vector<int> *kkk;//vector向量指針**
1
#include<iostream>  
#include<vector>  
using namespace std;  
int main()  
{  
    vector<int> *k;//vector向量指針  
    k = new vector<int>[5];  
    //相當於int *p = new int[5];即vector<int> *kkk=new vector<int>[5];  
    for (int i = 0; i<5; i++)  
    {  
        for (int j = 0; j<10; j++)  
        {  
            k[i].push_back(j);//像向量指針中追加值  
        }  
    }  
    for (int i = 0; i<5; i++)  
    {  
        for (int j = 0; j < k[i].size(); j++)  
            cout <<  k[i][j] << "  ";  
        cout << endl;  
    }  
    delete[] k;  
    system("pause");  
}  

**4)vector<int*> *kkkk;//int指針的向量指針**
[cpp] view plain copy
#include<iostream>  
#include<vector>  
using namespace std;  
int main()  
{  
    vector<int*> *k;//int指針的向量指針  
    k = new vector<int*>[5];  
    int *p = new int[10];  
    for (int i = 0; i < 5; i++)  
    {  
        for (int j = 0; j < 10; j++)  
        {  
            p[j] = j;  
            k[i].push_back(&p[j]);  
        }  
    }  
    for (int i = 0; i < 5; i++)  
    {  
        for (int j = 0; j < 10; j++)  
        {  
            cout<<*k[i][j]<<"  ";  
        }  
        cout << endl;  
    }  
    delete[]p;  
    delete[]k;  
    system("pause");  
}  

  


免責聲明!

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



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