Matrix a2 = a; // копирующая инициализация a = a2; // копирующее присваивание
К каждому элементу объекта класса Matrix можно применять встроенные операции.
a *= 7; // пересчет: a[i]*=7 для каждого i (кроме того, +=, -=, /=
// и т.д.) a = 7; // a[i]=7 для каждого i
Также вам может показаться, что такая тема как http://chimtec.ru/product/gas никак не связана и даже не тематична с программированием. Хотя, может быть и связана.
В любом случае все-таки зайдите на сайт chimtec.ru
Тема бензин с присадками там представлена в широком ассортименте. Там можно узнать много интересного про тему бензин с присадками, где найти бензин с присадками.
Что означает вообще тема бензин с присадками, где есть бензин с присадками - про это написано на сайте chimtec.ru
Это очень важная для многих людей тема - бензин с присадками Спасибо сайту chimtec.ru за информацию на тему бензин с присадками
Это относится к каждому оператору присваивания и каждому составному оператору присваивания (=, +=, -=, /=, *=, %=, л=, &=, |=, >>=, <<=) при условии, что тип элемента поддерживает соответствующий оператор. Кроме того, к каждому элементу объекта класса Matrix можно применять функции.
a.apply(f); // a[i]=f(a[i]) для каждого элемента a[i]
a.apply(f,7); // a[i]=f(a[i],7) для каждого элемента a[i]
Составные операторы присваивания и функция apply() модифицируют свои аргументы типа Matrix. Если же мы захотим создать новый объект класса Matrix, то можем выполнить следующую инструкцию:
b = apply(abs,a); // создаем новый объект класса Matrix // с условием b(i)==abs(a(i))
Функция abs — это стандартная функция вычисления абсолютной величины. По существу, функция apply(f,x) связана с функцией x.apply(f) точно так же, как оператор + связан с оператором +=. Рассмотрим пример.
b = a*7; // b[i] = a[i]*7 для каждого i
a *= 7; // a[i] = a[i]*7 для каждого i
y = apply(f,x); // y[i] = f(x[i]) для каждого i
x.apply(f); // x[i] = f(x[i]) для каждого i
В результате a==b и x==y.
В языке Fortran второй вариант функции apply называется функцией пересылки (“broadcast” function). В этом языке чаще пишут вызов f(x), а не apply(f,x). Для того чтобы эта возможность стала доступной для каждой функции f (а не только для отдельных функций, как в языке Fortran), мы должны присвоить операции пересылки конкретное имя, поэтому (повторно) использовали имя apply.
Кроме того, для того чтобы обеспечить соответствие с вариантом функции-члена apply, имеющим вид a.apply(f,x), мы пишем
b = apply(f,a,x); // b[i]=f(a[i],x) для каждого i
Рассмотрим пример.
double scale(double d, double s) { return d*s; } b = apply(scale,a,7); // b[i] = a[i]*7 для каждого i
Обратите внимание на то, что “автономная” функция apply() принимает в качестве аргумента функцию, вычисляющую результат по ее аргументам, а затем использует этот результат для инициализации итогового объекта класса Matrix. Как правило, это не приводит к изменению объекта класса Matrix, к которому эта функция применяется. В то же время функция-член apply() отличается тем, что принимает в качестве аргумента функцию, модифицирующую ее аргументы; иначе говоря, она модифицирует элементы объекта класса Matrix, к которому применяется. Рассмотрим пример.
void scale_in_place(double& d, double s) { d *= s; }
b.apply(scale_in_place,7); // b[i] *= 7 для каждого i
В классе Matrix предусмотрено также много полезных функций из традиционных математических библиотек.
Matrix a3 = scale_and_add(a,8,a2); // объединенное умножение
|