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 |