티스토리 뷰
1. Vector란?
- Vector는 동적 배열 구조를 C++로 구현한 것으로 맨 끝에서만 삽입 및 삭제가 일어나는 구조이다.
일반 배열과 차이점으로는 동적으로 크기가 변하고 메모리가 연속적이므로
자동으로 배열의 크기를 조절할 수 있고 유연하게 객체의 추가 및 삭제가 가능하다.
중간 데이터의 삭제도 erase함수를 통해 지원하지만, 삭제가 빈번히 일어나는 경우 연결리스트를 사용하는 것이 효율적.
쉽게 가변길이 배열이라고 생각할 수 있다.
2. Vector의 헤더파일
Vector STL을 사용하기 위해서는 #include <vector> 헤더파일을 포함해주어야 한다.
3. Vector의 선언 방법
1) 크기를 정하지 않은 경우
vector<변수 타입> 이름;
vector<int> v;
2) 크기를 정하는 경우
vector<변수 타입> 이름(크기);
기본값이 0이면서 사이즈가 5인 벡터 v를 선언한다면,
vector<int> v(5);
3) 크기를 정하면서 데이터를 초기화하는 경우
vector<변수 타입> 이름(크기, 초기화할 상수);
사이즈가 5이면서 1로 초기화한 벡터를 만들고 싶은경우,
vector<int> v(10, 1);
4) 다른 벡터를 복사해서 생성하는 경우
벡터 v1을 복사하여 벡터 v2을 생성하는경우,
vector<int> v2(v1);
4. Vector 멤버 함수
아래와 같이 vector를 선언했다고 가정,
vector<int> v;
1. 요소 접근
v.front() // vector의 첫번째 요소 접근
v.back() // vector의 마지막 요소 접근
v.at(i) // vector의 i번째 요소 접근 (0부터 시작)
v[i] // vector의 i번째 요소 접근 (0부터 시작)
2. 요소 삽입 및 제거
v.push_back(A); // 벡터 마지막에 요소 A 추가
v.pop_back(); // 벡터의 마지막 요소 제거
v.insert(삽입할 주소, A); // 원하는 위치에 요소 A 삽입
v.erase(삭제할 주소); // 원하는 위치의 요소 제거
v.erase(삭제 시작 주소, 삭제 끝 주소); // 원하는 위치의 요소 제거
v.clear(); 벡터의 모든 요소 제거
v.resize(X); // 벡터의 size를 X로 변경, 기존 size초과 시 자동으로 0으로 초기화
3. 반복자 (iterator)
v.begin(); // vector의 시작점 주소값 반환
v.end(); // vector의 끝점 +1 주소 반환 (끝 요소 아님에 주의!)
v.rbegin() // vector의 끝점을 반환
v.rend() // vector의 (시작-1) 점을 반환 (시작 요소 아님에 주의!)
4. size, capacity
v.empty(); // 벡터가 비어있으면 true, 아니면 false 반환
v.size(); // 벡터 size 반환
v.capacity(); // 현재 heap에 할당된 벡터 capacity 반환
v.reserve(X); // 벡터 size를 X로 예약
v.shrink_to_fit(); // 벡터의 capacity를 size에 맞춤
