Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何插入到集合中?_C++_Insert_Set - Fatal编程技术网

C++ 如何插入到集合中?

C++ 如何插入到集合中?,c++,insert,set,C++,Insert,Set,我知道最明显的方法是使用insert函数。我要做的是将给定的电话号码放入电话地图和电话号码集中。它可以把它放在地图上,但当它找到电话号码时,它会设置seg故障。Add_Phone函数和Phone map位于一个名为Code_Processor的类中 class User { public: string username; string realname; int points; set <string> phone_numbers; }; map &l

我知道最明显的方法是使用insert函数。我要做的是将给定的电话号码放入电话地图和电话号码集中。它可以把它放在地图上,但当它找到电话号码时,它会设置seg故障。Add_Phone函数和Phone map位于一个名为Code_Processor的类中

class User {
  public:
   string username;
   string realname;
   int points;
   set <string> phone_numbers;
};

map <string, User *> Phones;

int Code_Processor::Add_Phone(string username, string phone) {
    //register the given phone # with given user
    //put the phone on both Phones map and phone_numbers set
    //use .insert()
    User *nUser = new User;
    map <string, User *>::iterator nit;
    nit = Phones.find(username);

    Phones.insert(make_pair(username, nUser));  //put into Phones map
    nit->second->phone_numbers.insert(phone);    //this is where is seg faults!! 


    return 0;
}
类用户{
公众:
字符串用户名;
字符串实名;
积分;
设置电话号码;
};
地图电话;
int Code_处理器::添加_电话(字符串用户名,字符串电话){
//向指定用户注册指定电话
//将手机放在手机地图和手机号码集上
//use.insert()
用户*用户=新用户;
迭代器nit;
nit=Phones.find(用户名);
insert(make_pair(用户名,用户));//放入电话地图
nit->second->phone_number.insert(phone);//这就是seg故障所在!!
返回0;
}

在插入地图之前搜索
用户名
,如果用户不存在,则
nit
将是不应取消引用的
结束
迭代器。如果你去引用它(就像你做的那样),那么你就有了

相反,要解决您的问题,请依赖函数将迭代器返回给插入的元素这一事实

然后你可以做类似的事情

auto inserted_pair = Phones.insert(make_pair(username, nUser));
if (inserted_pair.first != Phones.end())
{
    inserted_pair.first->phone_numbers.insert(phone);
}