C++ 将向量复制到数组?
我将一个2dim数组复制到一个2dim向量中,并对其进行了一些修改,现在我想知道如何将一个2dim向量复制到一个2dim数组中?(我做了如下操作:) 将2dim数组复制到2dim向量: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 <
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()
函数。