Czy istnieje jakiś powód, że często widzę ten konstrukt:Czy powinienem używać operatora + = zamiast operatora + do łączenia std :: string?
std::string myString = someString + "text" + otherString + "more text";
... zamiast tego (co bardzo rzadko zobaczyć):
std::string myString;
myString += someString += "text" += otherString += "more text";
Czytając std::string
API, wydaje mi się, że operator+
tworzy dużo tymczasowych (być może zoptymalizowanych przez kompilator RVO?), podczas gdy wariant operator+=
dołącza tylko tekst.
W niektórych przypadkach będzie można wybrać wariant operator+
. Ale gdy potrzebujesz tylko dodać tekst do istniejącego nie-stałego ciągu, dlaczego nie po prostu użyć operator+=
? Każdy powód, by tego nie robić?
-Rein
Ostatnim razem, gdy mierzyłem wydajność, szybciej było robić wiele '+ =' niż '=' z wieloma '+' – Morb
Czy chcesz zmodyfikować 'otherString' i' someString'? –
Nie sądzę, że jedna forma byłaby zoptymalizowana nad drugą. Mamy elizację kopiowania i poruszamy teraz semantykę. @Morb Kiedy faktycznie użyto _astego czasu__ i jakich poziomów optymalizacji użyłeś? –