gpt4 book ai didi

c++ - std::map 是一个好的解决方案吗?

转载 作者:行者123 更新时间:2023-11-28 07:49:27 25 4
gpt4 key购买 nike

全部,

我有以下任务。

我有有限数量的字符串(类别)。然后在每个类别中都会有一组团队和值对。团队的数量是有限的,取决于用户的选择。

两种尺寸都不超过25。

现在,该值将根据用户输入而变化,当它发生变化时,团队应根据该值进行排序。

我希望 STL 有某种自动排序的 vector 或列表容器,但我唯一能找到的是 std::map<>。

所以我认为我需要的是:

struct Foo
{
std::string team;
double value;
operator<();
};

std::map<std::string,std::vector<Foo>> myContainer;

并在值改变时调用 std::sort()。

或者有更有效的方法吗?

[编辑]我想我需要澄清我的意思。这样想。

你有一张 table 。该表的行是团队。此表的列是类别。该表的单元格被分成两半。上半部分是给定团队的类别值。这个值随着每个玩家的增加而增加。现在当球员加入球队时,球员的得分类别将被加入球队,并且列中的数据将被排序。因此,对于类别“A”,它可能是 team1、team2;对于类别“B”,它可能是 team2、team1。然后根据每个团队的位置为每个团队/类别分配分数。我需要显示该分数。

我希望这会澄清我正在努力实现的目标,并让我更清楚地知道我在寻找什么。[/编辑]

最佳答案

这实际上取决于您要多久修改一次 map 中的数据,以及您将多久搜索一次 std::string 并获取 vector 。

如果您的访问模式是添加 map 条目,然后填充 vector 中的所有条目,然后访问下一个,填充 vector 中的所有条目,等等。然后随机访问 vector 的 map 然后..没有 map 可能不是最好的容器。您最好使用包含一对标准字符串和 vector 的 vector ,然后在添加所有内容后对其进行排序。

事实上,按上面的方式组织它可能是最有效的设置方式(我承认这并不总是可行的)。此外,强烈建议使用某种哈希值代替 std::string,因为哈希比较比字符串比较快很多倍。无论如何,您也将字符串存储在 Foo 中。

然而, map 会起作用,但这实际上取决于您要尝试做什么。

关于c++ - std::map 是一个好的解决方案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14170058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com