关于C++中vector<vector<int>>的个人理解

标准库模型vector表示对象的集合,其中所有对象的类型都相同。集合中每个对象都有一个与之对应索引,索引用于访问对象。

注:vector是模板而非类型,由vector生成的类型必须包含vector中元素的类型,如vector< int>

本文就自己对vector< vector< int>>的个人理解进行分享,不当之处欢迎大家指正。

这里有两种方法对vector< vector< int>>进行赋值:
1、采用vector模板中的方法push_back()

#include<iostream>
#include<vector> 
using namespace std;

int main()
{
    //array用来保存一个3*3的二维数组,array的每个元素都是vector<int>类型
    vector <vector<int> >array;
    std::vector<int> v;
    for (int i = 0; i <3; i++){
        for (int j = 0; j <3; j++){
            int value;
            cin >> value;
            v.push_back(value);
        }
        array.push_back(v); //保存array的每个元素
        v.clear();
    }

    for (int i = 0; i <array.size(); i++)
    {
        for (int j = 0; j <3; j++)
            cout <<array[i][j];
        cout<<endl;
    }
    return 0;
}

2、用分配空间的resize()函数

#include<iostream>
#include<vector> 
using namespace std;

int main()
{
    vector <vector<int> >array(3);//首先给array开辟了三个空间
    for (int i = 0; i <3; i++){
        array[i].resize(3);//给array中每个元素开辟了三个空间
        for (int j = 0; j <3; j++){
            cin >> array[i][j];//直接对开辟的空间赋值即可
        }
    }
    for (int i = 0; i <array.size(); i++)
    {
        for (int j = 0; j <3; j++)
            cout <<array[i][j];
        cout<<endl;
    }
    cout << array.size();
    return 0;
}

示例结果

方法1中是首先确定一个vector< int>类型对象,然后把它push_back()到array中去;方法2是用开辟空间的函数resize(),这样能直接当作数组进行赋值。

猜你喜欢

转载自blog.csdn.net/yooliee/article/details/71498321