用C++里面的copy函数,如何将一个二维数组S1复制到S2去

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C++里面的copy函数,如何将一个二维数组S1复制到S2去相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
#include<stdlib.h>
#define MAX_COL 3
#define MAX_ROW 4
void print(int * p,int iRow,int iCol)

int iR,iC;
printf("\\n");
for(iR=0;iR<iRow;iR++)
 
 for(iC=0;iC<iCol;iC++)
  
  printf("%d\\t",*p);
  p++;
  
 printf("\\n");
 

void copy(int * pd,int * ps,int iSize)

int i;
for(i=0;i<iSize;i++)*pd++=*ps++;

void main()

int s1[MAX_ROW][MAX_COL],s2[MAX_ROW][MAX_COL];
int i,*p;
p=(int *)s1;
for(i=0;i<MAX_COL*MAX_ROW;i++)*p++=rand();
print((int *)s1,MAX_ROW,MAX_COL);
copy((int *)s2,(int *)s1,MAX_ROW*MAX_COL);
print((int *)s2,MAX_ROW,MAX_COL);

 

xoaxa兄也不错,提醒楼主,使用指针是可以考结构体的,要是你老实巴交的写,非累死不可。

参考技术A

这个容易啊, 就是std::copy(s1, s1+size, s2); 其中的size就是数据的长度,二维数组就是一个矩阵,size就是行x列。 给出一个简单的例子:

#include <iostream>
#include <iterator>
#include <algorithm>
using namespace std;
const int ROW = 3;
const int COL = 5;
int main(int argc, char** argv)

    int s1[ROW][COL] =
        10,11,12,13,14,
        20,21,22,23,24,
        30,31,32,33,34,
           
    ;
    int s2[ROW][COL];
       
    fill (&s2[0][0], &s2[0][0]+sizeof(s2)/sizeof(s2[0][0]),0);
              
    copy (s1,s1+ROW*COL, s2);   
    for (int i = 0; i < ROW; i ++)
       
         copy(s2[i], s2[i]+COL, ostream_iterator<int>(cout, " "));
         cout << endl;
    
       
    return 0;

参考技术B

/*

  824  932  724  701  965
  976  460  839  831  285
  798  356  527  404   63
  583  617  196   82   66
  734  477  481  189  812

 

  824  932  724  701  965
  976  460  839  831  285
  798  356  527  404   63
  583  617  196   82   66
  734  477  481  189  812

Press any key to continue

*/

#include &lt;iostream&gt;
#include &lt;cstdlib&gt;
#include &lt;ctime&gt;
using namespace std;
#define N 5
#define M 5
void ArrCopy(int a[][N], int b[][N],int m)
memcpy((char *)b, (char *)a, m * N * sizeof(int));

void Show(int a[][N],int m)
for(int i = 0; i &lt; m; ++i)
for(int j = 0; j &lt; N; ++j)
cout.width(5);
cout &lt;&lt; a[i][j];

cout &lt;&lt; endl;

cout &lt;&lt; endl;

int main()
int a[M][N],b[M][N];
srand((unsigned)time(NULL));
for(int i = 0; i &lt; M; ++i)
for(int j = 0; j &lt; N; ++j)
a[i][j] = rand()%1000;
Show(a,M);
ArrCopy(a,b,M);
Show(b,M);
return 0;

参考技术C #include<stdio.h>
#include<stdlib.h>
#define MAX_COL 3
#define MAX_ROW 4
void print(int * p,int iRow,int iCol)

int iR,iC;
printf("\n");
for(iR=0;iR<iRow;iR++)

for(iC=0;iC<iCol;iC++)

printf("%d\t",*p);
p++;

printf("\n");


void copy(int * pd,int * ps,int iSize)

int i;
for(i=0;i<iSize;i++)*pd++=*ps++;

void main()

int s1[MAX_ROW][MAX_COL],s2[MAX_ROW][MAX_COL];
int i,*p;
p=(int *)s1;
for(i=0;i<MAX_COL*MAX_ROW;i++)*p++=rand();
print((int *)s1,MAX_ROW,MAX_COL);
copy((int *)s2,(int *)s1,MAX_ROW*MAX_COL);
print((int *)s2,MAX_ROW,MAX_COL);
参考技术D c++里不用copy,strcpy(s1,s2);

以上是关于用C++里面的copy函数,如何将一个二维数组S1复制到S2去的主要内容,如果未能解决你的问题,请参考以下文章

如何将 numpy 二维数组作为一种可以用 C++ 读取的二进制格式存储到磁盘上

我们如何在 C++ 中将二维数组/向量作为函数参数传递? [复制]

如何将 C# 中的二维数组传递给 C++ DLL?

将二维数组传递给 C++ 函数

无法将二维数组传递给 C++ 中的辅助函数

c++ 用户输入 2个值 定义二维数组 但是报错