[C/C++] Vector STL
Vector
: C++의 표준 라이브러리(Standard Template Library)에 있는 컨테이너. 사용자가 컨테이너를 쉽게 사용하기 위한 class이다. Vector는 원소를 동적으로 추가할 수 있고, 이에 따라 크기가 자동으로 늘어난다. 효율성의 반대 급부로 연산 성능은 배열에 비해 낮다.
Vector의 구조
front() :첫 번째 원소
back() :마지막 원소
begin() :첫번째 위치
end() :마지막의 다음 위치
size() :원소의 개수
capacity() :할당된 공간의 크기
size와 capacity의 차이점
vector는 원소가 추가될 때 마다 새로운 메모리 공간을 할당합니다. 만약 capacity가 모자라는 경우 capacity/2 만큼의 capacity를 늘립니다.
Vector 사용법
1. 선언
#include <vector>
//including vector headerfile
vector<int> v;
//int형 벡터 생성
vector<int> v={1, 2, 3};
//int형 벡터 생성 + 1, 2, 3으로 초기화
vector<int> v[10];
//int형 벡터 배열(크기:10) 생성
vector<int> v[] = {{ 1, 2}, {3, 4}};
//int형 벡터 생성 (행은 가변이지만 열은 고정)
vector<vector<int>> v;
//2차원 벡터 생성(행과 열 모두 가변)
vector<int> v(5);
//5개 원소를 0으로 초기화
vector<int> v(5, 3);
// 원소를 3으로 초기화
vector<int> v2(v);
//벡터 v를 복사해서 벡터 v2 생성 (복사 생성자)
2. Vector에 값 추가하기
push_back(value)
v.insert(index, value)
v.push_back(10); //마지막 위치에 숫자 10 추가
vector<int>::iterator it = v.begin();
it = v.insert(it, 2); //맨앞에 2 삽입
it = v.insert(it, 2, 3); //맨앞에서 3을 2개 삽입
it = v.insert(it+2, 2, 4); //앞에서 2번째부터 4를 2개 삽입
벡터를 이용한 반복자(iterator)란?
반복자
:컨테이너에 저장된 모든 원소를 전체적으로 탐색할 때 사용하는, 일종의 포인터와 비슷한 객체이다. 알고리즘 마다 각기 다른 방식을 사용하기 때문에, 반복자도 여러 종류가 존재한다. 위 예시에서는 vector<int> 라는 class안에 iterator라는 type이 정의되어 있다. 이 상황에서는 단순하게 it이 v.begin()을 가리키는 포인터라고 이해하면 된다.
3. Vector에서 값 삭제
v.pop_back() :vector의 끝에 있는 값을 삭제.
v.eraser(index, index) :vector의 index에 위치한 값 삭제. 삭제하면 뒤에서 한 칸씩 앞으로 당겨진다.
v.clear() :모든 값 삭제.
4. Vector의 크기
v.size(); //vector의 원소 갯수
v.capacity(); //vector의 물리적 크기(메모리 할당량)
5. iterator를 활용한 Vector 출력
vector<int> v1;
for(int i=1; i<=5; i++) {
v1.push_back(i);
}
for(auto i=v1.begin(); i!=v1.end(); ++i){
cout << *i << " ";
Author And Source
이 문제에 관하여([C/C++] Vector STL), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@skkukdh/CC-Vector-STL저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)