★ 개념
함수 | 설명 |
size() | 벡터에 실제로 저장된 요소 갯수 |
capacity() | 벡터가 재할당 없이 저장할 수 있는 최대 요소 갯수 |
resize(n) | 벡터의 size를 n으로 변경 |
reserve(n) | 벡터의 capacity를 최소 n으로 예약만 함 (요소 갯수는 변하지 X) |
★ 차이점
항목 | resize(n) | reserve(n) |
실제 요소 수 (size) | 변경 | 변경X |
용량 (capacity) | 필요 시 늘어남 | 늘어남 (줄어들지 X) |
자동 초기화 | 0 또는 기본값으로 초기화 | X |
메모리 재할당 | 필요 시 발생 | 필요 시 발생 |
요소 접근 가능 여부 | 가능 (v[i]) | 예약만 했으니까 접근 불가 |
용도 | 요소 갯수 변경 | 성능 최적화를 위한 사전 예약 |
★ 예시
#include <iostream>
#include <vector>
int main()
{
using namespace std;
vector<int> v;
cout << "초기 size: " << v.size() << ", capacity: " << v.capacity() << "\n\n";
v.reserve(10);
// 예약만 했으니까, 용량은 10이고, size는 그대로 0임
cout << "reserve(10) 후 size: " << v.size() << ", capacity: " << v.capacity() << "\n\n";
v.resize(5);
// 위에서 예약한 용량 10은 그대로 유지되고, 요소가 0으로 초기화 되었으니까 size는 5가 됨
cout << "resize(5) 후 size: " << v.size() << ", capacity: " << v.capacity() << "\n\n";
for (int i = 0; i < v.size(); ++i)
{
cout << v[i] << ' '; // 기본값 0으로 초기화됨
}
cout << '\n';
return 0;
}
'C++' 카테고리의 다른 글
[C++] 주요 vector 함수 (0) | 2025.05.06 |
---|---|
[C++] array 객체와 vector 객체 (0) | 2025.05.06 |
[C++] 파일 입출력 (.txt 파일) (0) | 2025.05.05 |
[C++] cin.fail() | cin.clear() | cin.ignore() (0) | 2025.05.05 |
[C++] 문자열 | string을 전달인자로 하는 함수 (0) | 2025.05.02 |