У меня есть функция, которая, по существу, считывает значения из вектора удвоений, добавляет их в строку (обеспечивая при этом пространство между каждым и устанавливая свои исправления) и возвращает конечный результат за вычетом конечного пробела:Упрощение циклов FOR
std::string MultiplePrintProperties::GetHpitchString()
{
std::string str;
vector<double>::iterator it;
for (it = Vals.begin();
it != Vals.end();
it++)
{
ostringstream s;
// Set precision to 3 digits after the decimal point
// and read into the string
boost::format fmt("%.3f ");
s << fmt % *(it);
str.append(s.str());
}
// Remove last white space and return string
return str.substr(0, str.length() - 1);
}
Я хотел бы узнать, можно ли каким-либо образом упростить этот код. Недавно я изучал использование for_each и функторов, в частности, но не смог выяснить, как эти методы могут улучшить этот конкретный пример.
Почему упрощать? Это читаемо. Он выглядит достаточно эффективным. Думаю, вы могли бы использовать что-то вроде уменьшения карты, но я не вижу причин для этого. –
Код как есть имеет серьезный недостаток. Если в векторе нет данных, то окончательное пробельное пространство (которое не существует) будет удалено. Вероятно, давая исключение – Toad