-3

我有特定格式的数据,我想通过 C++ 中的向量/对/映射来存储它们。例如:

Group A          Group B   Group C  ........
John             Matt      Shawn            
Jane             Liam      Tom              
.
.
.

其中可以有任意数量的组和任意数量的名称(所有字符串)。我希望形成包含任意数量名称的组(可以是任意数量)。所以我尝试将它们声明为一张地图或一对。上面的格式是我要存储的。我尝试以这种形式进行:

Map<vector<int>, vector<string> > groups;
groups[i] = names.at(i);

不工作。

该方法的代码是:-

void form_groups(vector<string> teams){
          pair<vector<int>, vector<string> > groups;
          int num_teams_in_grp = 0;
          int group_num = 1;
          int i = 0;
          while( i < teams.size())
                  {
                          groups[group_num] = teams.at(i++);
                          num_teams_in_grp++; 
                  }       
                  group_num++;
         }
4

1 回答 1

1

您对格式含糊不清,因此我将做出以下假设。您有一些组名称和一些组,每个组都被定义为一组成员。

我建议像这样存储它们:

#include <map>
#include <set>

...

// members of groups stored in sets, keyed by group name
map<string, set<string> > groups; 

...

// to access groups:
set<string>& somegroup      = groups["Minions"];
set<string>& someothergroup = groups["Judicators"];

使用您的特定数据格式将人员添加到组中,我假设为:

Group1 Group2 Group3 ... GroupN
Member1_Group1 Member2_Group1 Member3_Group1 ... MemberM_Group1
...
Member1_GroupN Member2_GroupN Member3_GroupN ... MemberM_GroupN

您必须跟踪每个组名称的索引,以便您可以按行跟踪您应该向哪个组添加成员。为此,您可能会使用类似以下 C++ 的伪代码:

vector<string> groups_by_index;            // stores group names by index numbers
int current_line = 0;                      // stores the index of the group to add to

for each item on line:                     // store group names by index
    groups_by_index.push_back(item);

for each remaining line:                   // loop over each groups members
    for each item on line:
        groups[current_line].insert(item); // add member to group
    ++current_line;                        // increment group index
于 2012-07-06T18:41:21.730 回答