C++里map嵌套vector时报错

map<Good,vector<int>>AuctionMap;//这里>>中间有空格,没问题Good*g=newGood(1,2,3);//这里没问题vector<in... map<Good,vector<int> > AuctionMap; //这里>>中间有空格,没问题
Good *g = new Good(1,2,3); //这里没问题
vector<int> v;
v.push_back(1);
AuctionMap[*g] = v; //这里报错。这里用insert,make_pair插入都报同样的错误,貌似是运算符怎么冲突了

错误是
error C2784: 'bool __cdecl std::operator <(const class std::vector<_Ty,_A> &,const class std::vector<_Ty,_A> &)' : could not deduce template argument for 'const class std::vector<_Ty,_A> &' from 'const class Good‘
展开
 我来答
jefferyang123
2013-10-04 · TA获得超过707个赞
知道小有建树答主
回答量:124
采纳率:0%
帮助的人:130万
展开全部

如zjfaok所说,map的参数是有条件的,平时的一些常用类型能够直接用<运算符比较,但是现在key是自定义类Good,所以你需要在类Good中重载<运算符,相当于告诉map你可以用我的这个比较方法来对键Good进行比较,在类Good中添加如下代码即可:

bool operator<(const Good& other) const
{
      return this->val<other.val;
}
zjfaok
2013-10-01 · TA获得超过6806个赞
知道大有可为答主
回答量:4146
采纳率:62%
帮助的人:1615万
展开全部
能作为map的参数是有条件的,至少键之间(如这里的Good)能够用<运算符比较,或者手动指定map的第三个参数作为比较函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Share丶View
2013-10-02
知道答主
回答量:2
采纳率:0%
帮助的人:2870
展开全部
是不是因为你的【Good类里面没有重载 == 符】?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式