Программирование >>  Операторы преобразования типа 

1 ... 161 162 163 [ 164 ] 165 166 167 ... 239


Конструктор для интервала символов

template<class InputIterator>

basic string(Inputlterator beg. Inputlterator end.

const Allocators a = AllocatorO):

Эти конструкторы ведут себя так, как описано на с. 490, но дополнительно позволяют передать пользовательский объект распределителя памяти. Если строка инициализируется другой строкой, то вместе с содержимым копируется и распределитель памяти*. За дополнительной информацией о распределителях памяти обращайтесь к главе! 5.

В стандарте сказано, что при копировании строки используется распределитель памяти по умолчанию. Такое решение выглядит нелогично, поэтому в настоящее время рассматривается предложение об изменении этой формулировки.




Числовые типы

в этой главе описаны компоненты стандартной библиотеки С++, предназначенные для работы с числовыми данными. В частности, здесь будет представлен класс комплексных чисел, классы массивов значений и глобальные численные функции, унаследованные из библиотеки С.

Еще два численных компонента стандартной библиотеки С++ описаны в других главах:

О несколько численных алгоритмов, поддерживаемых библиотекой STL, представлены на с. 414;

О для всех базовых типов данных некоторые аспекты представления зависят от реализации и описываются типом numeric limits, который рассматривается иа с. 72.

Комплексные числа

В стандартную библиотеку С++ входит шаблонный класс complex о, предназначенный для работы с комплексными числами. На всякий случай стоит напомнить, что комплексные числа состоят из двух частей: вещественной и мнимой. * Особое свойство мнимой части заключается в том, что ее квадрат является отрицательным числом. Иначе говоря, мнимая часть представляет собой произведение числа и квадратного корня из -1, обозначаемого символом /. Класс complex объявляется в заголовочном файле <сотр1ех>:

#include <complex>

Определение класса complex в файле <сотр1ех> выглядит так:

namespace std {

template <class Т> class complex;

Параметр шаблона Т задает скалярный тип как вещественной, так и мнимой части комплексного числа.



В стандартную библиотеку С++ включены также три специализированные версии класса complex для типов float, double и long double:

namespace std {

tempiate<> class coiTiplex<float>: templateo class coriplex<double>: templateo class complex<long double>:

Определения этих типов позволяют выполнять некоторые виды оптимизации и безопасное преобразование от одного комплексного типа к другому.

римеры использования класса complex

Следующая программа демонстрирует возможности класса complex по созданию комплексных чисел, их выводу в разных представлениях и выполнению некоторых типовых операций с комплексными числами.

num/complexLcpp #include <iostream> #include <complex> using namespace std:

lnt mainO

/* Комплексное число с вещественной и мнимой частями

* - Вещественная часть: 4.0

* - Мнииая часть: 3.0 */

complex<double> с1(4.0,3.0):

/* Создание комплексного числа в системе полярных координат

* - Амплитуда: 5.0

* - Фазовый угол: 0.75 */

complex<float> с2(ро1аг(5.0.0.75)):

Вывод комплексного чиспа с вещественной и мнимой частями cout cl: cl endl: cout c2: c2 endl:

Вывод комплексного числа в полярных координатах cout cl: magnitude: abs(cl)

(squared magnitude: norm(cl) )

phase angle: arg(cl) endl: cout c2: magnitude: abs(c2)

(squared magnitude: norri(c2) )

phase angle: arg(c2) endl:

Вывод сопряжений комплексных чисел

cout cl conjugated: conj(cl) endl:

cout c2 conjugated: conj(c2) endl:



1 ... 161 162 163 [ 164 ] 165 166 167 ... 239

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика