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