더북(TheBook)

벡터에 새로운 원소를 추가하려면 push_back() 또는 insert() 함수를 사용합니다. push_back() 함수는 벡터의 맨 마지막에 새로운 원소를 추가합니다. insert() 함수는 삽입할 위치를 나타내는 반복자를 첫 번째 인자로 받음으로써 원하는 위치에 원소를 추가할 수 있습니다. push_back()은 벡터에서 자주 사용되는 연산이며, 매우 빠르게 동작합니다. push_back() 함수의 동작을 의사 코드(pseudocode)로 나타내면 다음과 같습니다.

push_back(val):
    if size < capacity         // 새 원소를 추가할 공간이 있는 경우
        - 마지막 원소 다음에 val 저장
        - 벡터 크기를 1만큼 증가
        - return;
    
    if vector is already full  // 할당된 메모리 공간이 가득 차 있는 경우
        - 2*size 크기의 메모리를 새로 할당
        - 새로 할당한 메모리로 기존 원소 전부를 복사/이동
        - 데이터 포인터를 새로 할당한 메모리 주소로 지정
        - 마지막 원소 다음에 val을 저장하고, 벡터 크기를 1만큼 증가

실제 구현은 약간 다를 수 있지만 동작 방식은 거의 같습니다. 맨 뒤에 원소를 삽입할 때, 뒤쪽에 남아 있는 공간이 있다면 O(1)의 시간이 걸립니다. 그러나 공간이 충분하지 않으면 모든 원소를 복사/이동해야 하며, 이때는 O(n)의 시간이 걸립니다. 대부분의 구현에서는 용량이 부족할 때마다 벡터 용량을 두 배로 늘립니다. O(n) 시간 동작은 n개의 원소를 추가한 후에만 발생하며, 이러한 경우는 많지 않으므로 push_back() 연산의 평균 시간 복잡도는 O(1)에 가깝습니다. 즉, push_back()은 매우 빠르게 동작하며, 이 때문에 벡터를 많이 사용합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.