본문 바로가기
C++

[C++] 2차원 벡터 초기화 clear, assign

by arirang_ 2025. 1. 2.

 

 

코딩 테스트 문제를 풀다가 테스트 마다 2차원 벡터를 초기화해야 하는 문제가 있었다.

 

clearassign을 사용한 초기화는 사용 목적과 효율성에서 차이가 있다.

 

📌 clear

vector<int> adj[1004];

for (int i = 0; i < n; i++) {
    adj[i].clear(); // 기존 데이터를 비움, 메모리는 유지
}

 

📌 assign

vector<vector<int>> adj;
adj.assign(n + 1, vector<int>()); // n+1개의 빈 벡터로 초기화

 

📌 차이점 정리

특징 clear() assign()
기존 메모리 재사용 O (메모리 유지) X(새로운 크기나 값 설정 시 재할당)
효율성 더 빠름(메모리 해제하지 않음) 다소 느릴 수 있음(재할당 필요시)
크기 변경 불가능 가능
값 초기화 불가능(빈 상태로 만듦) 가능(특정 값으로 초기화 가능)
추천 상황 크기가 고정되고 데이터만 비워야할 때 크기가 가변적이거나 특정 값으로 초기화할 때

 

 

추가로, 벡터 초기화 방법에는 fill, memset, 변수에 재할당도 존재한다.