Có một lý do mà tôi thường thấy cấu trúc này:Tôi có nên sử dụng toán tử + = thay cho toán tử + để nối chuỗi std :: string không?
std::string myString = someString + "text" + otherString + "more text";
... thay vì điều này (mà tôi rất hiếm khi nhìn thấy):
std::string myString;
myString += someString += "text" += otherString += "more text";
Đọc std::string
API, có vẻ như với tôi rằng operator+
tạo ra rất nhiều thời gian (có lẽ được tối ưu hóa bởi trình biên dịch RVO?), trong khi biến thể operator+=
chỉ chắp thêm văn bản.
Trong một số trường hợp, biến thể operator+
sẽ là cách để thực hiện. Nhưng khi bạn chỉ cần nối văn bản vào chuỗi không phải là const hiện tại, tại sao không chỉ sử dụng operator+=
? Có lý do gì không?
-Rein
Lần cuối tôi đo biểu diễn, nhanh hơn khi thực hiện nhiều '+ =' hơn '=' với nhiều '+' – Morb
Bạn có muốn 'otherString' và' someString' được sửa đổi không? –
Tôi không nghĩ rằng một hình thức sẽ được tối ưu hóa cao hơn khác. Chúng tôi đã sao chép elision và di chuyển ngữ nghĩa ngày nay. @Morb Khi nào là _last time_ thực sự, và bạn đã sử dụng mức tối ưu nào? –