std::weak_ordering, когда разные исходные значения после нормализации считаются эквивалентными для сравнения.">
Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpOrWk 367 of 696 menu
◀ ▶

Слабый порядок в C++

Эквивалентность без равенства допускает std::weak_ordering, когда разные исходные значения после нормализации считаются эквивалентными для сравнения.

Буквы в одном регистре можно привести к общему виду через std::tolower из <cctype>. Запишем Glyph с одним символом и сравним 'A' с 'a':

#include <cctype> #include <compare> #include <iostream> struct Glyph { char letter; std::weak_ordering operator<=>(const Glyph& other) const { unsigned char left = static_cast<unsigned char>(letter); unsigned char right = static_cast<unsigned char>(other.letter); return std::tolower(left) <=> std::tolower(right); } }; int main() { Glyph upper{'A'}; Glyph lower{'a'}; std::cout << (upper == lower) << "\n"; return 0; }

Объявите struct KeyChar с полем char ch и operator<=>, возвращающим std::weak_ordering после std::tolower. Выведите результат == для 'Z' и 'z'.

Сравните 'b' и 'C' через < при том же правиле и выведите результат.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить