본문 바로가기
프로그래밍/C++

범위기반 for문, 문자열에서 문자 반복

by eteo 2023. 3. 25.

 

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)