상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - C++에서 std::for_each의 사용법은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
`std::for_each`는 C++ 표준 라이브러리의 알고리즘 중 하나로, 주어진 범위의 요소들에 대해 특정 작업을 수행하는 데 사용됩니다. 이 알고리즘은 `<algorithm>` 헤더 파일에 정의되어 있으며, 주로 컨테이너의 요소를 반복적으로 처리할 때 유용합니다. <a href='https://sangseek.com/sangseeks/기본 사용법/ko'>기본 사용법</a> `std::for_each`의 기본 형태는 다음과 같습니다: ```cpp include <algorithm> include <vector> include <iostream> template <class InputIt, class UnaryFunction> UnaryFunction for_each(InputIt first, InputIt last, UnaryFunction f); ``` - InputIt first : 처리할 범위의 시작 반복자. - InputIt last : 처리할 범위의 끝 반복자. - UnaryFunction f : 각 요소에 적용할 함수 또는 함수 객체. 예제 다음은 `std::for_each`를 사용하여 벡터의 모든 요소를 출력하는 간단한 예제입니다. ```cpp include <algorithm> include <vector> include <iostream> int main() { std::vector<int> numbers = {1, 2, 3, 4, 5}; // 람다 함수를 사용하여 각 요소를 출력 std::for_each(numbers.begin(), numbers.end(), [](int n) { std::cout << n << " "; }); std::cout << std::endl; return 0; } ``` 이 코드에서 `std::for_each`는 `numbers` 벡터의 각 요소에 대해 람다 함수를 호출하여 요소를 출력합니다. 사용자 정의 함수 사용 `std::for_each`는 사용자 정의 함수도 사용할 수 있습니다. 다음은 사용자 정의 함수를 사용하는 예제입니다. ```cpp include <algorithm> include <vector> include <iostream> void print(int n) { std::cout << n << " "; } int main() { std::vector<int> numbers = {1, 2, 3, 4, 5}; // 사용자 정의 함수를 사용하여 각 요소를 출력 std::for_each(numbers.begin(), numbers.end(), print); std::cout << std::endl; return 0; } ``` 상태를 유지하는 함수 객체 `std::for_each`는 상태를 유지하는 함수 객체를 사용할 수도 있습니다. 다음은 카운터를 사용하여 각 요소를 출력하는 예제입니다. ```cpp include <algorithm> include <vector> include <iostream> class Counter { public: void operator()(int n) { std::cout << n << " "; count++; } int getCount() const { return count; } private: int count = 0; }; int main() { std::vector<int> numbers = {1, 2, 3, 4, 5}; Counter counter; std::for_each(numbers.begin(), numbers.end(), counter); std::cout << "\nTotal count: " << counter.getCount() << std::endl; return 0; } ``` 주의사항 1. 범위 : `std::for_each`는 주어진 범위의 요소를 처리하므로, `first`와 `last` 반복자가 유효한 범위를 가리키고 있어야 합니다. 그렇지 않으면 정의되지 않은 동작이 발생할 수 있습니다. 2. 변경 가능성 : `std::for_each`는 요소를 변경할 수 있는 함수 객체를 사용할 수 있지만, 이 경우에는 주의가 필요합니다. 예를 들어, 컨테이너의 크기를 변경하는 작업은 안전하지 않을 수 있습니다. 3. 반환 값 : `std::for_each`는 마지막으로 호출된 함수 객체를 반환합니다. 이를 통해 상태를 유지하는 함수 객체의 상태를 외부에서 확인할 수 있습니다. 결론 `std::for_each`는 C++에서 컨테이너의 요소를 반복적으로 처리하는 데 매우 유용한 도구입니다. 람다 함수, 사용자 정의 함수, 상태를 유지하는 함수 객체 등 다양한 방법으로 사용할 수 있으며, 코드의 가독성을 높이고 반복적인 작업을 간결하게 표현할 수 있습니다. C++11 이후의 <a href='https://sangseek.com/sangseeks/람다 표현식/ko'>람다 표현식</a>과 함께 사용하면 더욱 강력한 기능을 발휘합니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기