Skip to content

Commit

Permalink
refs #116 Справка
Browse files Browse the repository at this point in the history
  • Loading branch information
izvolov committed Jul 3, 2020
1 parent 9e21213 commit 93202d7
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 17 deletions.
29 changes: 12 additions & 17 deletions doc/README.md
Expand Up @@ -167,9 +167,8 @@ assert(t.get<std::string>(2) == std::string("123"));
```cpp
std::string hello("hello");
std::string world("world");
auto ranges = burst::make_range_vector(hello, world);

auto helloworld = burst::join(ranges);
auto helloworld = burst::join(std::tie(hello, world));

assert(helloworld == std::string("helloworld"));
```
Expand All @@ -184,15 +183,14 @@ assert(helloworld == std::string("helloworld"));
Производит ленивое слияние набора упорядоченных множеств.
Создаёт упорядоченный диапазон, пробегающийся по всем элементам всех входных множеств.

Алгоритм деструктивен по отношению к хранилищу диапазонов (`ranges` в примере ниже). Сами же множества (`even` и `odd`) остаются нетронутыми.
Созданный диапазон однопроходный (SinglePass в терминологии Буста).

```cpp
std::vector<int> even{ 2, 4, 6};
std::vector<int> odd{1, 3, 5 };
// ^ ^ ^ ^ ^ ^
auto ranges = burst::make_range_vector(even, odd);

auto merged_range = burst::merge(ranges);
auto merged_range = burst::merge(std::tie(even, odd));

auto expected_collection = {1, 2, 3, 4, 5, 6};
assert(merged_range == expected_collection);
Expand All @@ -208,16 +206,15 @@ assert(merged_range == expected_collection);
Производит ленивое пересечение набора упорядоченных множеств.
Создаёт упорядоченный диапазон, пробегающийся по тем элементам, которые есть одновременно во всех входных множествах.

Алгоритм деструктивен по отношению к хранилищу диапазонов (`ranges` в примере ниже). Сами же множества (`natural`, `prime` и `odd`) остаются нетронутыми.
Созданный диапазон однопроходный (SinglePass в терминологии Буста).

```cpp
std::vector<int> natural{1, 2, 3, 4, 5, 6, 7};
std::vector<int> prime{ 2, 3, 5, 7};
std::vector<int> odd{1, 3, 5, 7};
// ^ ^ ^
auto ranges = burst::make_range_vector(natural, prime, odd);

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

auto expected_collection = {3, 5, 7};
assert(intersected_range == expected_collection);
Expand All @@ -235,16 +232,15 @@ assert(intersected_range == expected_collection);
Производит ленивое полупересечение набора упорядоченных множеств.
Создаёт упорядоченный диапазон, пробегающийся по всем элементам, которые есть не менее, чем в `m` входных множествах.

Алгоритм деструктивен по отношению к хранилищу диапазонов (`ranges` в примере ниже). Сами же множества (`first`, `second` и `third`) остаются нетронутыми.
Созданный диапазон однопроходный (SinglePass в терминологии Буста).

```cpp
auto first = {0, 0, 1, 2};
auto second = {0, 1, 1 };
auto third = { 1, 1, 1, 2};
// ^ ^ ^ ^
auto ranges = burst::make_range_vector(first, second, third);

auto semiintersection = burst::semiintersect(ranges, 2);
auto semiintersection = burst::semiintersect(std::tie(first, second, third), 2);

auto expected_collection = {0, 1, 1, 2};
assert(semiintersection == expected_collection);
Expand All @@ -260,16 +256,15 @@ assert(semiintersection == expected_collection);
Производит ленивое объединение набора упорядоченных множеств.
Создаёт упорядоченный диапазон, пробегающийся по всем элементам входных множеств без учёта повторяющихся элементов.

Алгоритм деструктивен по отношению к хранилищу диапазонов (`ranges` в примере ниже). Сами же множества (`one`, `two` и `three`) остаются нетронутыми.
Созданный диапазон однопроходный (SinglePass в терминологии Буста).

```cpp
std::vector<int> one{1, 2 };
std::vector<int> two{ 2, 3 };
std::vector<int> three{ 3, 4};
// ^ ^ ^ ^
auto ranges = burst::make_range_vector(one, two, three);

auto range_union = burst::unite(ranges);
auto range_union = burst::unite(std::tie(one, two, three));

