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

      

  • 相关阅读:
    细菌觅食优化算法
    windows文件名编码格式测试结果及猜想
    Exception
    maven创建web项目注意事项
    Majaro安装卡在Fixing hardcoded icons原因
    gnome更改ibus输入法候选词字体大小
    MariaDB用zip包安装
    JAVA获取时间戳
    自增不连续解决方案
    WEB项目目录结构
  • 原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/11221367.html
Copyright © 2020-2023  润新知