将结构添加到std :: list

时间:2010-03-06 14:10:42

标签: c++

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));

}

是否有更少的内存消耗方式将成员添加到组而不是将整个集合传递给构造函数?

修改:重命名以下划线开头的变量。

2 个答案:

答案 0 :(得分:3)

您可以传递引用,然后复制并使用初始化列表,与字符串相同。

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

答案 1 :(得分:1)

通过添加空元素并交换集合,可以避免使用中间副本。

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