programing

2D 배열 값 C++

bestprogram 2023. 6. 26. 21:32

2D 배열 값 C++

for 루프를 실행하지 않고 2D 어레이를 선언하고 값을 할당하고 싶었습니다.

저는 다음과 같은 아이디어를 사용할 수 있다고 생각했습니다.

int array[5] = {1,2,3,4,5};

2D 어레이를 초기화하는 데도 잘 작동합니다.하지만 분명히 내 컴파일러는 이것을 좋아하지 않습니다.

/*
 1   8  12  20  25
 5   9  13  24  26
*/

#include <iostream.h>

int main()
{
    int arr[2][5] = {0};   // This actually initializes everything to 0.
    arr [1] [] = {1,8,12,20,25}; // Line 11
    arr [2] [] = {5,9,13,24,26};
    return 0;
}

J:\CPP\Grid>bcc32.exe Grid.cpp

Win32 저작권을 위한 볼랜드 C++ 5.5.1 (c) 1993, 2000 볼랜드.

Grid.cpp:

오류 E2188 Grid.cpp 11: 함수 main()의 식 구문

오류 E2188 Grid.cpp 12: 함수 main()의 식 구문

W8004 Grid.cpp 14 경고: 'arr'에 main() 함수에서 사용되지 않는 값이 할당되었습니다.

컴파일 오류 2개 *

저의 값 집합으로 2d 배열을 초기화하는 올바른 방법이 무엇인지 알려주시기 바랍니다.

다음과 같이:

int main()
{
    int arr[2][5] =
    {
        {1,8,12,20,25},
        {5,9,13,24,26}
    };
}

이것은 당신의 C++ 교재로 다뤄져야 합니다: 당신은 어떤 것을 사용하고 있습니까?

어쨌든, 더 나은 것은, 사용하는 것을 고려해보세요.std::vector또는 Boost의 기성 매트릭스 클래스.

C 또는 C++에서 다차원 배열을 초기화하는 적절한 방법은 다음과 같습니다.

int arr[2][5] = {{1,8,12,20,25}, {5,9,13,24,26}};

원하는 경우 동일한 방법을 사용하여 더 높은 차원의 배열을 초기화할 수 있습니다.

또한 초기 코드에 주의하십시오. 배열을 초기화하기 위해 1-인덱스 오프셋을 사용하려고 했습니다.이것은 컴파일되지 않았지만, 만약 컴파일된다면 C 배열이 0 인덱스이기 때문에 문제가 발생할 것입니다!

배열의 모든 차원을 지정할 필요는 없습니다.

컴파일러는 맨 왼쪽 차원을 '추측'할 수 있습니다.

#include <stdio.h>
int main(void) {
  int arr[][5] = {{1,2,3,4,5}, {5,6,7,8,9}, {6,5,4,3,2}};
  printf("sizeof arr is %d bytes\n", (int)sizeof arr);
  printf("number of elements: %d\n", (int)(sizeof arr/sizeof arr[0]));
  return 0;
}

int iArray[2][2] = {{1, 2}, {3, 4}};

2D 어레이를 어레이의 어레이로 생각합니다.

한 가지 대안은 2D 배열을 1D 배열로 표현하는 것입니다.이를 통해 요소별 작업을 보다 효율적으로 수행할 수 있습니다.너비와 높이를 포함하는 클래스로 포장해야 합니다.

또 다른 대안은 2D 어레이를 다음과 같이 표현하는 것입니다.std::vector<std::vector<int> >이렇게 하면 STL의 알고리즘을 배열 연산에 사용할 수 있으며, 벡터는 메모리 관리도 담당합니다.

언급URL : https://stackoverflow.com/questions/4981197/2d-array-values-c