次の例で、4 つ目よりも 3 つ目よりも 1 つのペアを優先する正当な理由はありますか?
map<const int, int> test;
test.insert(const pair<const int, int>(3, 9));
test.insert(const pair<int, int>(3, 9));
test.insert(pair<int, int>(3, 9));
test.insert(pair<const int, int>(5, 9));
次の例で、4 つ目よりも 3 つ目よりも 1 つのペアを優先する正当な理由はありますか?
map<const int, int> test;
test.insert(const pair<const int, int>(3, 9));
test.insert(const pair<int, int>(3, 9));
test.insert(pair<int, int>(3, 9));
test.insert(pair<const int, int>(5, 9));
基本的にはい。ダム コンパイラは、このコードで 1 つの追加の変換コンストラクタを呼び出します。
test.insert(pair<const int, int>(5, 9));
ただし、最適化コンパイラは、他の代替手段と同じになります。
誰がこのようなコードを書きたいと思うでしょうか? 通常、私は書きtest.insert(std::make_pair(3, 9))
、気にしません。
最後の 2 つのペアは、マップに挿入するときに違いはありません。マップのキーはデフォルトで const です。make_pair 関数を使用するだけです