【问题标题】:C++ Finding the number of times something appears in two elements a vector of structsC++ 查找某物在两个元素中出现的次数 结构向量
【发布时间】:2015-05-03 22:07:02
【问题描述】:

抱歉,标题令人困惑,不知道如何措辞。
基本上,我有一个充满结构的向量,其中包含一些参加某项运动决赛的球队的一些信息。结构如下:

struct Year{
    string year;
    string host;
    string winner;
    string score;
    string runnerUp;
};

我已经用文件中的信息填充了向量,并想知道每支球队在决赛中打了多少次。这意味着我需要计算每支球队获得冠军或获得亚军的次数。执行此操作的相当简单的方法是什么?
作为参考,该文件如下所示:

Year    Host    Winner  Score   Runner-up
1936    Germany United States   19-8    Canada
1948    United Kingdom  United States   65-21   France
1952    Finland United States   36-25   Soviet Union
1956    Australia   United States   89-55   Soviet Union
1960    Italy   United States   No playoffs Soviet Union
1964    Japan   United States   73-59   Soviet Union
1968    Mexico  United States   65-50   Yugoslavia
1972    West Germany    Soviet Union    51-50   United States
1976    Canada  United States   95-74   Yugoslavia
1980    Soviet Union    Yugoslavia  86-77   Italy
1984    United States   United States   96-65   Spain
1988    South Korea Soviet Union    76-63   Yugoslavia
1992    Spain   United States   117-85  Croatia
1996    United States   United States   95-69   Yugoslavia
2000    Australia   United States   85-75   France
2004    Greece  Argentina   84-69   Italy
2008    China   United States   118-107 Spain
2012    United Kingdom  United States   107-100 Spain

假设向量已正确填充

【问题讨论】:

  • 好吧,你需要一个循环。你试过什么?
  • 我还没有尝试太多,不知道从哪里开始。问题是我需要保持一切都非常通用,以便它可以处理多个文件。我考虑过创建另一个保存计数的向量,但我不确定如何在保持正确排序的同时实现它。
  • @Greesy "假设向量已正确填充" 您的第一个障碍从这里开始:stackoverflow.com/questions/23047052/…,我强烈建议您在输入文件中引入一些合理的分隔符格式。
  • @πάντα ῥεῖ 它们用 '\t' 分隔。我没有创建文件,我只需要使用它。我已经创建了向量,并且在此之前已经将它用于一些事情。

标签: c++ vector struct ifstream


【解决方案1】:

您可以遍历您的向量并为每次出现的团队增加一个计数器。您可以将计数器编码为map<std::string, int>,其中的键是团队的名称。

编辑maps 的丑表亲是键和值对的向量。我向您展示了一种定义数据类型的可能方法。您可以将struct 更改为std::pair,但由于我猜这是家庭作业,您可能希望坚持使用简单的数据类型。

struct Counter{
    string team;
    int counter;
}

std::vector<Counter> counters;

我让您考虑如何为这些结构设计算法。提示:std::find.

【讨论】:

  • 虽然这听起来很简单,但我还没有研究过地图,我更愿意远离它们。不过谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-21
  • 2021-10-27
  • 1970-01-01
相关资源
最近更新 更多