Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 复制二维数组_C++_Arrays - Fatal编程技术网

C++ 复制二维数组

C++ 复制二维数组,c++,arrays,C++,Arrays,您好,我正在尝试使用std::copy()函数复制二维数组。我想知道是否有可能这样做!我不断得到一个“分段错误”,但数组复制正确。我尝试过在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(m

您好,我正在尝试使用std::copy()函数复制二维数组。我想知道是否有可能这样做!我不断得到一个“分段错误”,但数组复制正确。我尝试过在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);
很明显,“myint+rows*columns”是不正确的,结果表明该值对应于整行,因此“myint+rows*columns=1”意味着它将复制整个第一行。如果“myint+rows*columns=2”,它会复制前两行等。有人能给我解释一下这个操作吗

std::copy(myint, myint+rows*columns,favint);
应该是:

std::copy(&myint[0][0], &myint[0][0]+rows*columns,&favint[0][0]);
std::copy的原型

template< class InputIt, class OutputIt >
OutputIt copy( InputIt first, InputIt last, OutputIt d_first );
模板<类输入,类输出>
输出副本(先输入,后输入,先输出);

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

这段代码在我的机器上运行得非常好。你确定是这部分代码导致了分段错误吗?@Mahesh区别在于myint是指向myint[0][0]的指针,&myint[0][0]是指向myint[0][0]的指针。差别很大。@lulyon他们是一样的。二维数组也被解析为指向第一个元素的指针。@texasbruce否。二维数组被解析为指向以第一个元素开头的第一个一维数组的指针。@lulyon
cout@texasbruce
myint
本身不是指针;它在传递给函数(或分配给指针)后转换为指针。