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");  
}  

  

posted @ 2019-07-21 15:38  wdliming  阅读(10346)  评论(0编辑  收藏  举报