본문 바로가기
Programming

C++에서 배열을 초기화하는 방법

by 느리게 걷는 즐거움 2024. 11. 12.
반응형

C++에서 배열을 초기화하는 방법

C++에서 배열을 초기화하는 것은 프로그램에서 데이터를 저장하고 관리하는 기본적인 작업 중 하나입니다. 배열은 연속된 메모리 블록을 차지하며 동일한 타입의 데이터를 저장하는 자료구조로, 다양한 초기화 방법이 존재합니다. 이 글에서는 C++ 배열의 다양한 초기화 방법을 살펴보고, 각 방법의 예제를 제공합니다.

1. 배열 선언과 기본 초기화

C++에서 배열을 선언할 때 기본적으로 배열의 크기와 타입을 지정해 줘야 합니다. 배열은 선언과 동시에 초기화를 하지 않으면, 배열의 요소들은 메모리의 임의의 값으로 채워져 있습니다. 아래는 배열을 선언하는 기본적인 방법입니다.

int numbers[5]; // 크기가 5인 int형 배열 선언 (초기화하지 않음)

위의 경우, `numbers` 배열은 크기 5인 `int` 타입의 배열로 선언되었지만 초기화되지 않았습니다.

2. 배열 선언과 동시에 초기화하기

배열을 선언할 때 중괄호 `{}`를 이용해 초기값을 지정할 수 있습니다. 이 방법은 배열의 모든 요소를 원하는 값으로 설정하는 데 유용합니다.

```cpp
int numbers[5] = {1, 2, 3, 4, 5}; // 1, 2, 3, 4, 5로 초기화
```

위 코드에서 `numbers` 배열은 `{1, 2, 3, 4, 5}`로 초기화됩니다. 선언 시에 배열의 크기를 명시하지 않아도, 초기화 리스트에 포함된 값만큼 자동으로 크기가 지정됩니다.

int numbers[] = {1, 2, 3}; // 크기는 3으로 자동 설정

 3. 부분 초기화

배열의 일부만 초기화할 수도 있습니다. 나머지 요소들은 자동으로 0으로 초기화됩니다. 예를 들어, 배열의 처음 몇 개 요소만 초기화할 때 유용합니다.

int numbers[5] = {1, 2}; // {1, 2, 0, 0, 0}으로 초기화

위 코드에서는 `numbers` 배열의 첫 두 요소는 1과 2로 초기화되고, 나머지 요소들은 0으로 초기화됩니다.

4. 전부 0으로 초기화

배열의 모든 요소를 0으로 초기화하고 싶다면 `{0}`을 사용할 수 있습니다. 모든 요소가 0으로 설정되며, 명시적으로 각 요소를 설정할 필요가 없습니다.

int numbers[5] = {0}; // {0, 0, 0, 0, 0}으로 초기화


5. 반복문을 사용한 초기화

배열의 각 요소를 계산된 값으로 초기화해야 할 때는 반복문을 사용할 수 있습니다. 예를 들어, 인덱스 값이나 특정 수식을 사용해 초기화하는 방법입니다.

int numbers[5];
for (int i = 0; i < 5; i++) {
    numbers[i] = i * 2; // 0, 2, 4, 6, 8로 초기화
}

 

이 경우 `for` 반복문을 사용하여 각 요소를 순차적으로 설정할 수 있습니다.

6. `std::fill` 함수 사용

C++의 `<algorithm>` 라이브러리에 포함된 `std::fill` 함수를 이용하면 배열의 모든 요소를 특정 값으로 쉽게 초기화할 수 있습니다.

#include <algorithm>

int numbers[5];
std::fill(numbers, numbers + 5, 7); // 모든 요소를 7로 초기화

`std::fill` 함수는 배열의 시작과 끝을 나타내는 반복자를 받아서 지정한 값으로 배열을 채워줍니다.

C++11 이상의 `std::array`를 활용한 초기화

C++11부터는 `std::array` 컨테이너를 사용할 수 있습니다. `std::array`는 배열처럼 고정 크기이지만, STL 컨테이너처럼 동작합니다. 이때 배열의 초기화는 중괄호 `{}`를 통해 이루어집니다.

#include <array>

std::array<int, 5> numbers = {1, 2, 3, 4, 5}; // 크기가 5인 std::array 초기화

 

`std::array`를 사용하면 보다 안전하고 유연하게 배열을 다룰 수 있으며, STL의 다양한 함수와 호환이 가능합니다.

8. 벡터 (`std::vector`) 사용하기

배열의 크기가 가변적이거나 동적으로 할당해야 하는 경우 `std::vector`를 사용할 수 있습니다. `std::vector`는 동적 배열로 필요에 따라 크기를 자동으로 조정할 수 있습니다.

#include <vector>

std::vector<int> numbers = {1, 2, 3, 4, 5}; // std::vector 초기화
numbers.push_back(6); // 배열에 6 추가

`std::vector`는 배열과 유사하게 사용할 수 있으며, `push_back`을 통해 크기를 동적으로 확장할 수 있습니다.

반응형