안녕 하세요.
배열복사가 간단(?)한지 모르고 고민만 하고 있었는데, 자세한 설명에 쉽게 해결 했습니다.
조언주신대로 가능하면 STL이라는 좋은 라이브러리를 배우고 사용을 해야 겠습니다.
매번 도움을 받는것 같습니다.
감사 합니다.
빌더(TWx) 님이 쓰신 글 :
: 뽀뽀중 님이 쓰신 글 :
: : 안녕 하세요
: :
: : 2차원 배열에 값을 입력을 했습니다.
: :
: : extern const double LocalRain10011100[13][7] = {
: : {3.4077953380702100, -0.4172062608032810, -0.2544842221026490, 0.2605352901421380, -0.0904749288418016, 0.0117518648471070, -0.0004378879933264},
: : {3.5616190730326900, -0.4679660667983840, -0.1041131606928940, 0.1128474398409040, -0.0240968518989493, -0.0019777948070965, 0.0006217971171193},
: : {3.7206797454445800, -0.5173927579546190, 0.0665009051572054, -0.0486815860803121, 0.0439699830083067, -0.0152560761724678, 0.0015980087551537},
: : {3.9061541234799200, -0.5757250787303070, 0.2963040209215300, -0.2594266298450850, 0.1275764711289890, -0.0305867734904000, 0.0026622075081452},
: : {4.0722254136815300, -0.6313924107492350, 0.5367356488429740, -0.4750294081829130, 0.2093171456820800, -0.0448168478372544, 0.0035982345962455},
: : {4.1634765534868200, -0.6639380184565550, 0.6839435343972310, -0.6055449161351130, 0.2576225180984680, -0.0529798962102692, 0.0041174876343332},
: : {4.2738132059953500, -0.7053737865816080, 0.8765244959395290, -0.7751597173906790, 0.3194947039384480, -0.0632413632161225, 0.0047558504662024},
: : {4.3441540329743400, -0.7330080896153980, 1.0075667686338200, -0.8900323611747060, 0.3609554064987290, -0.0700209550986551, 0.0051703174649366},
: : {4.3716186573834300, -0.7440581191901890, 1.0604620003039400, -0.9363005364101310, 0.3775722293368320, -0.0727198601130324, 0.0053339171854413},
: : {4.4169896297468800, -0.7626216655234860, 1.1499254999093700, -1.0144438043660800, 0.4055420878578250, -0.0772416507497683, 0.0056063897266798},
: : {4.5541893107153900, -0.8210501284314930, 1.4358487855546100, -1.2634128394000600, 0.4939915579633600, -0.0913924069767337, 0.0064475679961202},
: : {4.6321563145833600, -0.8556933851060030, 1.6081938980810100, -1.4130413410507000, 0.5467546559007330, -0.0997445518047987, 0.0069370529558854},
: : {4.7283161257945500, -0.8997250334954570, 1.8299958993373600, -1.6052379147842400, 0.6141817080844360, -0.1103385000135830, 0.0075516134329119}};
: :
: : 이 데이타를 새로 만든 2차원 배열 double dNewRainpoly[13][7] = {0, }; 에 복사 하려면, 어떻게 해야 하나요?
: :
: : 감사 합니다.
: :
:
:
:
: 답변:
:
:
: int a[3][4] =
: {
: {1,2,3,4},
: {5,6,7,8},
: {9,10,11,12}
: };
:
: 위와 같은 2차원 배열이 있다고 할 때...
:
: 위 배열의 메모리 레이아웃은...
:
: 1
: 2
: 3
: 4
:
: 5
: 6
: 7
: 8
:
: 9
: 10
: 11
: 12
:
: 의 순서로 메모리에 선형적으로 배치됍니다.
:
:
: 따라서
:
: int b[3][4];
:
: a 를 b 로 카피하는 것은...
:
: memcpy(b, a, sizeof(a));
:
: 위와 같이 하면되지만...
:
:
: stl 이용하는 게 더 편하고, 위의 int a[3][4] 를 std::array() 를 이용해서 표현하면
: 다음과 같이 적용할 수 있고...
:
: #include <array>
: using array3_4 = std::array<std::array<int,4>, 3>; // 컬럼과 로우가 바뀐 것에 주의.
:
: array3_4 va =
: {
: {
: {1,2,3,4},
: {5,6,7,8},
: {9,10,11,12}
: }
: }; // 둘러싸는 괄호가 더 있는 것에 주의.
:
:
: 배열의 카피는
:
: array3_4 vb;
: vb = va;
:
: 또는
: array3_4 vb(va);
:
: printf("%d", vb[1][2]);
:
: 로 배열 디멘션의 크기와 상관없이 카피를 간단하게 할 수 있음.
:
: legacy 신텍스 사용하지 말고 stl 사용해 버릇 하세요.
:
: stl을 이용해서 코딩하면 버그에 노출될 가능성도 줄일 수 있고...
: 소팅, 트랜스폼, 패러렐 연산 등 각종 알고리즘 적용을 간단하게 할 수 있음.
:
:
:
|