c++ string += の実装に興味があります。
これによりパフォーマンスが低下することはありますか? どちらが速いはずですか?
String a = "xxx";
a += "(" + "abcd" + ")"
また
String a = "xxx";
a.append("(");
a.append("abcd");
a.append(")");
標準で完全に同一の仕様を持っていることを考えると、ランタイム コストが異なる合理的な実装を想定するのは困難です。
21.4.6 basic_string modifiers [string.modifiers]
21.4.6.1 basic_string::operator+= [string::op+=]
basic_string& operator+=(const basic_string& str);
1 効果:通話
append(str.data, str.size()).
2 返品:
*this
...
21.4.6.2 basic_string::append [string::append]
basic_string& append(const basic_string& str);
1 効果:通話
append(str.data(), str.size()).
2 返品:
*this.
+=
への呼び出しによって演算子が実装されていなかったら、私は非常に驚かれることでしょうappend
。
実際、SGI のドキュメントには、次のbasic_string
ことが示されています。
basic_string& operator+=(const basic_string& s)
に相当しappend(s)
ます。
さらに、コードは次のようになります。
basic_string& operator+=(const basic_string& __s) { return append(__s); }
それらの間に違いはありません。実際、+= 演算子の実装は追加を呼び出すだけです。STLコードから読みました。