vector란?

C++에서 동적 배열을 빠르게 사용할 수 있는 배열이라고 생각하면 쉽다! 배열에 새로운 원소를 추가하거나 삭제하고, 내부의 함수를 이용해서 크기와 같은 데이터를 출력하기 쉽다.

사용법 (예제)

#include <iostream>
#include <vector>
using namespace std;

int main() {
	vector <int> Vec;
	Vec.push_back(1);
	Vec.push_back(2);
	cout << Vec[0] << " " << Vec[1];
    return 0;
}

예제를 실행시켰을 때, 출력되는 값

헤더파일

#include <vector>

사용 방법

#include <vector>
using namespace std;
int main() {
	vector <int> V;
}

vector 생성 방법

#include <vector>
using namespace std;
int main() {
	vector <int> V1;	//크기 지정하지 않고 바로 정의
	vector <int> V2 (4);	//크기를 4로 지정하면서 정의
	vector <int> V3 (4, 0); //크기를 4로 지정하고, 각 원소의 값을 0으로 초기화
	vector <int> V4 (V3);   //V3의 벡터를 복사하여 정의
}

vector 내부에 데이터 저장하는 법

#include <vector>
#include <iostream>
using namespace std;
int main() {
	int N=4;
	vector <int> V1;
	vector <int> V2 (N);
	
	for(int i=0; i<N; i++) {
		V1.push_back(i);
	}
	
	for(int i=0; i<N; i++) {
		V2[i] = i;
	}
	return 0;
}

크기가 지정되지 않은 경우 push_back함수를 이용해서 배열의 마지막에 새로운 원소를 추가할 수 있다.

vector 내부의 함수들

V.size() 벡터의 크기를 반환
V.begin()
V.end()
벡터의 시작, 끝의 주소를 반환 - alogithm헤더의 sort 함수를 사용할 때 용이
V.front()
V.back()
벡터의 처음값, 끝값 반환
V.empty() 벡터가 비어있는지 확인
V1.swap(V2) 벡터 V1과 벡터 V2가 갖는 데이터를 서로 바꿈
V.erase(V.begin+N) 벡터 V의 N번째 원소 삭제 - 괄호 안에 들어있는 값은 주소로 
V.insert(V.begin+N, K) 벡터 V의 N번째 index에 K라는 데이터 추가
V.push_back(K)
V.pop_back()
벡터 V의 마지막 원소 추가/제거
V.resize(N) 벡터 V의 크기를 N으로 재설정
V.clear() 벡터 V의 모든 데이터 삭제
vector <vector <int>> V 2차원 벡터 생성

끝 마치며

벡터를 사용하면 배열을 사용하는 것보다 편리하게 원소를 추가하거나 삭제하고, 크기를 확인하기 쉽다. 특히 다른 함수로 배열을 넘기는 경우 배열의 크기를 찾기 굉장히 힘든데, 이때 벡터를 이용하면 V.size()함수를 이용해서 빠르게 구한다.

+ Recent posts