C++ 11 에서 추가된 범위 기반 for 문이다.
오히려 std::for_each 보다도 훨씬 더 C#의 foreach와 비슷하다.
#include <iostream>
#include <vector>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
for (int num : numbers) {
std::cout << num << ' ';
}
return 0;
}
타입은 auto를 쓰는 경우도 있다. 그렇지만 auto는 이터레이터가 아니고서야 가급적 안쓰는 걸 추천.
auto는 기본적으로 값 타입으로 추론되기 대문에, 참조나 포인터로 사용하려면 반드시 &나 *를 명시하자.
단. 사용 의도에 따라 주의해야 할 점이 몇개있다.
기본적으로 for는 복사해 요소를 가져온다는 점에 주의하자.
1. 수정없이 보기만 하는 경우
- const를 붙여 수정하지 않을 것을 명시적으로 표기하자.
for (const int& num : numbers) {
std::cout << num << ' ';
}
2. 값을 수정해야하는 경우
- &를 붙여서 참조기반으로 순회하도록 하자.
std::vector<int> numbers = {1, 2, 3, 4, 5};
for (int& num : numbers) { // 참조로 순회
num *= 2; // 각 요소를 2배로 변경
}
물론 이는 일반 for문에도 적용되는 문제이다.
for (int i = 0; i < numbers.size(); ++i) {
int& num = numbers[i]; // 참조 사용
num *= 2; // 원본 값을 직접 변경
}
'🌍 C++ Study > C++ 기초' 카테고리의 다른 글
C++ string to int / int to string / stoi, stol, stof (0) | 2024.11.11 |
---|---|
C++ string 이어 붙이기 (0) | 2024.11.11 |
C++ string replace 문자열 바꾸기 (0) | 2024.11.10 |
C++ 의 스트링빌더 std::stringstream (0) | 2024.11.10 |
C++ foreach 로 문자열 char로 불러오기 (0) | 2024.11.09 |