-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 に答える