MTL4 применяет унарный оператор (например, abs ()) поэлементно к dens_vector & lt; double & gt;

Я хочу применить унарный оператор, в частности abs (), поэлементно к dens_vector< двойной>.

Есть ли собственный вариант сделать это (вместо того, чтобы строить цикл вручную)? Если это так, мне понадобится краткое объяснение концепции.

Я просмотрел в MTL4 Полное руководство и не мог понять, как это сделать. Кажется, мне как-то нужно определить соответствующий функтор. Это mtl :: sfunctor :: abs? Если так, как я могу применить это к вектору?

1

Решение

После быстрого взгляда через источник dense_vector, это похоже на стандартный соответствующий контейнер. Следовательно, это должно работать:

std::transform(v.begin(), v.end(), v.begin(),
static_cast<double(*)(double)>(&std::abs));
0

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


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