我有一个函数,它基本上从双精度值中读取值,将它们附加到一个字符串中(同时确保每个字符之间的空格并设置它们的精度),并返回最终结果,减去最终的空格:简化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和functor的用法,但还没有弄清楚这些技术如何改进这个特定的例子。
为什么简化呢?它是可读的。它看起来足够高效。我想你可以使用像map-reduce这样的东西,但我没有理由这么做。 – 2009-09-09 12:15:09
该代码存在严重缺陷。如果矢量中没有数据,则最终的空白(不在那里)将被删除。大概给个例外 – Toad 2009-09-09 12:15:09