Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Обеспечить возможность операций над несколькими диапазонами разных типов #121

Closed
izvolov opened this issue Jul 11, 2020 · 0 comments
Assignees

Comments

@izvolov
Copy link
Owner

izvolov commented Jul 11, 2020

Слияние, пересечение и т.п. умеют принимать несколько диапазонов:

auto v1 = std::vector{...};
auto v2 = std::vector{...};
auto merged = burst::merge(std::tie(v1, v2));

Нужно научиться работать с разными типами диапазонов:

auto v = std::vector{...};
auto l = std::list{...};
auto q = std::deque{...};
auto merged = burst::merge(std::tie(v, l, q));

Для этого можно использовать boost::any_iterator и boost::any_range, либо написать свой итератор со стиранием типа (это лучше, т.к. в boost::any_iterator используется динамический полиморфизм).

@izvolov izvolov self-assigned this Jul 11, 2020
@izvolov izvolov closed this as completed Jul 24, 2020
izvolov added a commit that referenced this issue Jul 26, 2020
Новое:

-   Упрощённый интерфейс (через `std::tie`) для ленивых операций с множествами;

-   Метафункции:

    *   are_same
    *   minimum_category
    *   range_category
    *   range_iterator
    *   range_reference
    *   range_value

Изменения:

-   Метафункции для итераторов сменили место жительства на `burst/type_traits`:

    *   iterator_category
    *   iterator_difference
    *   iterator_pointer
    *   iterator_reference
    *   iterator_value
izvolov added a commit that referenced this issue Jul 26, 2020
Новое:

-   Упрощённый интерфейс (через `std::tie`) для ленивых операций с множествами;

-   Метафункции:

    *   are_same
    *   minimum_category
    *   range_category
    *   range_iterator
    *   range_reference
    *   range_value

Изменения:

-   Метафункции для итераторов сменили место жительства на `burst/type_traits`:

    *   iterator_category
    *   iterator_difference
    *   iterator_pointer
    *   iterator_reference
    *   iterator_value
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant