Предположим, что у меня есть std::vector double, а именно
std::vector<double> MyVec(N);
Где N
настолько велика, что производительность имеет значение. Предположим теперь, что MyVec
- нетривиальный вектор (т.е. Не является вектором нулей, но был изменен некоторой рутиной). Теперь мне нужна отрицаемая версия вектора: Мне нужно -MyVec
.
До сих пор я реализовал его с помощью
std::transform(MyVec.cbegin(),MyVec.cend(),MyVec.begin(),std::negate<double>());
Но, действительно, я не знаю, это ли это что-то разумное или просто супер наивно с моей стороны.
Я делаю это правильно? Или std:: transform - это просто супер медленная процедура в этом случае?
PS: Я использую библиотеки BLAS и LAPACK все время, но я не нашел ничего, что соответствовало бы этой конкретной потребности. Однако, если в BLAS/LAPACK существует такая функция, которая быстрее, чем std:: transform, я был бы рад узнать.