Post

Q.Vector

Q.Vector

Q. vector?

Q. array와 vector의 차이

Q. vector의 시간, 공간 복잡도

Q. vector의 capacity란?

Q. capacity를 지우고 싶다면?

Q. vector 재할당 시 메모리 크기를 얼마로 할당하는가?

Q. vector는 어떻게 크기가 바뀔 수 있나요?

Q. vector는 어느 메모리에 위치하나요?

Q. resize와 reserve함수를 각각 언제 사용하는가?

Q. vector에 reserve(100)을 하고, push_back()을 하면 어떤 동작이 이루어지는가?

Q. 일반적으로 원소를 그냥 erase하면 문제가 생긴다. 왜 생기는가?

Q. 순회할 때 vecotr가 list보다 빠른 이유?

Q. vector를 복사하면 어떤 과정이 이루어지는가?

Q. vector 사용경험?




주요 함수

  1. 추가/삭제 → push_back(), pop_back, insert( , ), erase( , )

  2. 정보 확인 → size, empty, front, back

  3. 정렬 → sort( , ), ( , ), min_element( , ), max_element( , )

  4. 탐색 → find( , ), count( , , )


선언 & 초기화

1
2
3
4
vector<int> v;               // 빈 벡터
vector<int> v(10);           // 크기 10, 기본값 0
vector<int> v(10, 5);        // 크기 10, 모든 원소 5
vector<int> v2 = {1, 2, 3};  // 초기화 리스트


원소 접근

1
2
3
4
v[i];           // 인덱스 접근 (0-based)
v.at(i);        // 범위 체크 포함 (예외 발생 가능)
v.front();      // 첫 번째 원소
v.back();       // 마지막 원소


크기 관련

1
2
3
v.size();       // 현재 원소 개수
v.empty();      // 비어있으면 true
v.clear();      // 모든 원소 삭제


삽입 & 삭제

1
2
3
4
5
v.push_back(x);              // 맨 뒤에 삽입
v.pop_back();                // 맨 뒤 원소 삭제
v.insert(v.begin() + i, x);  // i번째 위치에 삽입
v.erase(v.begin() + i);      // i번째 원소 삭제
v.erase(v.begin() + a, v.begin() + b); // [a, b) 구간 삭제


반복자

1
2
for(auto it = v.begin(); it != v.end(); it++) cout << *it;
for(int x : v) cout << x;   // range-based for


정렬 & 알고리즘 (algorithm 헤더 필요)

1
2
3
sort(v.begin(), v.end());                  // 오름차순 정렬
sort(v.begin(), v.end(), greater<int>());  // 내림차순 정렬
reverse(v.begin(), v.end());               // 순서 뒤집기


기타 유용한 함수

1
2
3
4
find(v.begin(), v.end(), x);      // 값 x 찾기 (없으면 v.end() 반환)
count(v.begin(), v.end(), x);     // 값 x 개수 세기
min_element(v.begin(), v.end());  // 최소값 위치 반복자
max_element(v.begin(), v.end());  // 최대값 위치 반복자
This post is licensed under CC BY 4.0 by the author.