分享

Vector<vector<int>> array用法(转载)

 昵称56522687 2018-10-12
这里简单叙述一下C++ 构建二维动态数组
int **p; p = new int*[10]; //注意,int*[10]表示一个有10个元素的指针数组 for (int i = 0; i < 10; ++i) { p[i] = new int[5]; }
1.初始化
1)利用Vector的push_back函数
vector<vector<int>> vec;

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

vec.push_back(a);
vec.push_back(b);
(2)先定义好二维数组结构,在直接赋值
//得到一个5行3列的数组
//由vector实现的二维数组,可以通过resize()的形式改变行、列值
int i, j;
vector<vector<int>> array(5);//定义1个行数为5列数不知道的 
for (i = 0; i < array.size(); i++)//array.size()数组的行数
array[i].resize(3);//定义数组的列数
for (i = 0; i < array.size(); i++)
{
for (j = 0; j < array[0].size(); j++)//array[0].size()数组的列数
{
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;
    vector<vector<int>>::iterator iter;
    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;
    }
}
(2)得到行、列大小,利用下标进行遍历
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;
    }
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多