大佬教程收集整理的这篇文章主要介绍了c – 我用什么_can_作为std :: map键?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有:
struct Coord { int row,col ; bool operator<( const coord& other ) const { return row < other.row && col < other.col ; } } ;
我正在尝试创建一个地图< Coord,Node *>,您可以在其中查找Coord的Node *.
问题是,它有错误.查找地图< Coord,Node *> Coord正在回错.
我很难搞清楚这是否合适.
维基百科说,map [keys] requires a strict weak ordering.我做错了吗?有没有办法使它工作,或者地图的键是否可以“严格排序”的简单值?
基本上问题是自定义结构作为我的std :: map的键需要什么?
bool operator<( const coord& other ) const { return row < other.row && col < other.col ; }
obj1(这)
行:2
col:3
obj2
行:3
col:2
obj1< obj2的? =>假 那么好吧: obj2< OBJ1? =>假 唯一的结论是它们必须相等(基于你的<运算符).由于这是一张地图,并且按键是唯一的,因此两个按键都会重新连接到同一个地点.这种行为可能或者可能不是你所期望的,但听起来可能不是. 你需要的是在row / col之间建立一个优先级,以便<真的像你期望的那样:
bool operator<( const coord& other ) const { // look at row first,if row is equal,check column. if (row < other.row) { return true; } else if (row == other.row) { return col < other.col ; } return false; }
以上是大佬教程为你收集整理的c – 我用什么_can_作为std :: map键?全部内容,希望文章能够帮你解决c – 我用什么_can_作为std :: map键?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。