<分区>
我正在用 C++ 编写一个模拟,其中包含许多由整数索引的小实体,每个实体之间都有各种类型的关系。我有一个存储关系数据的基本结构,关系是单向的(A 可以是 B 的 friend ,但 B 不一定与 A 有任何关系)。
所以我有很多数据的形式(整数索引,整数索引,数据......)
我经常需要从一个实体(索引)开始,然后找到它与其他实体的所有关系(因此第一个条目等于某个索引的所有三元组)。
有时我还需要从模拟中移除实体并销毁所有引用它们的关系(移除所有第一个或第二个条目等于给定整数的三元组)。
在一个极端情况下,我可以按任意顺序存储所有内容并每次都搜索它以构建我需要从中提取的任何列表(我在上面的#1 和#2 中引用的列表)。这需要最少的数据,但也会非常慢。另一个极端是我跟踪多个索引结构,这些结构允许我更快地执行上面描述的两个操作,但会占用一些内存。很难简洁地描述我的意思,但您可以想象一个列表列表,它可以让您快速回答“三元组中第一个条目为 47 的所有关系是什么”这个问题。
我对数据结构一无所知,但我想这一定是人们以前遇到和思考过的问题。是否有任何 C++ 库具有可以自动跟踪此类索引信息或与我所描述的内容相关的数据结构?谢谢!