transformation3.cpp

来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 177 行

CPP
177
字号
/*=============================================================================    Copyright (c) 2005-2007 Dan Marsden    Copyright (c) 2005-2007 Joel de Guzman    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)==============================================================================*/#include <boost/spirit/home/phoenix/stl/algorithm/transformation.hpp>#include <boost/spirit/include/phoenix_core.hpp>#include <boost/detail/lightweight_test.hpp>#include <list>namespace{    void nth_element_test()    {        using namespace boost::phoenix;        using namespace boost::phoenix::arg_names;        int array[] = {5,1,4,3,2};        nth_element(arg1, array + 2)(array);        BOOST_TEST(array[0] < 3);        BOOST_TEST(array[1] < 3);        BOOST_TEST(array[2] == 3);        BOOST_TEST(array[3] > 3);        BOOST_TEST(array[4] > 3);        boost::phoenix::nth_element(arg1, array + 2, std::greater<int>())(array);        BOOST_TEST(array[0] > 3);        BOOST_TEST(array[1] > 3);        BOOST_TEST(array[2] == 3);        BOOST_TEST(array[3] < 3);        BOOST_TEST(array[4] < 3);        return;    }    void merge_test()    {        using namespace boost::phoenix;        using namespace boost::phoenix::arg_names;        int array[] = {1,2,3};        int array2[] = {2,3,4};        int output[6];        BOOST_TEST(merge(arg1, arg2, arg3)(array, array2, output) == output + 6);        int expected_result[] = {1,2,2,3,3,4};        BOOST_TEST(std::equal(output, output + 6, expected_result));        int array3[] = {5,4,3};        int array4[] = {3,2,1};        int output2[6];        BOOST_TEST(boost::phoenix::merge(arg1, arg2, arg3, std::greater<int>())(array3, array4, output2) ==                   output2 + 6);        int expected_result2[] = {5,4,3,3,2,1};        BOOST_TEST(std::equal(output2, output2 + 6, expected_result2));        return;    }    void inplace_merge_test()    {        using namespace boost::phoenix;        using namespace boost::phoenix::arg_names;        int array[] = {1,2,3,2,3,4};        inplace_merge(arg1, array + 3)(array);        int expected_result[] = {1,2,2,3,3,4};        BOOST_TEST(std::equal(array, array + 6, expected_result));        int array2[] = {5,4,3,4,3,2};        boost::phoenix::inplace_merge(arg1, array2 + 3, std::greater<int>())(array2);        int expected_result2[] = {5,4,4,3,3,2};        BOOST_TEST(std::equal(array2, array2 + 6, expected_result2));        return;    }    void set_union_test()    {        using namespace boost::phoenix;        using namespace boost::phoenix::arg_names;        int array[] = {1,2,3};        int array2[] = {2,3,4};        int output[4];        BOOST_TEST(set_union(arg1, arg2, arg3)(array, array2, output) == output + 4);        int expected_result[] = {1,2,3,4};        BOOST_TEST(std::equal(output, output + 4, expected_result));        int array3[] = {3,2,1};        int array4[] = {4,3,2};        int output2[4];        BOOST_TEST(boost::phoenix::set_union(arg1, arg2, arg3, std::greater<int>())                   (array3, array4, output2) ==                    output2 + 4);        int expected_result2[] = {4,3,2,1};        BOOST_TEST(std::equal(output2, output2 + 4, expected_result2));        return;    }    void set_intersection_test()    {        using namespace boost::phoenix;        using namespace boost::phoenix::arg_names;        int array[] = {1,2,3};        int array2[] = {2,3,4};        int output[2];        BOOST_TEST(set_intersection(arg1, arg2, arg3)(array, array2, output) == output + 2);        int expected_result[] = {2,3};        BOOST_TEST(std::equal(output, output + 2, expected_result));        int array3[] = {3,2,1};        int array4[] = {4,3,2};        int output2[2];        BOOST_TEST(boost::phoenix::set_intersection(arg1, arg2, arg3, std::greater<int>())                   (array3, array4, output2) ==                    output2 + 2);        int expected_result2[] = {3,2};        BOOST_TEST(std::equal(output2, output2 + 2, expected_result2));        return;    }    void set_difference_test()    {        using namespace boost::phoenix;        using namespace boost::phoenix::arg_names;        int array[] = {1,2,3};        int array2[] = {2,3,4};        int output[1];        BOOST_TEST(set_difference(arg1, arg2, arg3)(array, array2, output) == output + 1);        int expected_result[] = {1};        BOOST_TEST(std::equal(output, output + 1, expected_result));        int array3[] = {3,2,1};        int array4[] = {4,3,2};        int output2[1];        BOOST_TEST(boost::phoenix::set_difference(arg1, arg2, arg3, std::greater<int>())                   (array3, array4, output2) ==                    output2 + 1);        int expected_result2[] = {1};        BOOST_TEST(std::equal(output2, output2 + 1, expected_result2));        return;    }    void set_symmetric_difference_test()    {        using namespace boost::phoenix;        using namespace boost::phoenix::arg_names;        int array[] = {1,2,3};        int array2[] = {2,3,4};        int output[2];        BOOST_TEST(set_symmetric_difference(arg1, arg2, arg3)(array, array2, output) == output + 2);        int expected_result[] = {1,4};        BOOST_TEST(std::equal(output, output + 2, expected_result));        int array3[] = {3,2,1};        int array4[] = {4,3,2};        int output2[2];        BOOST_TEST(boost::phoenix::set_symmetric_difference(arg1, arg2, arg3, std::greater<int>())                   (array3, array4, output2) ==                    output2 + 2);        int expected_result2[] = {4,1};        BOOST_TEST(std::equal(output2, output2 + 2, expected_result2));        return;    }}int main(){    nth_element_test();    merge_test();    inplace_merge_test();    set_union_test();    set_intersection_test();    set_difference_test();    set_symmetric_difference_test();    return boost::report_errors();}

⌨️ 快捷键说明

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