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