stl의 vector를 다루면서 배운 점을 정리해보겠다.
1. stl vector 사용법
#include <vector>
vector<자료형 또는 클래스나 struct명> 벡터이름;
- 벡터는 앞쪽이 막혀 있는 형태로 앞쪽에는 원소를 추가/제거할 수 없고 뒤쪽에만 추가/제거가 가능하다.
2. 벡터의 크기 지정 선언
- 만약 벡터의 크기를 미리 정의해놓고 싶다면 벡터이름(N); 이렇게 쓰면 된다.
3. 벡터 함수들
* 템플릿 형식
template<typename T, typename Allocator = allocator<T>>
class vector
- T는 vector 컨테이너 원소의 형식
* 생성자
vector v | v는 빈 컨테이너이다. |
vector v(n) | v는 기본값으로 초기화된 n개의 원소를 갖는다. |
vector v(n, x) | v는 x값으로 초기화된 n개의 원소를 갖는다. |
vector v(v2) | v는 v2 컨테이너의 복사본이다. (복사 생성자 호출) |
vector v(b, e) | v는 반복자 구간 [b, e)로 초기화된 원소를 갖는다. |
* 멤버 함수
v.assign(n, x) | v에 x 값으로 n개의 원소를 할당한다. |
v.assign(b, e) | v를 반복자 구간 [b, e)로 할당한다. |
v.at(i) | v의 i번째 원소를 참조한다. |
v.back() | v의 마지막 원소를 참조한다. |
p = v.begin() | p는 v의 첫 원소를 가리키는 반복자 |
x = v.capacity() | x는 v에 할당된 공간의 크기 |
v.clear() | v의 모든 원소를 제거한다. |
v.empty() | v가 비었는지 조사한다. |
p = v.end() | p는 v의 끝을 표식하는 반복자 |
p = v.erase(p) | p가 가리키는 원소를 제거한다. q는 다음 원소를 가리킨다. |
q = v.erase(b, e) | 반복자 구간 [b, e)의 모든 원소를 제거한다. q는 다음 원소 |
v.front() | v의 첫 번째 원소를 참조한다. |
q = v.insert(p, x) | p가 가리키는 위치에 x값을 삽입한다. q는 삽입한 원소를 가리키는 반복자다. |
v.insert(p, n, x) | p가 가리키는 위치에 n개의 x값을 삽입한다. |
v.insert(p, b, e) | p가 가리키는 위치에 반복자 구간 [b, e)의 원소를 삽입한다. |
x = v.max_size() | x는 v가 담을 수 있는 최대 원소의 개수(메모리의 크기) |
v.pop_back() | v의 마지막 원소를 제거한다. |
v.push_back() | v의 끝에 x를 추가한다. |
p = v.rbegin() | p는 v의 역 순차열의 첫 원소를 가리키는 반복자다. |
p = v.rend() | p는 v의 역 순차열의 끝을 표식하는 반복자 |
v.reserve(n) | n개의 원소를 저장할 공간을 예약한다. |
v.resize(n) | v의 크기를 n으로 변경하고 확장되는 공간의 값을 기본값으로 초기화한다. |
v.resize(n, x) | v의 크기를 n으로 변경하고 확장되는 공간의 값을 x값으로 초기화한다. |
v.size() | v의 원소 개수 |
v.swap(v2) | v와 v2를 swap한다. |
* 벡터 연산자
v1 == v2 | v1과 v2의 모든 원소가 같은가? (bool) |
v1 != v2 | v1과 v2의 모든 원소 중 하나라도 다른 원소가 있는가? |
v1 < v2 | 문자열 비교처럼 v2가 v1보다 큰가? |
v1 > v2 | 문자열 비교처럼 v1이 v2보다 큰가? |
v[i] | v의 i번째 원소를 참조한다. |
* 멤버 형식
allocator_type | 메모리 관리자 형식 |
const_iterator | const 반복자 형식 |
const_pointer | const value_type* 형식 |
const_reference | const value_type& 형식 |
const_reverse_iterator | const 역 반복자 형식 |
difference_type | 두 반복자 차이의 형식 |
iterator | 반복자 형식 |
pointer | value_type* 형식 |
reference | value_type& 형식 |
reverse_iterator | 역 반복자 형식 |
size_type | 첨자(index)나 원소의 개수 등의 형식 |
value_type | 원소의 형식 |
- 시퀀스 컨테이너는 차례차례 원소를 추가하고 제거하는 push_back과 pop_back()을 가지며,
첫 원소와 마지막 원소를 참조하는 front()와 back()을 가진다.
- 또한 지정한 위치에 원소를 삽입하는 insert()를 가진다.
- https://hyeonstorage.tistory.com/324의 내용을 참고했다.
계속 공부해나가면서 벡터와 관련하여 기억해야할 점을 채워나가겠다.
'C++ Programming > 기억해야할 점' 카테고리의 다른 글
8. 배열 다루기 (0) | 2020.05.03 |
---|---|
7. 정렬 다루기 (0) | 2020.05.03 |
6. 문자열 다루기 (0) | 2020.05.03 |
5. 알고리즘 (0) | 2020.05.03 |
4. switch문, goto문 (0) | 2020.05.03 |