[STL] vector container
c++의 표준 라이브러리(Standard Template Library)에 있는 컨테이너이다.
vector를 생성하면 heap에 동적할당된다.
배열과 마찬가지로 삽입, 삭제가 빈번하다면 비효율적이다.
1. vector 사용방법
vector 헤더파일 추가한다.
#include <vector>
using namespace std;
2. vector의 구조
3. vector 생성
vector 객체를 생성 시, <>안에 type을 지정한다.
vector<int> v; // int형 vector v 생성
vector<int> v(3); // 0으로 초기화된 vector 3개 생성
vector<int> v(3,1); // 1로 초기화된 vector 3개 생성
4. vector 멤버함수
1) 원소 할당
v.assign(3,1); // 원소 3개에 1할당
2) 요소 삽입 및 삭제
v.push_back(5); // 마지막 원소 뒤에 5삽입
v.insert(2,3); // 2번쨰 위치에 3삽입, 삽입한 곳의 iterator 반환
v.pop_back(); // 마지막 원소 삭제
v.erase(iter); // iter가 가리키는 원소 제거
v.clear(); // 모든 원소 제거, 메모리는 남아있음
v.resize(3); // v의 사이즈를 3으로 조절
v.swap(v2); // v와 v2 swap
3) 원소 접근
해당 위치 원소의 값을 return 한다.
v.at(3); // v의 3번째 요소 접근(범위검사 => 범위 오류 시 예외처리 발생)
v.[3]; // v의 3번째 요소 접근(범위 검사 X)
v.front(); // 벡터의 첫번째 요소 접근
v.back(); // 벡터의 마지막 요소 접근
4) Iterators
해당 위치 원소의 참조를 return 한다.
end()는 마지막 원소의 다음 위치를 가리킨다.
v.begin(); // v 시작점의 주소 값 반환
v.end(); // v 마지막 다음 주소값 반환
v.rbegin(); // v의 끝지점을 시작점으로 반환
v.rend(); // v의 (시작+1)지점을 끝부분으로 반환
활용예시 - 벡터의 모든 원소 출력
vector<int>::iterator it;
for(it = v.begin(); it!=v.end(); it++) cout << *it << endl;
5) 벡터 용량
v.empty(); // v가 빈공간이면 true, 값이 있다면 false
v.size(); // 벡터의 크기 반환
v.capacity(); // heap에 할당된 벡터의 크기
size()와 capacity()의 차이
capacity는 vector의 type을 담을 수 있는 메모리가 할당되어 있는 공간의 용량,
size는 실제 유효한 원소의 갯수이다.
새로운 원소 추가 시,
- capacity > size이면,
맨 뒤 공간에 원소 복사 -> ++size - capacity == size이면,
capacity가 증가한 새로운 공간 할당
-> 기존의 원소 복사 & 기존 원소 삭제
참고
블로그1 https://hwan-shell.tistory.com/119
블로그2 https://blockdmask.tistory.com/70
Author And Source
이 문제에 관하여([STL] vector container), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@pyh-dotcom/STL-vector-container저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)