1.问题:
在向map/multimap中通过insert传入对组时,出现错误,不能够编译成功。
void setGroup(vector<Employee> &v, multimap<Employee, int> &m) {
// 对vector进行遍历
for (vector<Employee>::iterator it = v.begin(); it != v.end(); it++) {
int id = rand() % 3;
m.insert(make_pair(*it,id));
}
}
2.原因:
map默认按照key值进行从小到大的排序,使用自定义数据类型时,需要利用重载运算符指定排序规则。
3.解决:
- 改变key的值,使其能够进行排序。
- 重载运算符,构建排序规则
struct mykey
{
int iRegion_Id;
int iGrade;
mykey(int _iRegion_Id, int _iGrade)
{
iRegion_Id = _iRegion_Id;
iGrade = _iGrade;
}
bool operator < (const mykey& pk) const
{
if (this->iRegion_Id < pk.iRegion_Id)
return true;
else if (this->iRegion_Id == pk.iRegion_Id && this->iGrade < pk.iGrade)
return true;
return false;
}
~mykey()
{
}
};
map<mykey,myvalue> hhh;