关于如何在基于动态数组的结构中存储键值对的想法

时间:2011-01-17 12:23:33

标签: c++ g++ placement-new

我有一个具有以下属性的动态数组:

  1. 存储键值对结构。
  2. 每当添加条目(realloc)时重新分配内存。调用构造函数。
  3. 删除很棘手 - 删除的条目必须从它的任何地方移动到数组的末尾 - 它的内容(键和值)必须与数组中当前的最后一项交换。调用析构函数。重新分配内存,以便删除该条目。
  4. 现在问题是我最初在Entry中通过引用存储了Value。但是,我当时不能使用operator=。但我也无法按价值存储。而且我不想存储指针,因为这会破坏整个目的。我现在看到的唯一选择是在被删除的条目上调用placement new,并从最后一个元素调用它的复制构造函数。这将让我通过引用保持价值。有什么建议?或者我应该注意的陷阱?

1 个答案:

答案 0 :(得分:0)

我不明白为什么按指针存储与通过引用存储有什么不同。你可以获得重新分配的优势,你说你需要。

  1. 他们占用相同的尺寸
  2. 只要容器存活,您仍然有责任保持指示对象
  3. 某人仍然有责任在某些时候摧毁指示物
  4. 您可以将此选项隐藏在公共API
  5. 之外

    引用的唯一优点是它不能为null,但没有人会直接访问它。您仍然可以在API中使用引用,因此无法传入空值。