vector.assign()과 vector.resize()의 차이
resize()와 assign()의 차이는 주로 초기화 방식과 벡터의 동작에 있다.
- resize()는 벡터의 크기를 조정하지만, 기본값으로만 초기화 된다. resize(MAX_N)이라고 하면, 벡터는 MAX_N 크기로 변경되고 새로운 요소들은 0으로 초기화된다. 하지만 기존 요소들이 있다면 값을 변경하지 않고 그대로 남겨둔다.
- assign()은 벡터의 크기를 조정하면서 모든 요소를 새 값으로 덮어쓴다. assign(MAX_N, 0)을 하면 벡터의 모든 값을 0으로 설정하여 초기화하며, 이전에 남아있던 값들도 모두 덮어쓴다.
따라서 assign은 벡터의 모든 요소를 특정 값으로 확실하게 덮었는 경우에 적합하고, resize는 크기만 조정할 때 사용한다.
알고리즘 문제 풀 때 왜 초기화 되지 않나 했더니 resize는 이전 값을 초기화 하지 않는다고...
'C++' 카테고리의 다른 글
[C++] CPP에서 변수 이름 y1을 사용하지 못하는 건에 대하여 (7) | 2024.12.10 |
---|---|
[C++] for loop에서 const auto&의 사용 (0) | 2024.12.01 |
[C++] 소수점 고정 시 반올림 오류와 부동 소수점 오차 (0) | 2024.08.13 |
[C++] 소수점 고정 출력과 cout << fixed, cout << setprecision(), cout.precision() (0) | 2024.08.13 |
[C++] cin과 getline(), 그리고 cin.ignore() (0) | 2024.08.13 |