1

次のプロパティを持つ動的配列があります。

  1. キーと値のペア構造を格納します。
  2. エントリが追加されるたびにメモリを再割り当てします (realloc)。コンストラクターを呼び出します。
  3. 削除はトリッキーです - 削除されるエントリは、どこからでも配列の最後に移動する必要があります - その内容 (キーと値) は、配列内の現在の最後の項目と交換する必要があります。デストラクタを呼び出します。エントリが削除されるようにメモリを再割り当てします。

ここでの問題は、最初に参照によって値をエントリに保存したことです。でも、それでは使えませんoperator=。しかし、値で保存することもできません。そして、ポインターを保存したくありません。これは、目的全体を無効にするためです。現時点で残っている唯一のオプションは、削除されるエントリで新しい配置を呼び出し、最後の要素からコピー コンストラクターを呼び出すことです。これにより、参照によって値を保持できます。何かアドバイス?または、私が注意すべき落とし穴はありますか?

4

1 に答える 1

0

ポインタによる格納が参照による格納と異なる理由がわかりません。再割り当てできるという利点がありますが、これは必要だと言います。

  1. 彼らは同じサイズを取ります
  2. コンテナが存続している限り、参照対象を存続させる責任があります。
  3. ある時点で指示対象を破壊する責任はまだ誰かにある
  4. この選択をパブリック API から隠しておくことができます

参照の唯一の利点は、null にできないことですが、誰も直接アクセスすることはありません。API では引き続き参照を使用できるため、null を渡すことはできません。

于 2011-01-17T13:56:09.823 に答える