2012-07-06 64 views
-3

我有特定格式的數據,我想通過C++中的矢量/對/地圖存儲它們。 如:在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++; 
     } 
+1

我不明白。請告訴我們你的代碼。 – 2012-07-06 18:21:51

+1

請更具體地描述您希望如何構建數據。 – Wug 2012-07-06 18:22:15

+0

添加了代碼。 plz幫助。 – R11G 2012-07-06 18:27:30

回答

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 
+0

在編輯之後查看你的帖子,當你閱讀時,從列表中垂直讀取組成員將非常繁瑣已經定義了你的格式。考慮修改。 – Wug 2012-07-06 18:44:51