中規模のコード ベースを常にブレース初期化を使用するようにリファクタリングすることを検討しています。知っておくべき効率の問題はありますか?
いくつかの例は、POD 型と組み込み型である可能性があります。多くの構築パラメータを持つ大きなクラスはどうでしょうか?
中規模のコード ベースを常にブレース初期化を使用するようにリファクタリングすることを検討しています。知っておくべき効率の問題はありますか?
いくつかの例は、POD 型と組み込み型である可能性があります。多くの構築パラメータを持つ大きなクラスはどうでしょうか?
これは、「常にブレースの初期化を使用する」という意味に依存します。次のようなコンストラクタを変換すると
X x(a, b, c);
の中へ
X x{a, b, c};
(そして、別のコンストラクターが選択されても動作は変わりません)、生成されたコードの効率が向上または低下することはありません。一方で:
std::vector<std::string> v{
"long character string a",
"long character string b",
"long character string c"};
よりも効率が悪い可能性があります。
std::vector<std::string> v;
v.push_back("long character string a");
v.push_back("long character string b");
v.push_back("long character string c");
@dyp が言及した問題のため、ベクトルはinitializer_list
.