Я заметил, что версия без диапазонов требует, чтобы предикат сравнения был BinaryPredicate [alg.sorting.general.2], но версия диапазонов требует std::indirect_strict_weak_order [lower.bound] (что меня банит использовать less_equal).
Изменить:
Я случайно обнаружил, что N1313 обсуждал это, и LWG 270 разрешил вызывать std ::lower_bound с предикатом, который не удовлетворяет strict_weak_order, например less_equal. Теперь стандарт гласит:
Все алгоритмы в [alg.binary.search] являются версиями двоичного поиска и предполагают, что искомая последовательность разделена с помощью относительно выражения, сформированного путем привязки ключа поиска к аргументу функции сравнения. - [alg.binary.search.general]
Предварительные условия: элементы e из [first, Last) разделены с помощью относительно выражения
bool(invoke(comp, ignore(proj, e), value)). - [lower.bound]
То есть, std::lower_bound требует только предиката can секционировать элементы, что более гибко, чем std ::indirect_strict_weak_order. Например, std::less_euqal — это предикат раздела {0, 1, 2, 3, но это не строгое отношение слабого порядка, поэтому его можно использовать для вызова std::lower_bound< /code>, но его нельзя использовать для вызова std::ranges::lower_bound.
Похожий вопрос в stackoverflow не задавался по этому поводу, он спрашивает о почему предикат, используемый для std::ranges::lower_bound, должен принимать два однородных типа. std::less_euqal является однородным сравнением, но его по-прежнему нельзя использовать в std::ranges::lower_bound, поскольку это не строгое отношение слабого порядка. Так что аналогичный вопрос на самом деле не имеет почти ничего общего с этим вопросом.
Подробнее здесь: https://stackoverflow.com/questions/764 ... ower-bound
Почему требование std::ranges::lower_bound отличается от требования std::lower_bound? [дубликат] ⇐ C++
Программы на C++. Форум разработчиков
1713599332
Anonymous
Я заметил, что версия без диапазонов требует, чтобы предикат сравнения был BinaryPredicate [alg.sorting.general.2], но версия диапазонов требует std::indirect_strict_weak_order [lower.bound] (что меня банит использовать less_equal).
[b]Изменить:[/b]
Я случайно обнаружил, что N1313 обсуждал это, и LWG 270 разрешил вызывать std ::lower_bound с предикатом, который не удовлетворяет strict_weak_order, например less_equal. Теперь стандарт гласит:
Все алгоритмы в [alg.binary.search] являются версиями двоичного поиска и предполагают, что искомая последовательность разделена с помощью относительно выражения, сформированного путем привязки ключа поиска к аргументу функции сравнения. - [alg.binary.search.general]
Предварительные условия: элементы e из [first, Last) разделены с помощью относительно выражения
bool(invoke(comp, ignore(proj, e), value)). - [lower.bound]
То есть, std::lower_bound требует только предиката can секционировать элементы, что более гибко, чем std ::indirect_strict_weak_order. Например, std::less_euqal — это предикат раздела {0, 1, 2, 3, но это не строгое отношение слабого порядка, поэтому его можно использовать для вызова std::lower_bound< /code>, но его нельзя использовать для вызова std::ranges::lower_bound.
Похожий вопрос в stackoverflow не задавался по этому поводу, он спрашивает о почему предикат, используемый для std::ranges::lower_bound, должен принимать два однородных типа. std::less_euqal является однородным сравнением, но его по-прежнему нельзя использовать в std::ranges::lower_bound, поскольку это не строгое отношение слабого порядка. Так что аналогичный вопрос на самом деле не имеет почти ничего общего с этим вопросом.
Подробнее здесь: [url]https://stackoverflow.com/questions/76430911/why-the-requirement-of-stdrangeslower-bound-differs-from-stdlower-bound[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия