💡 퀵 접속: cpp.kr/for_each_n
C++ 표준 라이브러리의 알고리즘으로, 주어진 범위의 처음 n개 요소에 대해 지정된 함수를 실행합니다. 함수는 단항 함수로 제공되며, 각 요소를 인자로 받아 처리합니다.
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
// 처음 5개 요소만 출력
std::for_each_n(numbers.begin(), 5,
[](int n) { std::cout << n << " "; });
std::cout << std::endl;
// 처음 3개 요소만 제곱하여 출력
std::for_each_n(numbers.begin(), 3,
[](int n) { std::cout << n * n << " "; });
std::cout << std::endl;
return 0;
}
실행 결과:
1 2 3 4 5 1 4 9
#include <iostream>
#include <string>
#include <algorithm>
#include <cctype>
int main() {
std::string text = "Hello, World!";
// 처음 5개 문자만 대문자로 변환
std::for_each_n(text.begin(), 5,
[](char& c) { c = std::toupper(c); });
std::cout << "처음 5개 문자 대문자 변환: " << text << std::endl;
// 처음 3개 문자만 소문자로 변환
std::for_each_n(text.begin(), 3,
[](char& c) { c = std::tolower(c); });
std::cout << "처음 3개 문자 소문자 변환: " << text << std::endl;
return 0;
}
실행 결과:
처음 5개 문자 대문자 변환: HELLO, World! 처음 3개 문자 소문자 변환: helLO, World!
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
struct Person {
std::string name;
int age;
};
int main() {
std::vector<Person> people = {
{"Alice", 20},
{"Bob", 25},
{"Charlie", 30},
{"David", 35},
{"Eve", 40}
};
// 처음 3명의 정보만 출력
std::for_each_n(people.begin(), 3,
[](const Person& p) {
std::cout << p.name << " (" << p.age << "세)" << std::endl;
});
// 처음 2명의 나이만 1씩 증가
std::for_each_n(people.begin(), 2,
[](Person& p) { p.age++; });
std::cout << "\n처음 2명의 나이 증가 후:" << std::endl;
std::for_each_n(people.begin(), 3,
[](const Person& p) {
std::cout << p.name << " (" << p.age << "세)" << std::endl;
});
return 0;
}
실행 결과:
Alice (20세) Bob (25세) Charlie (30세) 처음 2명의 나이 증가 후: Alice (21세) Bob (26세) Charlie (30세)
| 함수 | 설명 |
|---|---|
| for_each_n(first, n, f) | 주어진 범위의 처음 n개 요소에 대해 함수 f를 실행 |