我有一个具有以下属性的动态数组:
存储键值对结构。
每当添加条目时就重新分配内存(重新分配)。调用构造函数。
删除是棘手的-删除的条目必须从它的任何位置移到数组的末尾-它的内容(键和值)必须与数组中的当前最后一项交换。调用析构函数。重新分配内存,以便删除该条目。
现在的问题是我最初通过引用将值存储在条目中。但是,我不能使用operator=
。但是我也不能按价值存储。而且我不想存储指针,因为那样会破坏整个目的。目前,我剩下的唯一选择是在要删除的条目上调用new放置,并从最后一个元素对其调用复制构造函数。这将使我通过引用保留“价值”。有什么建议吗?还是我应该注意的陷阱?
最佳答案
我不明白为什么通过指针存储与通过引用存储有什么不同。您将获得需要重新分配的优势。
他们占据相同的大小
只要容器还活着,您仍然有责任保持引用对象的生命
在某个时刻仍有人要负责销毁指示物
您可以将此选择隐藏在公共API中
该引用的唯一优点是它不能为null,但是没有人可以直接访问它。您仍然可以在API中使用引用,因此无法传递null。
关于c++ - 关于如何在基于动态数组的结构中存储键值对的想法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4713094/