웹사이트 검색

C++의 foreach 루프


소개

C++의 foreach 루프, 특히 범위 기반 for 루프는 C++11에서 도입되었습니다. 이러한 유형의 for 루프 구조는 반복 가능한 데이터 세트에 대한 순회를 용이하게 합니다. 초기화 프로세스를 제거하고 반복자가 아닌 각각의 모든 요소를 순회함으로써 이를 수행합니다. 이제 각각의 foreach 루프 구조를 파헤쳐 보겠습니다.

C++에서 foreach 루프 작업

따라서 기본적으로 for-each 루프는 벡터 또는 다른 데이터 세트의 요소를 반복합니다. 루프 내부에서 선언된 변수 iterator에 현재 요소의 값을 할당합니다. 구문을 자세히 살펴보겠습니다.

for(type variable_name : array/vector_name)
{
    loop statements
    ...
}

보시다시피:

  • 루프 초기화 중에 요소 변수 선언은 배열 또는 벡터를 반복할 변수를 선언해야 하는 부분입니다. 여기서 type은 variable_name
  • 의 데이터 유형입니다.\n
  • 배열/벡터 이름은 루프가 반복될 각 데이터 세트의 이름입니다.
  • 루프 문은 사용자가 반복 변수를 사용하여 해당 요소에 대해 수행하도록 선택할 수 있는 다양한 작업입니다.

참고: 변수의 데이터 유형을 배열 또는 벡터의 데이터 유형과 동일하게 유지하는 것이 좋습니다. 데이터 유형이 동일하지 않으면 요소가 유형 변환된 다음 변수에 저장됩니다.

foreach 루프의 예

1. C++에서 배열에 대한 foreach 루프의 예

아래 주어진 코드는 C++에서 for-each 루프의 사용을 보여줍니다.

#include<iostream>
using namespace std; 
int main() 
{ 
    int arr[]={1,2,3,4,5};   //array initialization
    cout<<"The elements are: ";
    for(int i : arr)
    {
    	cout<<i<<" ";
    }
    return 0;
}

산출:

The elements are: 1 2 3 4 5

코드를 분해하여 한 줄씩 살펴보겠습니다.

  • 배열 arr[]는 일부 값 {1 , 2 , 3 , 4 , 5}로 초기화됩니다.
  • 루프 구조 내에서 'i'는 현재 배열 요소의 값을 저장하는 변수입니다.
  • arr는 각 배열의 기본 주소 역할도 하는 배열 이름입니다.
  • 보다시피 각 반복에 대해 'i'를 인쇄하면 일반적인 for 루프의 경우 배열 인덱스와 달리 해당 배열 요소가 제공됩니다.

참고: 변수 'i'를 선언하는 동안 int 대신 auto 데이터 유형을 사용할 수도 있습니다. 이렇게 하면 변수 유형이 배열 유형에서 추론되고 데이터 유형 충돌이 발생하지 않습니다.

예를 들어:

#include<iostream>
using namespace std; 
int main() 
{ 
    int array[]={1,4,7,4,8,4};
    cout<<"The elements are: ";
    for(auto var : array)
    {
    	cout<<var<<" ";
    }
    return 0;
}

산출:

2. C++의 벡터에 대한 foreach 루프의 예

다음 코드는 벡터를 반복하기 위해 for-each 루프를 사용하는 방법을 보여줍니다.

#include<iostream>
#include<vector>
using namespace std; 
int main() 
{ 
    vector<int> vec={11,22,33,44,55,66};
    cout<<"The elements are: ";
    for(auto var : vec)
    {
    	cout<<var<<" ";
	}
    return 0;
}

산출:

벡터에 대한 for-each 루프는 배열에서와 동일한 방식으로 작동합니다. 또한 유일한 차이점은 벡터 선언, 초기화 및 수행할 수 있는 다양한 작업입니다.

C++에서 foreach 루프의 장단점

1. foreach 루프의 장점

  • 오류 가능성을 제거하고 코드를 더 읽기 쉽게 만듭니다.
  • 구현하기 쉬움
  • 반복자의 사전 초기화가 필요하지 않음

2. foreach 루프의 단점

  • 해당 요소 인덱스에 직접 액세스할 수 없음
  • 요소를 역순으로 탐색할 수 없음
  • 각 요소를 통과할 때 사용자가 요소를 건너뛸 수 없습니다.

결론

C++의 foreach 루프에는 고유한 장단점이 있습니다. 코드는 읽기 쉽지만 일반적인 for 루프가 제공하는 일부 작업을 제한합니다. 따라서 루프가 수행하고 그에 따라 선택하기를 원하는 것은 전적으로 사용자에게 달려 있습니다.

참조

  • https://stackoverflow.com/questions/16504062/how-to-make-the-for-each-loop-function-in-c-work-with-a-custom-class