c++ - 将 vector 复制到数组?

标签 c++ arrays vector

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

将 2dim 数组复制到 2dim vector :

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

}

输出:

path2[0][6,0,2,6]
path2[1][6,1,3,6]

将 2dim vector 复制到 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];

问题是我不确定复制部分,而且我不知道如何定义每个 vector 大小的大小?

最佳答案

您可以执行以下任何操作来迭代 vector 的 vector :

//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++ - 将 vector 复制到数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22900279/

相关文章:

c++ - C++中的函数与变量声明

java - 如何在二维矩阵中找到成本最低的路径

python - 通过url从python访问json元素

c++ - 可以将对象从 vector A 移动到 vector B,但不能从 B 移动到 A?

c++ - 创建一个编译时键到类型映射,通过调用可变参数函数来填充

c++ - 多线程没有提高递归C++程序的性能

C++ 使用 Winsock 写入/读取套接字

c# - 如何在 C# 中将数组作为未知类型的参数传递?

C++ std::transform vector of pairs->first to new vector

c++ - 如何使用 C++ 以二进制模式将 vector 写入文件?