- #include <string>
- #include <list>
- #include <algorithm>
- template <typename char_t>
- std::basic_string<char_t> addstring(const std::list<std::basic_string<char_t> >& strlist)
- {
- std::basic_string<char_t> result;
- const auto len = std::accumulate(strlist.begin(), strlist.end(), 0,
- [] (const std::basic_string<char_t>& str)
- {
- return str.size();
- });
- result.reserve(len); // 分配足够长度防止重新分配,高性能关键所在
- std::for_each(strlist.begin(), strlist.end(),
- [&result] (const std::basic_string<char_t>& str)
- {
- result += str;
- });
- retrun result; // C++11则 return std::move(result);
- }
- //该片段来自于http://www.codesnippet.cn/detail/1807201410026.html
来源: http://www.codesnippet.cn/detail/1807201410026.html