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
'programing' 카테고리의 다른 글
Spring boot CrudRepository를 사용하여 데이터 필터링 (0) | 2023.06.26 |
---|---|
들어오는 모든 http 요청을 어떻게 모니터링합니까? (0) | 2023.06.26 |
Firebase FCM 사용 제한 (0) | 2023.06.26 |
셸 스크립트에서 sqlplus를 실행하는 동안 오류 처리 관리 (0) | 2023.06.26 |
Java를 사용하여 Java 객체를 MongoDB 컬렉션에 삽입 (0) | 2023.06.26 |