burst

То, чего нет в Бусте

BSL-1.0 License

Downloads
27
Stars
82
Committers
1

Burst

, .


, - . , , . , - .

     ,     ,     ,        ,    Boost,    ,         .

  1. ?
    1. 1:
    2. 2: CMake
    3. 3: CMake
    4. 4: CMake FetchContent

?

   [](doc/README.md).

`std::sort`  `std::stable_sort`    ,   .         ,           .    [ ](https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%80%D0%B0%D0%B7%D1%80%D1%8F%D0%B4%D0%BD%D0%B0%D1%8F_%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0). ,      , , ,     ,   ,  ,   . ,         ,    ,    . ,  .

      `std::sort`  `std::stable_sort` (  [`boost::integer_sort`](https://www.boost.org/doc/libs/1_71_0/libs/sort/doc/html/boost/sort/spreadsort/integer__idm46709765154208.html))  ,             .

, , :

burst::radix_sort burst::counting_sort.

, , , , .

(`tuple`, `vector`, `any`)     .

`burst::dynamic_tuple`,    ,               .
burst::dynamic_tuple t(std::string("123"));

t.push_back(std::vector<int>{1, 2, 3});
t.push_back(true);
t.push_back(123u);

assert(t.size() == 4);
assert(t.get<std::string>(0) == "123");
assert((t.get<std::vector<int>>(1) == std::vector<int>{1, 2, 3}));
assert(t.get<bool>(2) == true);

t.get<unsigned>(3) = 789u;
assert(t.get<unsigned>(3) == 789u);

burst::dynamic_tuple.

     ,     , , ,   ..   (`std::set_intersection`  ..)       ,   , ,     ,    .

 ,        ,     ,     (,   ..) " ".

, , :

auto natural = std::vector<int>{1, 2, 3, 4, 5, 6, 7};
auto   prime = std::list<int>  {   2, 3,    5,    7};
auto     odd = std::deque<int> {1,    3,    5,    7};
//                                    ^     ^     ^

auto intersected_range = burst::intersect(std::tie(natural, prime, odd));

auto expected_collection = {3, 5, 7};
assert(intersected_range == expected_collection);

:

.


  1. CMake 3.8.2 ;

  2. GCC 7.3 Clang 8 1;

  3. doctest [ 2];

  4. Boost ( program_options [ 3], system [ 4]) 1.66 ;

  5. Doxygen [ ].

    .

1 libc++ libstdc++ 7 .

2 , CMake BURST_TESTING:

cmake -DBURST_TESTING=OFF <  ...>
 ,  Burst    .
  • , doctest , CMake FetchContent.

3 Boost.Program_options , BURST_BENCHMARKING:

cmake -DBURST_BENCHMARKING=OFF <  ...>
 ,  Burst    .

4 Boost.System (, radix_sort).


.

1:

Burst , include .

2: CMake

cd path/to/build/directory
cmake -DCMAKE_BUILD_TYPE=Release path/to/burst
cmake --build . --target install
 CMake    `Burst`:
find_package(Burst)
 `Burst::burst`,      :
add_executable(program program.cpp)
target_link_libraries(program PRIVATE Burst::burst)

3: CMake

add_subdirectory("path/to/burst")
 CMake    `Burst::burst`,      :
add_executable(program program.cpp)
target_link_libraries(program PRIVATE Burst::burst)

4: CMake FetchContent

CMake 3.14 FetchContent. Burst :

include(FetchContent)
FetchContent_Declare(Burst GIT_REPOSITORY https://github.com/izvolov/burst.git)
FetchContent_MakeAvailable(Burst)
  Burst::burst,      :
add_executable(program program.cpp)
target_link_libraries(program PRIVATE Burst::burst)
Package Rankings
Top 42.34% on Formulae.brew.sh
Badges
Extracted from project README
      Wandbox.org