std::vector<int> vec; - 크기가 0인 벡터
std::vector<int> vec = {1,2,3,4,5}; - 지정한 초깃값으로 이루어진 크기가 5인 벡터
std::vector<int> vec(10); - 크기가 10인 벡터
std::vector<int> vec(10,5); - 크기가 10이고, 모든 원소가 5로 초기화된 벡터
원소 크기 지정하지 않고 선언 가능
크기를 명시적으로 지정하지 않거나 초깃값을 지정하여 크기를 유추할 수 있게 코드를 작성하지 않을 경우,
컴파일러 구현 방법에 따른 용량을 갖는 벡터를 생성
벡터의 크기는 실제로 저장된 원소 개수를 나타내는 용어
용량과는 다른 의미
push_back() - 벡터의 맨 마지막에 새로운 원소 추가
- 연산의 평균 시간 복잡도 - O(1)
- 새원소를 추가할 공간이 있는 경우
1. 마지막 원소 다음에 val 저장
2. 벡터 크기를 1만큼 증가
3. 시간 복잡도 O(1)
- 할당된 메모리 공간이 가득 차 있는 경우
1. 2*size 크기의 메모리를 새로 할당
2. 새로 할당한 메모리로 기존 원소 전부를 복사/이동
3. 데이터 포인터를 새로 할당한 메모리 주소로 지정
4. 마지막 원소 다음에 val을 저장하고, 벡터 크기를 1만큼 증가
5. 시간 복잡도 O(n)
insert() - 삽입할 위치를 나타내는 반복자를 첫 번째 인자로 받음으로써 원하는 위치에 원소를 추가할 수 있음
- 지정된 반복자 위치 다음의 모든 원소를 이동시키는 연산
- 시간 복잡도 O(n)
- vec.insert(vec.begin(), 0); - 맨 앞에 새로운 원소 추가
pop_back() - 맨 마지막 원소 제거, 벡터 크기 - 1
- 시간 복잡도 O(1)
erase() - 두 가지의 형태
1. 반복자 하나를 인자로 받아 해당 위치 원소 제거
2. 범위의 시작과 끝을 나타내는 반복자를 받아 시작부터 끝 바로 앞 원소까지 제거
( 시작 위치 원소 제거, 끝 위치 원소 제거 X )
- 시간 복잡도 O(n)
clear() - 모든 원소를 제거 완전히 비어 있는 벡터
reserve(capacity) - 벡터에서 사용할 용량을 지정, 매개변수로 지정한 값이 현재 용량보다 크면 메모리를 매개변수 크기만큼 재할당, 벡터의 크기를 변경 X
shrink_to_fit() - 여분의 메모리 공간을 해제
'자료구조와 알고리즘' 카테고리의 다른 글
std::list (0) | 2022.02.01 |
---|---|
반복자 (0) | 2022.01.25 |
std::forward_list (0) | 2022.01.21 |
std::array (0) | 2022.01.14 |
자료구조 - 1 (0) | 2022.01.12 |