개요
- reference
- 알고리즘 및 반복자 라이브러리에 대한 확장 및 일반화 구성 및 안정화
- auto 혹은 ranged for와 같은 효과
| 연산자 오버로딩이 되어 있어 간결하고 직관적인 코드 작성 가능
- 정통적인 함수 호출 방식도 사용 가능
예제
- 코드
#include <iostream>
#include <ranges>
using namespace std;
int main() {
auto v = {1, 2, 3, 4, 5, 6, 7, 8, 9};
for (const auto &iter : v | views::reverse) {
cout << iter << " ";
}
cout << endl;
for (const auto &iter : v) {
cout << iter << " ";
}
cout << endl;
cout << "------" << endl;
for (const auto &iter : v | views::filter([](int i) { return i % 2; }) |
views::transform([](int i) { return i * 2; }) |
views::take(3)) {
cout << iter << " ";
}
cout << endl;
cout << "------" << endl;
for (const auto &iter : views::take(
views::transform(views::filter(v, [](int i) { return i % 2; }),
[](int i) { return i * 2; }),
3)) {
cout << iter << " ";
}
cout << endl;
cout << "------" << endl;
for (const auto &iter : v) {
cout << iter << " ";
}
cout << endl;
return 0;
}
- 실행 결과
9 8 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8 9
------
2 6 10
------
2 6 10
------
1 2 3 4 5 6 7 8 9