C++ 将向量复制到数组?

C++ 将向量复制到数组?,c++,arrays,vector,C++,Arrays,Vector,我将一个2dim数组复制到一个2dim向量中,并对其进行了一些修改,现在我想知道如何将一个2dim向量复制到一个2dim数组中?(我做了如下操作:) 将2dim数组复制到2dim向量: vector< vector<int>> path2; vector<int> temp; // For simplicity for (int x = 0; x <= 1; x++) {temp.clear(); for (int y = 0; y <

我将一个2dim数组复制到一个2dim向量中,并对其进行了一些修改,现在我想知道如何将一个2dim向量复制到一个2dim数组中?(我做了如下操作:)

将2dim数组复制到2dim向量:

vector< vector<int>> path2;
 vector<int> temp; // For simplicity
 for (int x = 0; x <= 1; x++)
{temp.clear();
    for (int y = 0; y < 4; y++)
    {
        temp.push_back(path1[x][y]);
    }
    path2.push_back(temp);

}
将2dim向量复制到2dim数组

int arr [4][10] ;
 copy(path3.begin(), path3.end(), arr);
打印arr

 for (int i=0;i< ???? ;i++)// how to define size of the vector first dimention which is 2 ( i am aware about size() for 1 dim vector, but for 2dim vector ...... ??????????
     for(int j=0;j<?????; j++) //same prolem as above
         cout<<endl<<arr[i][j];
for(int i=0;i<??;i++)//如何定义向量第一维度的大小,即2(我知道1维向量的大小(),但对于2维向量??????????

对于(int j=0;j,您可以执行以下任一操作来迭代向量的向量:

//Works for C++11
std::vector<std::vector<int>> vec;
for(auto &i : vec)
   for(auto &j : i)
      std::cout << j << std::endl;

//Works for C++11
for (auto iter = vec.cbegin(); iter != vec.cend(); ++iter)
    for(auto sub_iter = iter->cbegin(); sub_iter != iter->cend(); ++sub_iter)
       std::cout << *sub_iter << std::endl;

//Works for C++03 and C++11
typedef std::vector<std::vector<int> >::iterator Iter;
typedef std::vector<int>::iterator Sub_Iter;
for (Iter iter = vec.begin(); iter != vec.end(); ++iter)
    for(Sub_Iter sub_iter = iter->begin(); sub_iter != iter->end(); ++sub_iter)
       std::cout << *sub_iter << std::endl;


//works for C++03 and C++11
for(int i = 0; i<vec.size(); ++i)
    for(int j = 0; j < vec[i].size(); ++j)
       std::cout << vec[i][j] << std::endl;
//适用于C++11
std::vec;
用于(自动和输入:vec)
对于(auto&j:i)
标准::cout cend();++sub_iter)
std::cout end();++sub_iter)

std::cout您可以执行以下任一操作来迭代向量的向量:

//Works for C++11
std::vector<std::vector<int>> vec;
for(auto &i : vec)
   for(auto &j : i)
      std::cout << j << std::endl;

//Works for C++11
for (auto iter = vec.cbegin(); iter != vec.cend(); ++iter)
    for(auto sub_iter = iter->cbegin(); sub_iter != iter->cend(); ++sub_iter)
       std::cout << *sub_iter << std::endl;

//Works for C++03 and C++11
typedef std::vector<std::vector<int> >::iterator Iter;
typedef std::vector<int>::iterator Sub_Iter;
for (Iter iter = vec.begin(); iter != vec.end(); ++iter)
    for(Sub_Iter sub_iter = iter->begin(); sub_iter != iter->end(); ++sub_iter)
       std::cout << *sub_iter << std::endl;


//works for C++03 and C++11
for(int i = 0; i<vec.size(); ++i)
    for(int j = 0; j < vec[i].size(); ++j)
       std::cout << vec[i][j] << std::endl;
//适用于C++11
std::vec;
用于(自动和输入:vec)
对于(auto&j:i)
std::cout cend()++分包商(iter)
std::cout end()++分包商(iter)

现在是时候退一步确定一些答案了。向量可以通过
[]
操作符以及许多其他功能和内置成员函数随机访问。当您可以使用迭代器和/或根据需要/需要使用
size
成员函数打印向量内容时,转换回更基本的数组的原因是什么?如果使用中的编译器支持C++11标准,则即使是C++11
范围内的
自动
关键字也可以使用。@cpluplusooaand公平地说,即使是C样式数组也可以在
范围内用于
循环。@Jeffrey不基于范围的require begin()和end()@Paranaix std::begin()和std::end()使用C风格的数组。除非在过去17年中发生了根本性的变化,
std::vector::size()
以恒定时间运行。@user3493289在下面的答案中所写的最后一个示例使用了
size()
函数。是时候退一步确定一些答案了。向量可以通过
[]
操作符以及许多其他功能和内置成员函数随机访问。当您可以使用迭代器和/或根据需要/需要使用
size
成员函数打印向量内容时,转换回更基本的数组的原因是什么?如果使用中的编译器支持C++11标准,则即使是C++11
范围内的
自动
关键字也可以使用。@cpluplusooaand公平地说,即使是C样式数组也可以在
范围内用于
循环。@Jeffrey不基于范围的require begin()和end()@Paranaix std::begin()和std::end()使用C风格的数组。除非在过去17年中发生了根本性的变化,
std::vector::size()
以恒定时间运行。@user3493289在下面的答案中所写的最后一个示例使用了
size()
函数。