Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 哪个STL容器用于相互关联的数据?_C++_Stl_Containers - Fatal编程技术网

C++ 哪个STL容器用于相互关联的数据?

C++ 哪个STL容器用于相互关联的数据?,c++,stl,containers,C++,Stl,Containers,首先,这是一个游戏项目 我需要一个名为Skill的对象,其中包含它们的字符串名称、一些其他成员,以及一个名为“requirements”的其他Skill对象集的成员。(这将是给定技能所需的先决技能列表) 我应该在什么样的STL容器中放置一组所有技能对象?矢量?设置地图? 该容器是否也将用作成员“需求”的类型 技能必须是独一无二的。 至于我将对技能集做些什么,主要是按名称搜索和组合技能集,并将技能附加到技能集。您不能根据容器需求包含的内容来定义容器需求,而是根据常见的操作和操作速度来定义容器需求

首先,这是一个游戏项目

我需要一个名为Skill的对象,其中包含它们的字符串名称、一些其他成员,以及一个名为“requirements”的其他Skill对象集的成员。(这将是给定技能所需的先决技能列表)

我应该在什么样的STL容器中放置一组所有技能对象?矢量?设置地图?
该容器是否也将用作成员“需求”的类型

技能必须是独一无二的。

至于我将对技能集做些什么,主要是按名称搜索和组合技能集,并将技能附加到技能集。

您不能根据容器需求包含的内容来定义容器需求,而是根据常见的操作和操作速度来定义容器需求

在某个地方有一个很棒的图表,有点像流程图,可以指导您选择一个容器。如果我找到了,我会更新这个答案

编辑:在这里:

技能必须是独一无二的

《第一印象》认为您应该使用
map
set
。但这降低了在集合中“搜索”的灵活性。我会简单地从向量开始,把向量放到某个类中。该类将具有
AppendSkill
,并将检查给定的
Skill
是否已经存在。如果没有追加,则返回false/failure


同一个类应该有助于组合和附加技能/技能集。

这就是您要寻找的吗@GWW,是的,就是这样,我自己在发布答案后一分钟内就找到了。谢谢。没问题,我一定是在你编辑答案时评论过的。这是一个简洁的图表:)你刚才帮了我很多,让我想到了一个可以完成所有这些的课程!非常感谢。是的,我最终还是会使用向量。希望不要太慢,vector也不慢。但这取决于如何“搜索”特定的数据元素,以及向量中有多少元素。由于您有多个搜索条件,您可以使用映射来保存这些字符串,“值”部分将是向量的迭代器/索引。但是,如果搜索字符串是精确的搜索字符串。若输入部分字符串,最好只搜索向量。希望你明白我的意思。矢量中大约有一千个对象。我认为不会搜索部分字符串。那么,你的意思是我要搜索的所有字符串都有一个单独的映射,值是向量索引,对应的技能位于向量中?然后在地图上通过字符串键找到我想要的技能。我是否理解得很好?如果字符串搜索是区分大小写的,那么您也必须为此编写一些比较函数。还确保这些字符串是唯一的,否则考虑使用MultMAP。