std :: copy二维数组

Mat*_*att 9 c++ arrays

您好我正在尝试使用std :: copy()函数来复制二维数组.我想知道是否有可能这样做!我一直收到"分段错误",但数组被正确复制.我已经尝试减去一些并在复制功能的最后一个案例中添加一些,但没有成功.

    const int rows = 3;
    const int columns = 3;
    int myint[rows][columns]={{1,2,3},{4,5,6},{7,8,9}};
    int favint[rows][columns];
    std::copy(myint, myint+rows*columns,favint);
Run Code Online (Sandbox Code Playgroud)

很明显,"myint + rows*columns"不正确,事实证明这个值对应于整行,"myint + rows*columns = 1"意味着它将复制整个第一行.如果"myint + rows*columns = 2"它会复制前两行等.有人可以为我解释这个操作吗?

lul*_*yon 26

std::copy(myint, myint+rows*columns,favint);
Run Code Online (Sandbox Code Playgroud)

应该:

std::copy(&myint[0][0], &myint[0][0]+rows*columns,&favint[0][0]);
Run Code Online (Sandbox Code Playgroud)

原型std::copy:

template< class InputIt, class OutputIt >
OutputIt copy( InputIt first, InputIt last, OutputIt d_first );
Run Code Online (Sandbox Code Playgroud)

请注意,指向数组元素的指针可以作为迭代器包装.