【发布时间】:2013-10-01 15:53:19
【问题描述】:
假设我有不同类型的结构组件。也许我有TransformComponent 和RigidBodyComponent
现在,这就是问题所在:我想要一个类似 std::map 的东西,您可以在其中将组件类型和 id 映射到组件。 id 是将组件链接在一起的东西。我应该使用哪种容器?我不能使用std::map<std::typeindex, std::map<id_t, T>>,因为T 类型取决于您用于索引第一个地图的类型索引。
【问题讨论】:
-
TransformComponent和RigidBodyComponent有类似的接口吗?如果是这样,您可以从公共基类派生它们并存储指向实例的智能指针。 -
它们是普通的旧数据类型,彼此之间根本没有关系。
-
您的问题没有提供足够的信息,答案取决于您为什么要在一个容器中存储 2 种不相关的数据类型以及您希望如何访问该数据。
-
一般来说,STL标准容器是同质的;它们都存储单一类型的项目。您可以通过继承和存储指针来放松这一点。
-
暂时搁置which的问题。假设你可以拥有这样一个容器。 你会用它做什么?你能展示一些预期的用法示例吗?