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)