У меня есть вектор строки, как {"1.2","3.4","0.5","200.7"}
.Конвертировать вектор <std::string> в вектор <double>
Я хотел бы преобразовать каждый элемент в двойной и сохранить его в vector<double>
.
Как так {1.2,3.4,0.5,200.7}
Что бы лучший способ сделать это?
Я знаю об std::stod(string, size)
; Но я надеюсь на лучший способ сделать это.
Я искал что-то вроде:
vector<double> doubleVector = convertStringVectortoDoubleVector(myStringVector);
Там, кажется, не будет ничего подобного; так что же самое лучшее?
EDIT: Вот что я в конечном итоге с помощью:
std::vector<double> convertStringVectortoDoubleVector(const std::vector<std::string>& stringVector){
std::vector<double> doubleVector(stringVector.size());
std::transform(stringVector.begin(), stringVector.end(), doubleVector.begin(), [](const std::string& val)
{
return stod(val);
});
return doubleVector;}
Для полного ответа проверить ответ Zac ХАУЛЕНД в ответ и Крис Jester-Янга. (P.S. Это полностью основано на ответе Зака) Спасибо
вы не можете преобразовать все элементы без перебора всех элементов. если вы хотите, чтобы что-то делало конверсию лениво, то есть другой вопрос –
AFAIK, нет такой вещи, которая «сделала бы это без повторения всего вектора, применяя его к каждому элементу» _. Вы можете написать функцию 'convertVectortoDouble', хотя – P0W
Не будет ли' convertVectortoDouble' перебирать вектор? – 0x499602D2