我想从 --- 构建一个 std::string
std::vector<std::string>
。
我可以使用 std::stringsteam
,但想象有一种更短的方法:
std::string string_from_vector(const std::vector<std::string> &pieces) {
std::stringstream ss;
for(std::vector<std::string>::const_iterator itr = pieces.begin();
itr != pieces.end();
++itr) {
ss << *itr;
}
return ss.str();
}
我还能怎么做?
原文由 WilliamKF 发布,翻译遵循 CC BY-SA 4.0 许可协议
C++03
C++11 (MSVC 2010 子集)
C++11
不要使用
std::accumulate
进行字符串连接,它是经典 的 Schlemiel the Painter 算法,甚至比在 C 中使用strcat
的通常示例更糟糕。没有 C++11 移动语义,它为向量的每个元素产生两个不必要的累加器副本。即使使用移动语义,它仍然会为每个元素产生一个不必要的累加器副本。上面的三个例子是 O(n) 。
std::accumulate
对于字符串来说是 O(n²) 。”`