auto expected_collection = {1, 2, 3, 4};
assert(range_union == expected_collection);
Expand Down Expand Up @@ -306,17 +301,17 @@ assert(difference == even);
Производит ленивую симметрическую разность набора упорядоченных множеств.
Создаёт упорядоченный диапазон, пробегающийся по всем элементам, которые есть в нечётном числе входных множеств.

Алгоритм деструктивен по отношению к хранилищу диапазонов (`ranges` в примере ниже). Сами же множества (`first`, `second`, `third` и `fourth`) остаются нетронутыми.
Созданный диапазон однопроходный (SinglePass в терминологии Буста).

```cpp
const auto first = burst::make_vector({1, 2, 3, 4 });
const auto second = burst::make_vector({1, 2, 3, 5, 5});
const auto third = burst::make_vector({1, 3, 4, 5 });
const auto fourth = burst::make_vector({1, 2, 4 });
// ^ ^ ^ ^
auto ranges = burst::make_range_vector(first, second, third, fourth);

const auto difference = burst::symmetric_difference(ranges);
const auto difference =
burst::symmetric_difference(std::tie(first, second, third, fourth));

auto result = {2, 3, 4, 5};
assert(difference == result);
Expand Down
2 changes: 2 additions & 0 deletions include/burst/iterator/intersect_iterator.hpp
Expand Up @@ -36,6 +36,8 @@ namespace burst
только прочитать значения, но нельзя записать. Такое ограничение обусловлено тем, что
выдаваемые итератором элементы есть в каждом из входных диапазонов, а значит, нельзя
однозначно выбрать из них какой-то один для записи нового значения.
Алгоритм деструктивен по отношению к внешнему и всем внутренним диапазонам. Поэтому
итератор пересечения однопроходный.
\tparam RandomAccessIterator
Тип итератора принимаемого на вход внешнего диапазона. Он должен быть диапазоном
Expand Down
2 changes: 2 additions & 0 deletions include/burst/iterator/merge_iterator.hpp
Expand Up @@ -34,6 +34,8 @@ namespace burst
Полученный в результате слияния диапазон изменяем. То есть из итератора можно не только
прочитать значения, но можно и записать в него. В результате записи в итератор будет
изменено значение в исходном хранилище.
Алгоритм деструктивен по отношению к внешнему и всем внутренним диапазонам. Поэтому
итератор слияния однопроходный.
\tparam RandomAccessIterator
Тип принимаемого на вход итератора внешнего диапазона. Он должен быть итератором
Expand Down
2 changes: 2 additions & 0 deletions include/burst/iterator/semiintersect_iterator.hpp
Expand Up @@ -47,6 +47,8 @@ namespace burst
диапазонов, а значит, нельзя однозначно выбрать из них какой-то один для записи нового
значения.
Между элементами результирующего диапазона сохраняется заданное отношение порядка.
Алгоритм деструктивен по отношению к внешнему и всем внутренним диапазонам. Поэтому
итератор полупересечения однопроходный.
\tparam RandomAccessIterator
Тип итератора принимаемого на вход внешнего диапазона. Он должен быть диапазоном
Expand Down
2 changes: 2 additions & 0 deletions include/burst/iterator/symmetric_difference_iterator.hpp
Expand Up @@ -42,6 +42,8 @@ namespace burst
итератором элемент может присутствовать в нескольких из входных диапазонов, а значит,
нельзя однозначно выбрать из них какой-то один для записи нового значения.
Между элементами результирующего диапазона сохраняется заданное отношение порядка.
Алгоритм деструктивен по отношению к внешнему и всем внутренним диапазонам. Поэтому
итератор симметрической разности однопроходный.
\tparam RandomAccessIterator
Тип итератора принимаемого на вход внешнего диапазона. Он должен быть диапазоном
Expand Down
2 changes: 2 additions & 0 deletions include/burst/iterator/union_iterator.hpp
Expand Up @@ -39,6 +39,8 @@ namespace burst
каждый выдаваемый итератором элемент может присутствовать в нескольких из входных
диапазонов, а значит, нельзя однозначно выбрать из них какой-то один для записи нового
значения.
Алгоритм деструктивен по отношению к внешнему и всем внутренним диапазонам. Поэтому
итератор объединения однопроходный.
\tparam RandomAccessIterator
Тип итератора принимаемого на вход внешнего диапазона. Он должен быть диапазоном
Expand Down

0 comments on commit 93202d7

Please sign in to comment.