C++ 컨테이너를 공부하면 흔히 이런 기준을 먼저 외우게 됩니다.“중간 삽입과 삭제가 많으면 std::list, 빠른 인덱스 접근이 필요하면 std::vector를 사용한다.”복잡도 표만 보면 맞는 말처럼 보이지만, 실무에서 컨테이너를 고를 때는 이것만으로 부족합니다.메모리 배치, 캐시 지역성, 탐색 비용, iterator 안정성까지 함께 봐야 실제 성능과 코드 구조를 판단할 수 있습니다. 중간 삽입이 O(1)이라는 이유만으로 list를 선택하면 안 됩니다. 삽입 위치를 찾는 비용과 메모리 접근 비용까지 포함해 판단해야 합니다. 이번 글에서는 std::vector와 std::list의 차이를 코드로 비교하고, 대부분의 상황에서 vector가 기본 선택인 이유와 list가 필요한 조건을 정리해보겠습니다. ..