c ++ 20 — оператор сравнения космического корабля в переполнении стека

Зачем нам нужен такой оператор в C ++ и как он полезен в современном программировании на C ++? Любые примеры кода реального мира, где это можно применить, помогут.

Этот вопрос направлен на то, чтобы понять практическое применение в реальном мире, не читая многословного предложения Херба Саттера. Без обид на предложение, хотя.

5

Решение

Я дам вам три очка мотивации, чуть выше моей головы:

  1. Это общее обобщение всех других операторов сравнения (для полностью упорядоченных доменов):>,> =, ==, <знак равно < , С помощью <=> (космический корабль), вы можете реализовать каждую из этих других операций совершенно общим способом.
  2. Это невероятно полезно для строк: для этого конкретного случая это старый добрый strcmp() из стандартной библиотеки C. Так что — полезно для всего с лексикографическим порядком, например, для вещей в векторах или других заказанных контейнерах.
  3. Что касается целых чисел, это то, что аппаратное обеспечение делает в любом случае: на x86 или x86_64 Сравнение a и b (CMP RAX, RBX) в основном похоже на вычитание (SUB RAX, RBX), за исключением того, что RAX фактически не изменяется, затрагиваются только флаги, так что вы можете использовать «перейти на равный / не равный / больше чем / меньше чем / etc.» (JE / JNE / JGT / JLT и т. Д.) В качестве следующей инструкции. CMP следует рассматривать как «сравнение космического корабля».
6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]