[C++] std::array

2025. 2. 20. 22:00·C | C++/STL
반응형

개요

 C++에서 정적 배열을 사용하기 위해서 다음과 같이 작성할 수 있습니다.

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

 C스타일의 정적 배열과 array는  매우 비슷하지만 약간의 편의 기능을 추가한 형태입니다. 

 


특징

  • 동적 할당 
    • 배열을 런타임에 선언 및 할당할 수 있습니다.
  • 고정된 배열 크기
    • 배열의 크기는 컴파일 타임에 고정되며, 런타임에 변동될 수 없습니다.
  • 안정성 및 편의성 증가
    • template를 사용하여 타입 안정성을 보장합니다. 
    • 배열의 크기를 자체적으로 참조할 수 있고, 표준 라이브러리 함수를 지원하여 begin 및 end iterator를 사용할 수 있습니다.

헤더

#include <array>

 array를 사용하기 위해서 다음과 같이 <array> 헤더를 포함해야 합니다.

 


선언 및 초기화

array<_Ty, _Size> ary;

 array는 타입을 선언할 때, 2개의 템플릿 매개변수를 받습니다.

  • _Ty은 배열의 형식을 나타냅니다.
  • _Size는 배열의 크기를 나타냅니다.

 

array<int, 5> ary = { 1, 2, 3, 4, 5 };
array<int, 5> ary { 1, 2, 3, 4, 5 }; // 배열을 { 1, 2, 3, 4, 5 }로 초기화

 array를 선언과 동시에 초기화하기 위해서는 일반 배열을 초기화할 때와 같이 중괄호를 이용하여 초기화할 수 있습니다.

 


주요 함수

 

size()

array<int, 6> ary = { 1, 2, 3, 4, 5, 6 };
size_t s = ary.size(); // 6을 반환합니다.

 array의 크기를 반환합니다.

 array에는 max_size()도 존재하지만 size()와 항상 같은 값을 반환하는데, 다른 표준 라이브러리의 컨테이너와 일관성을 유지하기 위해서 두 함수가 존재하고 두 함수 모두 사용할 수 있습니다.

 


at(index)

array<int, 6> ary = { 1, 2, 3, 4, 5, 6 };
int v1 = ary[3]; // 4를 반환합니다.
int v2 = ary.at(3); // 마찬가지로 4를 반환합니다.

 array의 요소에 접근하여 값을 반환합니다.

 범위 외의 인덱스에 접근하려고 하면 std::out_of_range 예외를 발생시킵니다.

 


front()

array<int, 6> ary = { 1, 2, 3, 4, 5, 6 };
int f = ary.front(); // 1을 반환합니다.

array에서 첫 번째 요소의 값을 반환합니다. 

 


back()

array<int, 6> ary = { 1, 2, 3, 4, 5, 6 };
int b = ary.back(); // 6을 반환합니다.

array에서 마지막 요소의 값을 반환합니다. 

 


begin()

array<int, 6> ary = { 1, 2, 3, 4, 5, 6 };
auto it = ary.begin();

 array에서 첫 번째 요소의 iterator를 반환합니다.

 


end()

array<int, 6> ary = { 1, 2, 3, 4, 5, 6 };
auto it = ary.end();

 array에서 마지막 요소의 iterator를 반환합니다.

 


fill(value)

array<int, 6> ary = { 1, 2, 3, 4, 5, 6 };
ary.fill(0); // ary의 모든 요소를 0으로 채웁니다.

 array의 모든 요소의 값을 특정 값으로 변경합니다.

 

반응형
'C | C++/STL' 카테고리의 다른 글
  • [C++] std::queue
  • [C++] std::stack
  • [C++] std::vector
  • [C++] std::list
HYEOKJUN
HYEOKJUN
프로그래밍 관련 수업이나 웹 사이트에서 직접 얻은 정보를 공유하는 블로그입니다. (일부 잘못된 정보가 포함될 수 있습니다)
  • HYEOKJUN
    HYEOKJUN
    HYEOKJUN
  • 전체
    오늘
    어제
    • 분류 전체보기 (57)
      • UNITY (18)
        • Tool (9)
        • Script (9)
      • C | C++ (20)
        • Basic (11)
        • STL (8)
        • ETC (1)
      • C# (1)
        • Basic (0)
        • ETC (1)
      • Python (8)
        • Basic (7)
        • Library (1)
        • ETC (0)
      • WEB (2)
        • Basic (2)
      • Skill (4)
        • 자료구조 (2)
        • 알고리즘 (2)
      • Workspace (0)
      • ETC (4)
  • 블로그 메뉴

    • 인기 글

    • 태그

      stack
      반복문
      C#
      queue
      컨테이너
      heap
      Localization
      red-black tree
      식별자
      자료형
      Unity
      조건문
      Package
      포인터
      std
      Python
      C
      while
      vector
      C++
    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    HYEOKJUN
    [C++] std::array
    상단으로

    티스토리툴바