2010-03-06 144 views
2
struct Group 
{ 
    Group(string _N, set <string> M_) 
    {Name = N_; Member = M_} 
    string Name; 
    set <string> Members; 
}; 

int main() 
{ 
    list <Group> GroupList; 
    set <string> Members; 

    //collect the members from a file and add to set 

    GroupList.pushback(Group(Name, Members)); 

} 

有沒有更少的內存消耗方式來添加成員組,而不是將整個集合傳遞給構造函數?向std :: list添加一個結構體

編輯:重命名以下劃線開頭的變量。

+1

重命名您的參數。所有以下劃線開頭的大寫字母都是保留字。 – jalf 2010-03-06 15:20:42

回答

3

您可以傳遞引用,然後複製並使用初始化列表,與字符串相同。

Group(const string& n, const set <string>& m) 
: Name(n), Members(m) {} 
+3

不傷害使它們成爲const ref參數。 – 2010-03-06 14:25:33

+0

好吧,我在第一個地方去了,但後來我覺得這個參考指針是一個混淆。我認爲它可能會更改GroupList中的集合,但是struct中的變量成員不是指針:) – cpx 2010-03-06 14:33:50

1

通過添加一個空元素並交換集合,可以避免中間複製。

GroupList.pushback(Group()); 
swap(GroupList.back().Members, Members);