単純な追加の代わりに、計算量の多い非メンバー 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 で導入