1. 개요

std::vector는 C++ STL에서 가장 널리 사용되는 동적 배열 컨테이너입니다. 요소를 연속된 메모리에 저장하며, 크기를 자동으로 조절할 수 있습니다.

 #include <vector>
 std::vector<int> v = {1, 2, 3, 4};

2. 주요 특징

  • 동적 크기 조절 가능
  • 연속된 메모리 저장 구조
  • 임의 접근(random access) 가능
  • 삽입/삭제는 끝에서 빠름, 중간/앞은 느림
  • 반복자 무효화 주의 필요 (특히 삽입/삭제 시)

    3. 주요 생성자

생성자 설명
vector() 빈 벡터 생성
vector(size_type n) n개의 기본값 요소 생성
vector(size_type n, const T& val) n개의 val로 초기화
vector(InputIterator first, InputIterator last) 범위 기반 초기화
vector(const vector& other) 복사 생성자

4. 주요 멤버 함수

🔹 크기 관련

함수 설명
size() 요소 수
capacity() 할당된 용량
empty() 비었는지 확인
resize(n) 크기 변경
reserve(n) 최소 용량 확보
shrink_to_fit() 용량을 크기에 맞게 줄임
clear() 모든 요소 삭제

🔹 접근

함수 설명
operator[], at(i) 인덱스를 통한 요소 접근
front() / back() 첫/마지막 요소
data() 내부 배열 포인터 반환

🔹 삽입/삭제

함수 설명
push_back(val) 끝에 요소 추가
pop_back() 끝 요소 제거
insert(pos, val) 특정 위치에 삽입
erase(pos) 특정 위치 제거
emplace(pos, args...) 위치에 직접 생성
emplace_back(args...) 끝에 직접 생성
assign() 새로운 값으로 전체 초기화
swap() 두 벡터 교환

5. 반복자 관련

함수 설명
begin() / end() 정방향 반복자
rbegin() / rend() 역방향 반복자
cbegin() / cend() const 반복자

6. 예제 코드

 #include <iostream>
 #include <vector>
 using namespace std;
 
 int main() {
     vector<int> vec = {1, 2, 3};
 
     vec.push_back(4);
     vec.insert(vec.begin(), 0);
 
     for (int v : vec) {
         cout << v << " ";
     }
     cout << endl;
 
     vec.erase(vec.begin() + 2);
     vec.pop_back();
 
     for (int v : vec) {
         cout << v << " ";
     }
     cout << endl;
 
     return 0;
 }

7. std::vector vs std::list

항목 std::vector std::list
메모리 연속적 비연속적
접근 빠름 (임의 접근 가능) 느림
삽입/삭제 끝은 빠름, 중간은 느림 어디서든 빠름
메모리 오버헤드 적음 많음

8. 주의사항

  • 중간 삽입/삭제 시 반복자 무효화 발생
  • at()은 범위 체크하며, []는 하지 않음
  • 성능상 많은 삽입/삭제가 필요한 경우 list, deque 고려

글 이동

Comments