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.assgin(b,e) | v를 반복자 구간 [b, e)로 할당한다. |
v.at(i) | v의 i번째 원소를 참조하고 범위 점검을 한다. |
v.back() | v의 마지막 원소를 참조한다. |
p = v.begin() | p는 v의 첫 원소를 가리키는 반복자 |
x = v.capacity() | x는 v에 할당된 공간의 크기(실제 할당된 메모리 크기, vector만 존재) |
v.clear() | v는 모든 원소를 제거한다. |
v.empty() | v가 비었는지 조사한다. |
p = v.end() | p는 v의 끝을 표시하는 반복자. |
q = 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(x) | v의 끝에 x를 삽입한다. |
p = v.rbegin() | p는 v의 역 순차열의 첫 원소를 가리키는 반복자다 |
p = v.rend() | p는 v의 역 순차열의 끝을 표시한하는 반복자다. |
v.reserve(n) | n개의 원소를 저장할 공간을 예약한다 |
v.resize(n, x) | v의 크기를 n으로 변경하고 확장되는 공간의 값을 x값으로 초기화 한다. |
v.size() | v원소의 갯수이다.(저장 원소의 갯수) |
v.swap(v2) | v와 v2를 swap한다. |
v.emplace_back(x) | 객체 x의 임시 객체 생성과 소멸, 복사를 하지 않아도 vector내에서 직접 객체를 생성하여 값을 집어 넣는다. (push_back의 경우 임시 객체를 생성 후 복사, 소멸의 과정을 거친다) |
연산자 | 설명 |
v1 == v2 | v1과 v2의 모든 원소가 같은가? |
v1 != v2 | v1과 v2의 모든 원소중 하나라도 다른 원소가 있는가? |
v1 < v2 | 문자열 비교 처럼 v2가 v1보다 큰가? |
v1 <= v2 | 문자열 비교처럼 v2가 v1보다 크거나 같은가? |
v1 > v2 | 문자열 비교처럼 v1이 v2보다 큰가? |
v1 >= v2 | 문자열 비교처럼 v1이 v2보다 크거나 같은가? |
v[i] | v의 i번째 원소를 참조한다. |
(1) capacity 함수
capacity가 원소의 갯수보다 크지 않다면 메모리 재할당을 수행하고, 이전 메모리 크기의 1/2만큼을 더 할당하는 정책을 사용한다. size를 늘릴때 capacity가 늘어나지만 size를 줄일 때는 capacity는 변함이 없다. 따라서 capacity를 0으로 만들고자 하면 컨테이너끼리 교환(swap)을 통해 capacity를 0으로 만들 수 있다.
(2) at 함수와 []연산자차이
at함수는 범위를 점검하고, []연산자의 경우 범위 점검을 하는 부분에서 차이난다.(at의 경우 out_of_range예외 발생)
Smart Pointer (0) | 2020.04.22 |
---|---|
Virtual Function (0) | 2020.04.21 |
Dangling Pointer(허상 포인터) (0) | 2020.04.17 |
STL Vector와 List의 차이점 (0) | 2020.03.25 |
정적(static)&공유(shared) 라이브러리 (0) | 2020.03.25 |
댓글,
야미야미얌얌
프로그래밍 및 IT 기술