1 분 소요

개요

  • 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