C++ 复制二维数组
您好,我正在尝试使用std::copy()函数复制二维数组。我想知道是否有可能这样做!我不断得到一个“分段错误”,但数组复制正确。我尝试过在copy函数的结尾处减去一些,再加上一些,但没有成功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
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@texasbrucemyint
本身不是指针;它在传递给函数(或分配给指针)后转换为指针。