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

+ Recent posts