c++ - 哪个是管理映射到其他一些小对象的小对象的正确容器?

标签 c++ c++11 std

我有一组小 object 。这些对象中的每一个都指向其他对象。这些指针可以实现为实际指针或对象数组或其他对象的索引。它可能是这样的指针数组,其长度可能会改变。可能存在指向相同类型和其他类型对象的指针,但这在编译时是已知的。

例如:我有一个类 Person。这个人有两个指向其父 Persons 的指针。还有一个类 Place。每个人都有一个指向他/她访问过的所有地方的指针列表。

与实际的家谱不同,我可能想不时地通过删除/插入一些人来更改树。

C++ 标准库 (C++ 11) 中是否有用于该目的的容器,还是我应该寻找专用的内存管理类?

我必须将数据传递到 C 接口(interface),为什么我更喜欢基于可访问(只读)线性数组的存储方法。

最佳答案

听起来是引用的好时机Stepanov :

Use vectors whenever you can. If you cannot use vectors, redesign your solution so that you can use vectors.

“可访问线性阵列”部分指向vector<Person> - 其他容器都没有该功能 - 其余用例不建议任何特定类型的存储或访问。如果你能做到,它的一部分听起来可能更干净vector<shared_ptr<Person>>但这会破坏您的 C 接口(interface)要求。所以vector<Person>可能是你的答案。

关于c++ - 哪个是管理映射到其他一些小对象的小对象的正确容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26972843/

相关文章:

c++ - 如何使用模板在 C++ 中使用 `using` 创建别名(创建参数化别名)?

c++ - 访问类型成员

c++ - 这段 C++ 代码的奇怪行为(std::wcout 和 std::exception)

c++ - 在发生某些其他初始化后,如何初始化类的静态成员?

C++:作为指针的全局变量

c++ - 我的程序在 fseek 处崩溃

c++ - 如何在 C++ 中的 map 中使用计数函数

c++ - 我们应该如何实现对象类型的 move ?

c++ - 遍历 vector (段错误)

http - D std.zlib 使用 http 进行流压缩