Если ваш компилятор поддерживает C ++ 0x, Ответ KennyTM может быть немного подправлен:
std::transform(Array1.begin(), Array1.end(), Array1.begin(), [](double f)->double { return f * f; });
Или, если вы используете Boost, вы можете использовать Boost :: lambda:
#include <boost/lambda.hpp>
using namespace boost::lambda;
std::transform(Array1.begin(), Array1.end(), Array1.begin(), _1 * _1);