您好,我正在尝试使用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的原型(prototype):
template< class InputIt, class OutputIt >
OutputIt copy( InputIt first, InputIt last, OutputIt d_first );

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

关于c++ - std::copy二维数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18709577/

10-11 23:11