Да, вектор (и хранилище данных, которое он хранит) будет освобожден после завершения функции.
Почему вы создаете вектор? Если вам нужен массив, просто создайте и заполните один из них ..
double * GetArrayFromVector( std::map<std::string, double> m, char * names[], int count )
{
if(!names) return 0;
double* vec = new double[m.size()];
int j = 0;
for (int i=0; i<count; ++i)
{
if(!names[i]) return 0;
std::map<std::string, double>::iterator iter=m.find(name[i]);
if(iter!=m.end())
vec[j++] =iter->second;
else
return 0;
}
return vec;
}