Vector Container
기술노트
[C++] Vector 컨테이너 기초
Vector는 C++에서 제공하는 자료구조로, 자동으로 메모리를 관리해 주는 동적 배열입니다. 일반적인 배열과 다르게 크기가 자동으로 늘어나거나 줄어들 수 있어서 매우 편리합니다.
Vector 특징
- 자동으로 크기가 늘어나고 줄어듦
- 데이터의 추가와 제거가 쉬움
- 인덱스로 바로 접근 가능 (배열처럼 사용 가능)
- 내부적으로 연속된 메모리 공간에 저장됨
기본 사용법
먼저 <vector> 헤더 파일을 포함해야 합니다.
#include <vector>
다음과 같이 벡터를 선언합니다. (데이터 타입을 정해야 합니다)
vector<int> v; // 정수형 벡터 생성
vector<string> s; // 문자열 벡터 생성
주요 기능 (함수)
벡터에서 자주 사용하는 함수는 다음과 같습니다.
함수 | 설명 | 사용법 예시 |
---|---|---|
push_back() | 벡터 끝에 원소 추가 | v.push_back(10); |
pop_back() | 벡터 끝의 원소 제거 | v.pop_back(); |
at() | 특정 위치 원소 접근 (안전한 방법, 범위 체크 있음) | v.at(0); |
[ ] | 특정 위치 원소 접근 (빠른 방법, 범위 체크 없음) | v[0]; |
front() | 첫 번째 원소 참조 | v.front(); |
back() | 마지막 원소 참조 | v.back(); |
clear() | 벡터의 모든 원소 삭제 | v.clear(); |
size() | 원소 개수 확인 | v.size(); |
capacity() | 할당된 메모리 크기 확인 | v.capacity(); |
empty() | 벡터가 비어있는지 확인 (true 또는 false 반환) | v.empty(); |
resize(n) | 벡터 크기를 n으로 변경 (크기를 늘릴 경우 기본값으로 채움) | v.resize(5); |
assign(n, value) | 벡터를 n개의 원소로 채우고 각 원소를 value로 설정 | v.assign(3, 7); |
size와 capacity의 차이점
- size는 현재 실제 저장된 원소의 개수
- capacity는 실제 할당된 전체 메모리 공간 크기
Vector를 사용한 간단한 예제
다음은 간단한 벡터 사용 예제입니다.
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v; // 정수형 벡터 생성
v.push_back(1); // 벡터에 1 추가
v.push_back(2); // 벡터에 2 추가
v.push_back(3); // 벡터에 3 추가
// 벡터의 모든 원소 출력 (for문 사용)
for(int i = 0; i < v.size(); i++) {
cout << v[i] << endl;
}
return 0;
}
결과:
1 2 3
Iterator(반복자)를 이용한 출력 예제
벡터를 더 간단히 순회할 수 있는 방법으로 반복자를 사용합니다.
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v = {1, 2, 3};
// 반복자(iterator)를 사용한 벡터 원소 출력
vector<int>::iterator iter;
for(iter = v.begin(); iter != v.end(); iter++) {
cout << *iter << endl;
}
return 0;
}
결과:
1 2 3
요약 정리
- 벡터는 크기가 자동으로 관리되는 편리한 배열이다.
- push_back(), pop_back()으로 쉽게 데이터 추가/삭제 가능하다.
- size(), empty() 등을 통해 쉽게 상태를 확인할 수 있다.
- 반복자(iterator)를 이용하면 원소 접근과 관리가 더욱 편리하다.