-
Notifications
You must be signed in to change notification settings - Fork 0
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
std::span_set #605
Comments
А какое ожидается поведение в случае, когда добавляемый диапазон R содержит элемент(ы), уже добавленный(е) в сет? std::span_set<int> s;
s.add(15);
s.add_range(10, 20);
|
И еще вопрос: правильно ли я понимаю, что если бы не пункт про оптимизацию, нам было бы вполне достаточно связки |
В этом случае можно выбросить исключение |
Да, можно ещё использовать std::views::iota. Тогда если уже есть альтернативы, тогда можем закрыть тему. |
В текущем стандарте C++ множество (std::set) позволяет хранить уникальные элементы в отсортированном порядке, но оно не предоставляет возможностей для работы с частичными диапазонами значений. Для специфичных задач, таких как работа с последовательностями чисел или диапазонами, можно создать новый тип данных span_set. Этот класс будет представлять множество, в котором можно эффективно работать с диапазонами элементов, а также комбинировать их с операциями над обычными множествами.
Основные особенности класса span_set:
Частичные диапазоны: Возможность эффективно задавать диапазоны элементов (например, от 1 до 100) без явного перечисления всех элементов.
Поддержка стандартных операций над множествами: Объединение, пересечение, разность и т.д.
Управление диапазонами: Можно добавлять, удалять и проверять элементы как в пределах диапазонов, так и вне их.
Оптимизация: Вместо хранения каждого элемента будет храниться только информация о диапазонах, что позволяет сэкономить память и улучшить производительность для широких диапазонов значений.
Пример использования
Пояснение
add_range(start, end)
позволяет добавлять диапазоны значений вместо индивидуальных элементов, что делает работу с диапазонами более удобной и производительной.intersection()
возвращает пересечение двух наборов (включая возможные пересекающиеся диапазоны).The text was updated successfully, but these errors were encountered: