Namespaces
Variants

Standard library header <array> (C++11)

From cppreference.net
Standard library headers

이 헤더는 containers 라이브러리의 일부입니다.

**변역 설명:** - "Contents" → "목차"로 번역 - C++ 관련 용어("Includes", "Classes", "Functions", "Range access", "Synopsis", "Class template", "std::array")는 원문 유지 - HTML 태그와 속성은 그대로 보존 - 숫자와 코드 관련 내용은 변경 없음 - 전문적인 기술 문서 번역 스타일 적용

목차

Includes

(C++20)
3-way 비교 연산자 지원
std::initializer_list 클래스 템플릿

클래스

(C++11)
고정 크기 인플레이스 연속 배열
(클래스 템플릿)
(C++11)
튜플과 유사한 타입의 요소 개수를 구함
(클래스 템플릿)
튜플과 유사한 타입의 요소 타입들을 획득함
(클래스 템플릿)
array 의 크기를 구함
(클래스 템플릿 특수화)
array 의 요소 타입을 얻음
(클래스 템플릿 특수화)

함수

(C++11) (C++11) (C++20에서 제거됨) (C++11) (C++20에서 제거됨) (C++11) (C++20에서 제거됨) (C++11) (C++20에서 제거됨) (C++11) (C++20에서 제거됨) (C++20)
array 의 값을 사전식으로 비교합니다
(함수 템플릿)
std::swap 알고리즘을 특수화함
(함수 템플릿)
(C++20)
내장 배열로부터 std::array 객체를 생성합니다
(함수 템플릿)
array 의 요소에 접근합니다
(function template)
범위 접근
(C++11) (C++14)
컨테이너나 배열의 시작 부분을 가리키는 반복자를 반환합니다
(함수 템플릿)
(C++11) (C++14)
컨테이너나 배열의 끝을 가리키는 반복자를 반환합니다
(함수 템플릿)
컨테이너나 배열의 시작 부분에 대한 역방향 반복자를 반환합니다
(함수 템플릿)
(C++14)
컨테이너나 배열에 대한 역방향 끝 반복자를 반환합니다
(함수 템플릿)
(C++17) (C++20)
컨테이너나 배열의 크기를 반환합니다
(함수 템플릿)
(C++17)
컨테이너가 비어 있는지 확인합니다
(함수 템플릿)
(C++17)
기본 배열에 대한 포인터를 획득함
(함수 템플릿)

시놉시스

// 대부분 독립 실행
#include <compare>
#include <initializer_list>
namespace std {
  // 클래스 템플릿 array
  template<class T, size_t N>
  struct array; // 부분적으로 독립 실행
  template<class T, size_t N>
  constexpr bool operator==(const array<T, N>& x, const array<T, N>& y);
  template<class T, size_t N>
  constexpr /*synth-three-way-result*/<T> operator<=>(const array<T, N>& x,
                                                      const array<T, N>& y);
  // 특수화된 알고리즘
  template<class T, size_t N>
  constexpr void swap(array<T, N>& x, array<T, N>& y) noexcept(noexcept(x.swap(y)));
  // array 생성 함수
  template<class T, size_t N>
  constexpr array<remove_cv_t<T>, N> to_array(T (&a)[N]);
  template<class T, size_t N>
  constexpr array<remove_cv_t<T>, N> to_array(T (&&a)[N]);
  // tuple 인터페이스
  template<class T>
  struct tuple_size;
  template<size_t I, class T>
  struct tuple_element;
  template<class T, size_t N>
  struct tuple_size<array<T, N>>;
  template<size_t I, class T, size_t N>
  struct tuple_element<I, array<T, N>>;
  template<size_t I, class T, size_t N>
  constexpr T& get(array<T, N>&) noexcept;
  template<size_t I, class T, size_t N>
  constexpr T&& get(array<T, N>&&) noexcept;
  template<size_t I, class T, size_t N>
  constexpr const T& get(const array<T, N>&) noexcept;
  template<size_t I, class T, size_t N>
  constexpr const T&& get(const array<T, N>&&) noexcept;
}

클래스 템플릿 std::array

namespace std {
  template<class T, size_t N>
  struct array
  {
    // 타입
    using value_type             = T;
    using pointer                = T*;
    using const_pointer          = const T*;
    using reference              = T&;
    using const_reference        = const T&;
    using size_type              = size_t;
    using difference_type        = ptrdiff_t;
    using iterator               = /* implementation-defined */;
    using const_iterator         = /* implementation-defined */;
    using reverse_iterator       = std::reverse_iterator<iterator>;
    using const_reverse_iterator = std::reverse_iterator<const_iterator>;
    // 집합 타입을 위한 명시적 생성/복사/소멸 없음
    constexpr void fill(const T& u);
    constexpr void swap(array&) noexcept(is_nothrow_swappable_v<T>);
    // 반복자
    constexpr iterator begin() noexcept;
    constexpr const_iterator begin() const noexcept;
    constexpr iterator end() noexcept;
    constexpr const_iterator end() const noexcept;
    constexpr reverse_iterator rbegin() noexcept;
    constexpr const_reverse_iterator rbegin() const noexcept;
    constexpr reverse_iterator rend() noexcept;
    constexpr const_reverse_iterator rend() const noexcept;
    constexpr const_iterator cbegin() const noexcept;
    constexpr const_iterator cend() const noexcept;
    constexpr const_reverse_iterator crbegin() const noexcept;
    constexpr const_reverse_iterator crend() const noexcept;
    // 용량
    constexpr bool empty() const noexcept;
    constexpr size_type size() const noexcept;
    constexpr size_type max_size() const noexcept;
    // 요소 접근
    constexpr reference operator[](size_type n);
    constexpr const_reference operator[](size_type n) const;
    constexpr reference at(size_type n);             // freestanding-deleted
    constexpr const_reference at(size_type n) const; // freestanding-deleted
    constexpr reference front();
    constexpr const_reference front() const;
    constexpr reference back();
    constexpr const_reference back() const;
    constexpr T* data() noexcept;
    constexpr const T* data() const noexcept;
  };
  template<class T, class... U>
  array(T, U...) -> array<T, 1 + sizeof...(U)>;
}