6

std::map と互換性のある連想コンテナーをコーディングしようとしています。そのためには、const 型の最初のコンポーネントを持つ std::pair の形式で新しい項目を受け入れる挿入メソッドを作成する必要があります。例: std::pair<const int, int> p.

私が抱えている問題は、そのようなオブジェクトを別のオブジェクトに割り当てることができないことです。そのため、MapCompatibleContainer の内部コードでは、新しいペアをプライベート変数 (std::vector) にコピーできません。

どうすればこれを回避できますか?

ありがとう

4

2 に答える 2

3

あなたが言うように、 const オブジェクトに代入することはできません。

標準コンテナは、生メモリを割り当ててオブジェクトを構築することでこれを解決します。コピー構築は引き続き機能します。

また、連想コンテナは各要素を個別のメモリ ブロックに格納するため、後でコピーする必要はありません。

于 2011-03-13T08:24:35.240 に答える
0

<utility>関数を保持する標準ライブラリのセクションにヘルパー関数がありstd::make_pairます。それを使用する場合は、ペアを取り、次のことを行うことができます。

foo.insert( std::make_pair( bar.first, bar.second ) );

ここで、「foo」は、「map」と互換性のあるオブジェクトの独自の実装であると想定しています。

于 2011-03-12T21:17:00.527 に答える