vector构建二维数组

1 初始化

  1. 用push_back初始化
vector<vector<int>> ve;

vector<int> a;
a.push_back(1);
a.push_back(2);
a.push_back(3);

vector<int> b;
b.push_back(4);
b.push_back(5);
b.push_back(6);

ve.push_back(a);
ve.push_back(b);
  1. 先定义二维数组结构,再赋值
int i,j;
vector<vector<int>> array(10);//这是一个10行x列的,一定要有这个
for (i = 0; i < array.size(); i++)
    array[i].resize(3);//确定列数

for(i = 0; i < array.size(); i++)//遍历行
{
    for (j = 0; j < array[0].size();j++)
    {
        array[i][j] = (i+1)*(j+1);
    }
}

2 遍历

  1. 利用迭代器遍历
void reverse_with_iterator(vector<vector<int>> vec)
{
    if (vec.empty())
    {
        cout << "The vector is empty!" << endl;
        return;
    }

    vector<int>::iterator it;//这才是里层,因为每个迭代器指向的是一个int型
    vector<vector<int>>::iterator iter;//这是外层,迭代器指向的是vector<int>型
    vector<int> vec_tmp;

    cout << "Use iterator : " << endl;
    for(iter = vec.begin(); iter != vec.end(); iter++)
    {
        vec_tmp = *iter;
        for(it = vec_tmp.begin(); it != vec_tmp.end(); it++)
            cout << *it << " ";
        cout << endl;
    }
}
  1. 利用行列直接遍历,当成一个二维数组
void reverse_with_index(vector<vector<int>> vec)
{
    if (vec.empty())
    {
        cout << "The vector is empty!" << endl;
        return;
    }

    int i,j;
    cout << "Use index : " << endl;
    for (i = 0; i < vec.size(); i++)
    {
        for(j = 0; j < vec[0].size(); j++)
            cout << vec[i][j] << " ";
        cout << endl;
    }
}