用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 <iostream>#include <cstdlib>
#include <ctime>
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 < m; ++i)
for(int j = 0; j < N; ++j)
cout.width(5);
cout << a[i][j];
cout << endl;
cout << endl;
int main()
int a[M][N],b[M][N];
srand((unsigned)time(NULL));
for(int i = 0; i < M; ++i)
for(int j = 0; j < 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++ 读取的二进制格式存储到磁盘上