int main() {
std::string str;
str.reserve(9999);
{
std::string s1("aaa");
std::string s2("bbb");
// can both strings s1, s2 be moved to str?
// for example str should be "aaabbb"
}
}
我的问题:是否有可能窃取的s1
和s2
记忆形成的s1
和s2
一个连接字符串(因为它已经有足够的空间用于两者)?移动字符串到另一个字符串中有足够的能力
加运算符对于多个级联s1 + s2 + s3是昂贵的...... – mkmostafa
对于C++ 11中的多级联而言,加运算符并不昂贵。 –
@HowardHinnant你能详细解释一下吗?我所理解的是最后两个字符串将被添加到一个新字符串中,该字符串将在返回新字符串之前被添加到字符串中,等等。在这个问题之后,我看不到在中间使用任何移动操作的可能性。由于在添加到返回的字符串期间无法移动任何这些临时文件。我考虑实现遍历整个事物的表达式模板,并根据总大小构建一个字符串,然后一次预留容量和复制所有内容。 – mkmostafa