単純な追加の代わりに、計算量の多い非メンバー std::string operator+() が使用されています
追加 (または +=) メソッドがより効率的であるのに、非メンバー関数 std::string operator+() が呼び出される
説明
この欠陥は、文字列への追加に非メンバー関数 std::string operator+() を使用する場合に発生します。以下に例を示します。
std::string s1; s1 = s1 + "Other";
リスク
以下の演算を考えます。
s1 = s1 + "Other";
std::string operator+() を呼び出します。この関数は一時文字列を返し、その文字列が s1 に代入されます。メンバー関数 operator+=() を直接呼び出すと、この一時文字列の作成が回避され、より効率的になります。
修正方法
文字列への追加には、メンバー関数 operator+=() を使用します。以下に例を示します。
std::string s1; s1 += "Other";
append を使用します。std::string s1;
s1.append("Other");パフォーマンスの改善の程度は、使用しているコンパイラ、ライブラリ実装、環境によって異なる可能性があります。
例
結果情報
| グループ: パフォーマンス |
| 言語: C++ |
| 既定値: オフ |
コマンド ライン構文: EXPENSIVE_STD_STRING_APPEND |
| 影響度: Low |
バージョン履歴
R2020b で導入