C++에서 for
루프를 사용하여 std::vector
의 값들을 확인하는 방법은 크게 세 가지가 있으며, 각각의 장단점과 유용한 상황이 있습니다.
for
루프 (Traditional For Loop)가장 전통적이고 기본적인 방법으로, 인덱스를 사용하여 벡터의 요소에 접근합니다.
문법:
std::vector<int> numbers = {10, 20, 30, 40, 50};
for (size_t i = 0; i < numbers.size(); ++i) {
std::cout << numbers[i] << " ";
}
특징:
numbers.size()
가 unsigned 타입인 size_t
를 반환하므로, 루프 변수 i
의 타입도 size_t
로 맞춰주는 것이 안전합니다.for (int i = 0; i < vec.size(); ++i) { if (i % 2 == 0) { ... } }
)for (int i = vec.size() - 1; i >= 0; --i) { ... }
)for
루프 (Range-based For Loop)C++11부터 도입된 문법으로, 컨테이너의 모든 요소를 순서대로 순회할 때 가장 간결하고 가독성이 높습니다.
문법:
std::vector<int> numbers = {10, 20, 30, 40, 50};
// 값 복사
for (int num : numbers) {
std::cout << num << " ";
}
// 값 수정 (참조 사용)
for (int& num : numbers) {
num = num * 2;
}
// 값 읽기만 할 때 (const 참조 사용)
for (const int& num : numbers) {
std::cout << num << " ";
}
특징:
off-by-one
오류)가 발생할 염려가 없습니다.&
)를 사용하면 요소에 직접 접근하여 값을 수정할 수 있습니다.const
참조(const &
)를 사용하면 불필요한 객체 복사를 막아 성능을 최적화하고, 원본 데이터가 변경되지 않음을 보장할 수 있습니다.for
루프 (Iterator-based For Loop)