Самостоятельная работа По Дисциплине: Программирования на тему: № Работа с численными классами. Класс complex
Download 432.11 Kb.
|
Работа с численными классами. Класс complex - C.Бойзаков
- Bu sahifa navigatsiya:
- 2.6 Операции сравнения
2.5 Доступ к данным
В таблице 3 перечислены функции получения атрибутов комплексных чисел. Таблица 3- Функции получения атрибутов.
Функции real() и imag() позволяют только прочитать значения вещественной и мнимой частей. Чтобы изменить любую из частей комплексного числа, необходимо присвоить ему новое значение. Например, следующая команда присваивает мнимой части с значение 3.7: std::complex ... с = std::complex 2.6 Операции сравнения Из всех операций сравнения для комплексных чисел определены только проверки на равенство и на неравенство. Операторы == и != определены как глобальные функции, поэтому один из операндов может быть скалярной величиной. В этом случае операнд интерпретируется как вещественная часть, а мнимой части комплексного числа присваивается значение по умолчанию для данного типа (обычно 0). Другие операции сравнения (например, с оператором < и т. д.) для класса complex не определены. Хотя в принципе для комплексных чисел можно определить порядок сортировки, результат получается недостаточно интуитивным и не приносит особой практической пользы. Например, сравнивать комплексные числа на основании модулей бессмысленно, поскольку два разных комплексных числа (например, 1 и -1) могут иметь одинаковые модули. Конечно, можно изобрести специальный критерий сортировки, например, для двух комплексных чисел c1 и с2 считать, что c1
Из этого следует, что тип complex не может быть типом элементов ассоциативных контейнеров (без определения пользовательского критерия сортировки). Дело в том, что для сортировки элементов по умолчанию ассоциативные контейнеры используют объект функции less<>, который вызывает оператор < Определение пользовательского оператора < позволяет сортировать комплексные числа и использовать их в ассоциативных контейнерах. Нельзя нарушать стандартное пространство имен. Пример: Листинг 5-правильное пространство имен template bool operator< (const std::complex const std::complex { return std::abs(cl) std: :arg(cl) Download 432.11 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling