0

c++ string += の実装に興味があります。

これによりパフォーマンスが低下することはありますか? どちらが速いはずですか?

String a = "xxx";
a += "(" + "abcd" + ")"

また

String a = "xxx";
a.append("(");
a.append("abcd");
a.append(")");
4

3 に答える 3

2

標準で完全に同一の仕様を持っていることを考えると、ランタイム コストが異なる合理的な実装を想定するのは困難です。

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.

于 2012-11-28T06:59:18.173 に答える
0

+=への呼び出しによって演算子が実装されていなかったら、私は非常に驚かれることでしょうappend

実際、SGI のドキュメントには、次のbasic_stringことが示されています。

basic_string& operator+=(const basic_string& s) に相当しappend(s)ます。

さらに、コードは次のようになります。

basic_string& operator+=(const basic_string& __s) { return append(__s); }

http://www.sgi.com/tech/stl/string

于 2012-11-28T03:18:17.820 に答える
0

それらの間に違いはありません。実際、+= 演算子の実装は追加を呼び出すだけです。STLコードから読みました。

于 2012-11-28T03:19:53.700 に答える