C++의 범위기반 for문은 C#에서의 foreach와 같으며 사용법은 아래와 같다.
for(data type elem : data list)
{
// do something with elem variable
}
array, vector, string 등 순회가 가능한 데이터 리스트는 범위기반 for문을 사용해 반복할 수 있다.
일반 for문에 비해 안전하고 간단하지만 index 정보가 없다는 단점이 있다.
문자열에서 문자 반복하기
string 클래스의 length(), size() 메소드를 사용해 일반 for문을 돌릴 수 있지만 아래와 같이 범위기반 for문을 쓸 수도 있다.
for (char c : s)
for (char& c : s)
위 두 for문의 차이는 위에 것은 s의 element를 c에 복사해 저장하기 때문에, c를 수정해도 s에 영향이 없지만,
아래 것은 참조자로 받기 때문에 복사가 일어나지 않아서 속도가 더 빠르고 c를 수정하면 s가 수정된다.
✔ 참고로 string 클래스의 length() 와 size()는 개념상 차이가 있을 수 있지만 기능상으로 완전 동일하며 결과도 동일하게 나온다. 그리고 length()의 경우 string 클래스에만 있지만, size()는 모든 C++ 컨테이너에서도 사용되는 일반적인 함수이다.
✔ element의 타입을 아래와 같이 지정할 수도 있다. 여기서 auto는 타입 추론 키워드로 초기화 값에 따라 알아서 데이터 타입을 정해주는 키워드이다.
for (auto& c : s)
'프로그래밍 > C++' 카테고리의 다른 글
C++ ] vector 사용법 (0) | 2023.03.31 |
---|---|
C++ ] STL 과 컨테이너 (0) | 2023.03.25 |
C 와 C++ 으로 10진수를 2진수로 변환하여 출력하기 (0) | 2022.09.01 |
C++ ] 이중 포인터와 포인터 배열의 차이 (0) | 2022.06.28 |
C++ ] 교통사고 통계자료 필터 프로그램 (2) - vector 사용 , 파입입출력 (0) | 2022.06.28 |