rangeextension

Next

Chapter 1. Range Extension 0.1

Akira Takahashi

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

Table of Contents

Reference
Range Adaptors
dropped
dropped_while
taken
taken_while

このライブラリは、Boost Range Libraryの拡張ライブラリである。 このライブラリは、より強力なRangeプログラミングのためのRangeアダプタやユーティリティを含んでいる。 たとえば、このライブラリによって強化されたBoost.Rangeを使用することで、クイックソートが以下のように記述することができる:

typedef
    any_range<int, forward_traversal_tag, int&, std::ptrdiff_t>
range;

range quick_sort(range rng)
{
    if (!rng)
        return rng;
    else {
        int& x = rng | front;
        range xs = rng | dropped(1);

        return
            join(
                join(
                    quick_sort(xs |+ filtered(_1 < x)),
                    single(x)
                ),
                quick_sort(xs |+ filtered(_1 >= x))
            );
    }
}

std::vector<int> v = boost::assign::list_of(3)(2)(5)(4)(6)(1);
std::cout << quick_sort(range(v)) << std::endl;

Last revised: March 17, 2011 at 01:54:07 GMT


Next