0

全部,

我有以下任务。

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

两种尺寸都不超过 25。

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

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

所以我认为我需要的是:

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

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

当值发生变化时,只需调用 std::sort() 即可。

还是有更有效的方法来做到这一点?

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

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

我希望这将阐明我正在努力实现的目标,并且更清楚我在寻找什么。[/编辑]

4

1 回答 1

1

这实际上取决于您多久修改一次地图中的数据,以及您多久搜索一次 std::string 并获取向量。

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

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

map 会,但是,工作,但它真的取决于你想要做什么。

于 2013-01-05T08:44:16.430 回答