⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 transformation.hpp

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 HPP
📖 第 1 页 / 共 2 页
字号:
        }        template<class R>        void operator()(R& r) const        {            execute(r, has_sort<R>());        }        template<class R, class C>        void execute(R& r, C c, mpl::true_) const        {            r.sort(c);        }        template<class R, class C>        void execute(R& r, C c, mpl::false_) const        {            std::sort(detail::begin_(r), detail::end_(r), c);        }        template<class R, class C>        void operator()(R& r, C c) const        {            execute(r, c, has_sort<R>());        }    };    struct stable_sort    {        template<class R, class C = void>        struct result        {            typedef void type;        };        template<class R>        void operator()(R& r) const        {            std::stable_sort(detail::begin_(r), detail::end_(r));        }        template<class R, class C>        void operator()(R& r, C c) const        {            std::stable_sort(detail::begin_(r), detail::end_(r), c);        }    };    struct partial_sort    {        template<class R, class M, class C = void>        struct result        {            typedef void type;        };        template<class R, class M>        void operator()(R& r, M m) const        {            std::partial_sort(detail::begin_(r), m, detail::end_(r));        }        template<class R, class M, class C>        void operator()(R& r, M m, C c) const        {            std::partial_sort(detail::begin_(r), m, detail::end_(r), c);        }    };    struct partial_sort_copy    {        template<class R1, class R2, class C = void>        struct result : range_result_iterator<R2>        {};        template<class R1, class R2>        typename result<R1, R2>::type operator()(R1& r1, R2& r2) const        {            return std::partial_sort_copy(                detail::begin_(r1), detail::end_(r1)                , detail::begin_(r2), detail::end_(r2)                );        }        template<class R1, class R2, class C>        typename result<R1, R2>::type operator()(R1& r1, R2& r2, C c) const        {            return std::partial_sort_copy(                detail::begin_(r1), detail::end_(r1)                , detail::begin_(r2), detail::end_(r2)                , c                );        }    };    struct nth_element    {        template<class R, class N, class C = void>        struct result        {            typedef void type;        };        template<class R, class N>        void operator()(R& r, N n) const        {            return std::nth_element(detail::begin_(r), n, detail::end_(r));        }        template<class R, class N, class C>        void operator()(R& r, N n, C c) const        {            return std::nth_element(detail::begin_(r), n, detail::end_(r), c);        }    };    struct merge     {        template<class R1, class R2, class O, class C = void>        struct result            : detail::decay_array<O>        {};        template<class R1, class R2, class O>        typename result<R1, R2, O>::type operator()(R1& r1, R2& r2, O o) const        {            return std::merge(                detail::begin_(r1), detail::end_(r1)                , detail::begin_(r2), detail::end_(r2)                , o                );        }        template<class R1, class R2, class O, class C>        typename result<R1, R2, O, C>::type operator()(R1& r1, R2& r2, O o, C c) const        {            return std::merge(                detail::begin_(r1), detail::end_(r1)                , detail::begin_(r2), detail::end_(r2)                , o                , c                );        }    };    struct inplace_merge     {        template<class R, class M, class C = void>        struct result        {            typedef void type;        };        template<class R, class M>        void operator()(R& r, M m) const        {            return std::inplace_merge(detail::begin_(r), m, detail::end_(r));        }        template<class R, class M, class C>        void operator()(R& r, M m, C c) const        {            return std::inplace_merge(detail::begin_(r), m, detail::end_(r), c);        }    };    struct next_permutation    {        template<class R, class C = void>        struct result        {            typedef bool type;        };        template<class R>        bool operator()(R& r) const        {            return std::next_permutation(detail::begin_(r), detail::end_(r));        }            template<class R, class C>        bool operator()(R& r, C c) const        {            return std::next_permutation(detail::begin_(r), detail::end_(r), c);        }    };    struct prev_permutation    {        template<class R, class C = void>        struct result        {            typedef bool type;        };        template<class R>        bool operator()(R& r) const        {            return std::prev_permutation(detail::begin_(r), detail::end_(r));        }            template<class R, class C>        bool operator()(R& r, C c) const        {            return std::prev_permutation(detail::begin_(r), detail::end_(r), c);        }    };    struct inner_product    {        template<class R, class I, class T, class C1 = void, class C2 = void>        struct result        {            typedef T type;        };        template<class R, class I, class T>        typename result<R,I,T>::type        operator()(R& r, I i, T t) const        {            return std::inner_product(                detail::begin_(r), detail::end_(r), i, t);        }        template<class R, class I, class T, class C1, class C2>        typename result<R,I,T,C1,C2>::type        operator()(R& r, I i, T t, C1 c1, C2 c2) const        {            return std::inner_product(                detail::begin_(r), detail::end_(r), i,                 t, c1, c2);        }    };    struct partial_sum    {        template<class R, class I, class C = void>        struct result            : detail::decay_array<I>        {};        template<class R, class I>        typename result<R,I>::type        operator()(R& r, I i) const        {            return std::partial_sum(                detail::begin_(r), detail::end_(r), i);        }        template<class R, class I, class C>        typename result<R,I,C>::type        operator()(R& r, I i, C c) const        {            return std::partial_sum(                detail::begin_(r), detail::end_(r), i, c);        }    };    struct adjacent_difference    {        template<class R, class I, class C = void>        struct result            : detail::decay_array<I>        {};        template<class R, class I>        typename result<R,I>::type        operator()(R& r, I i) const        {            return std::adjacent_difference(                detail::begin_(r), detail::end_(r), i);        }        template<class R, class I, class C>        typename result<R,I,C>::type        operator()(R& r, I i, C c) const        {            return std::adjacent_difference(                detail::begin_(r), detail::end_(r), i, c);        }        };    struct push_heap    {        template<class R, class C = void>        struct result        {            typedef void type;        };        template<class R>        void operator()(R& r) const        {            std::push_heap(detail::begin_(r), detail::end_(r));        }        template<class R, class C>        void operator()(R& r, C c) const        {            std::push_heap(detail::begin_(r), detail::end_(r), c);        }    };    struct pop_heap    {        template<class R, class C = void>        struct result        {            typedef void type;        };        template<class R>        void operator()(R& r) const        {            std::pop_heap(detail::begin_(r), detail::end_(r));        }        template<class R, class C>        void operator()(R& r, C c) const        {            std::pop_heap(detail::begin_(r), detail::end_(r), c);        }    };    struct make_heap    {        template<class R, class C = void>        struct result        {            typedef void type;        };        template<class R>        void operator()(R& r) const        {            std::make_heap(detail::begin_(r), detail::end_(r));        }        template<class R, class C>        void operator()(R& r, C c) const        {            std::make_heap(detail::begin_(r), detail::end_(r), c);        }    };    struct sort_heap    {        template<class R, class C = void>        struct result        {            typedef void type;        };        template<class R>        void operator()(R& r) const        {            std::sort_heap(detail::begin_(r), detail::end_(r));        }        template<class R, class C>        void operator()(R& r, C c) const        {            std::sort_heap(detail::begin_(r), detail::end_(r), c);        }    };    struct set_union    {        template<class R1, class R2, class O, class C = void>        struct result            : detail::decay_array<O>        {};        template<class R1, class R2, class O>        typename result<R1, R2, O>::type operator()(R1& r1, R2& r2, O o) const        {            return std::set_union(                detail::begin_(r1), detail::end_(r1)                , detail::begin_(r2), detail::end_(r2)                , o                );        }        template<class R1, class R2, class O, class C>        typename result<R1, R2, O, C>::type operator()(R1& r1, R2& r2, O o, C c) const        {            return std::set_union(                detail::begin_(r1), detail::end_(r1)                , detail::begin_(r2), detail::end_(r2)                , o                , c                );        }    };    struct set_intersection    {        template<class R1, class R2, class O, class C = void>        struct result            : detail::decay_array<O>        {};        template<class R1, class R2, class O>        typename result<R1, R2, O>::type operator()(R1& r1, R2& r2, O o) const        {            return std::set_intersection(                detail::begin_(r1), detail::end_(r1)                , detail::begin_(r2), detail::end_(r2)                , o                );        }        template<class R1, class R2, class O, class C>        typename result<R1, R2, O, C>::type operator()(R1& r1, R2& r2, O o, C c) const        {            return std::set_intersection(                detail::begin_(r1), detail::end_(r1)                , detail::begin_(r2), detail::end_(r2)                , o                , c                );        }    };    struct set_difference    {        template<class R1, class R2, class O, class C = void>        struct result            : detail::decay_array<O>        {};        template<class R1, class R2, class O>        typename result<R1, R2, O>::type operator()(R1& r1, R2& r2, O o) const        {            return std::set_difference(                detail::begin_(r1), detail::end_(r1)                , detail::begin_(r2), detail::end_(r2)                , o                );        }        template<class R1, class R2, class O, class C>        typename result<R1, R2, O, C>::type operator()(R1& r1, R2& r2, O o, C c) const        {            return std::set_difference(                detail::begin_(r1), detail::end_(r1)                , detail::begin_(r2), detail::end_(r2)                , o                , c                );        }    };    struct set_symmetric_difference    {        template<class R1, class R2, class O, class C = void>        struct result            : detail::decay_array<O>        {};        template<class R1, class R2, class O>        typename result<R1, R2, O>::type operator()(R1& r1, R2& r2, O o) const        {            return std::set_symmetric_difference(                detail::begin_(r1), detail::end_(r1)                , detail::begin_(r2), detail::end_(r2)                , o                );        }        template<class R1, class R2, class O, class C>        typename result<R1, R2, O, C>::type operator()(R1& r1, R2& r2, O o, C c) const        {            return std::set_symmetric_difference(                detail::begin_(r1), detail::end_(r1)                , detail::begin_(r2), detail::end_(r2)                , o                , c                );        }    };}}} // boost::phoenix::implnamespace boost { namespace phoenix{    function<impl::swap> const swap = impl::swap();    function<impl::copy> const copy = impl::copy();    function<impl::copy_backward> const copy_backward = impl::copy_backward();    function<impl::transform> const transform = impl::transform();    function<impl::replace> const replace = impl::replace();    function<impl::replace_if> const replace_if = impl::replace_if();    function<impl::replace_copy> const replace_copy = impl::replace_copy();    function<impl::replace_copy_if> const replace_copy_if = impl::replace_copy_if();    function<impl::fill> const fill = impl::fill();    function<impl::fill_n> const fill_n = impl::fill_n();    function<impl::generate> const generate = impl::generate();    function<impl::generate_n> const generate_n = impl::generate_n();    function<impl::remove> const remove = impl::remove();    function<impl::remove_if> const remove_if = impl::remove_if();    function<impl::remove_copy> const remove_copy = impl::remove_copy();    function<impl::remove_copy_if> const remove_copy_if = impl::remove_copy_if();    function<impl::unique> const unique = impl::unique();    function<impl::unique_copy> const unique_copy = impl::unique_copy();    function<impl::reverse> const reverse = impl::reverse();    function<impl::reverse_copy> const reverse_copy = impl::reverse_copy();    function<impl::rotate> const rotate = impl::rotate();    function<impl::rotate_copy> const rotate_copy = impl::rotate_copy();    function<impl::random_shuffle> const random_shuffle = impl::random_shuffle();    function<impl::partition> const partition = impl::partition();    function<impl::stable_partition> const stable_partition = impl::stable_partition();    function<impl::sort> const sort = impl::sort();    function<impl::stable_sort> const stable_sort = impl::stable_sort();    function<impl::partial_sort> const partial_sort = impl::partial_sort();    function<impl::partial_sort_copy> const partial_sort_copy = impl::partial_sort_copy();    function<impl::nth_element> const nth_element = impl::nth_element();    function<impl::merge> const merge = impl::merge();    function<impl::inplace_merge> const inplace_merge = impl::inplace_merge();    function<impl::next_permutation> const next_permutation = impl::next_permutation();    function<impl::prev_permutation> const prev_permutation = impl::prev_permutation();    function<impl::inner_product> const inner_product = impl::inner_product();    function<impl::partial_sum> const partial_sum = impl::partial_sum();    function<impl::adjacent_difference> const adjacent_difference = impl::adjacent_difference();    function<impl::push_heap> const push_heap = impl::push_heap();    function<impl::pop_heap> const pop_heap = impl::pop_heap();    function<impl::make_heap> const make_heap = impl::make_heap();    function<impl::sort_heap> const sort_heap = impl::sort_heap();    function<impl::set_union> const set_union = impl::set_union();    function<impl::set_intersection> const set_intersection = impl::set_intersection();    function<impl::set_difference> const set_difference = impl::set_difference();    function<impl::set_symmetric_difference> const set_symmetric_difference = impl::set_symmetric_difference();}}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -