본문 바로가기

공부/Standard Template Library (C++ STL)

[C++ STL] Array

 

1. Array

- C++에 내장되어있는 고정 배열(Fixed array)을 대채 할 수 있는 고정 길이 자료구조

- 고정 배열 선언처럼 array의 길이는 컴파일 타임에 설정해야 한다.

- 크기가 고정이기 때문에 힙(Heap)을 사용하지 않고 스택(Stack)을 쓴다.

- 임의 접근이 가능하다. ( [ ], at() 지원)

 

- Vector와 의 비교

  Array Vector 효율성
크기 변경 가능 X O Vector
삽입, 삭제 용이 X (push, pop, insert 등 멤버함수 지원하지않음, 할당된 크기 내에서만 사용가능) O Vector
저장 공간 Stack Heap Array

 

- 고정 길이 배열과의 비교

고정 길이 배열 Array

함수에 전달할 때 포인터로 형변환 된다.

포인터로 형변환 된 배열은 길이 정보가 손실된다.

함수에 전달할 때 포인터로 형 변환되지 않는다.

따라서 길이 정보도 그대로 넘어온다. (쓰기 편하다)

 

2. Include

#include <array>

 

3. 생성자

std::array<T, size_t> name;
std::array<T, 5> name = {1, 2, 3, 4, 5}; // initializer list
std::array<T, 5> name {1, 2, 3, 4, 5}; // uniform initialization

// 선언후 초기화도 가능
std::array<T, 5> name;
name = {1, 2, 3}; // name[3], name[4] 는 0으로 초기화

namespace std를 사용.

사이즈를 지정해 줘야 함.

초기화 리스트(initializer list)를 이용해 초기화 가능.

유니폼 초기화(uniform initialization)를 이용해 초기화 가능.

선언후 배열을 이용해 초기화 가능

 

4. function

// 주어진 파라미터로 array를 초기화 (모든 원소가 value가 됨)
void fill(const T& value)
void assign(const T& value)

// array의 n번째 원소를 반환. 검증을 해준다는점을 제외하고는 array[n]와 같음
reference at(size_type n)

// array의 크기를 반환
size_type size()
size_type max_size() // 같음

// array의 size가 0이면 true를 반환
bool empty()

// array의 모든 원소를 제거
void clear()

// 두 array의 내용을 바꾼다.
void swap(array& _Other)

// array의 첫 번째 원소를 반환 ( = array[0] )
const_reference front()

// array의 마지막 원소를 반환 ( = array[size-1] )
const_reference back()

// array의 데이터 배열 포인터를 반환
T* data()

// array의 첫 번째 원소를 가리키는 반복자 반환
iterator begin()
const_iterator cbegin() // 순회 불가능

// array의 마지막 원소 다음의 공간을 가리키는 반복자 반환
iterator end()
const_iterator cend() // 순회 불가능

// array의 마지막 원소를 가리키는 역순 반복자 반환
reverse_iterator rbegin()
const_reverse_iterator crbegin() // 순회 불가능

// array의 첫 번째 원소 이전의 공간을 가리키는 반복자 반환
reverse_iterator rend()
const_reverse_iterator crend() // 순회 불가능

'공부 > Standard Template Library (C++ STL)' 카테고리의 다른 글

[C++ STL] Set, Multiset  (0) 2019.04.26
[C++ STL] Vector  (0) 2019.04.26
[C++ STL] Deque  (0) 2019.04.26
[C++ STL] List  (0) 2019.04.25
[C++ STL] Queue  (0) 2019.04.25