728x90
728x90
2차원 배열을 특정 값으로 초기화 하는 방법
들어가며
- C++에서 2차원 배열을 특정 값으로 초기화 하는 방법에 대해 알아보자.
int ary[50][50];
방법
방법 ① : 2중 for 문 사용하기
- 2중 for 문으로 하나하나씩 값을 집어 넣는 아주 기초적인 방법이다.
int value = 1; // 초기화 하고자 하는 값
for (int i = 0; i < 50; i++) {
for (int j = 0; j < 50; j++) {
ary[i][j] = value;
}
}
방법 ② : memset 함수 사용하기
- @memset@ 함수를 사용하여 값을 초기화 하는 방법이다.
- 단, @memset@ 함수를 사용할 경우, @0@ 또는 @-1@로만 초기화 할 수 있다.
- 함수를 사용하기 위해서는 @<string.h>@ (또는 @<cstring>@) 헤더를 불러와야 한다.
memset(시작주소, 값, 크기);
#include <cstring>
memset(ary, 0, sizeof(ary)); // 2차원 배열의 모든 값을 0으로 초기화
방법 ③ : fill 함수 사용하기
- @fill@ 함수를 사용하여 값을 초기화 하는 방법이다.
- @fill@ 함수를 사용할 경우, @0@ 또는 @-1@ 뿐만 아니라 다양한 값으로 초기화 할 수 있다.
fill(시작주소, 끝주소, 값); // 값이 설정되는 범위 : [시작주소, 끝주소)
- 값이 설정되는 범위가 @[시작주소, 끝주소)@이기 때문에, 1차원 배열은 보통 다음과 같이 사용하여 초기화시켜 준다.
int ary1D[10];
fill(ary1D, ary1D + 10, 1); // ary1D의 배열 값들을 1로 초기화
- 2차원 배열은 다음과 같이 초기화시켜 준다.
- 2차원 배열의 경우 @ary[50][50]@이 존재할 때 @ary@의 시작 주소를 나타내는 것은 @ary[0]@이고, 가장 마지막 주소는 @ary[49][49]@이다.
- 하지만 @fill@ 함수의 두 번째 인자(@끝주소@)는 범위에 포함되지 않기 때문에 @ary[49][49]의 주소 + 1@을 두 번째 인자로 넣어줘야 한다.
- 그래서 결국 두 번째 인자에 넣어줘야 하는 값은 @ary[50]@이다.
fill(ary[0], ary[50], 1); // 2차원 배열의 값들을 1로 초기화
728x90
728x90
'Programming > C++' 카테고리의 다른 글
[C++] 2차원 배열 동적 할당 방법 (new 연산자) (0) | 2022.12.08 |
---|---|
[C++] multiset(중복 집합) (0) | 2022.11.09 |
[C++] set(집합) (0) | 2022.11.08 |
[C++] multimap(멀티 맵) (0) | 2022.11.08 |
[C++] unordered_map (0) | 2022.11.08 |
[C++] map(맵) (0) | 2022.11.08 |
[C++] pair(페어)와 tuple(튜플) (0) | 2022.11.03 |
[C++] lower_bound(), upper_bound() ; 이진 탐색(Binary Search) (0) | 2022.11.01 |