我有一個函數,它基本上從雙精度值中讀取值,將它們附加到一個字符串中(同時確保每個字符之間的空格並設置它們的精度),並返回最終結果,減去最終的空格:簡化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