[C++] ranges
Updated:
개요
- 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