您好,我正在尝试使用 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);
很明显,“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 );
请注意,指向数组元素的指针可以作为迭代器进行包装。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)