C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 我用什么_can_作为std :: map键?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Extends.

我有

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;
  }
@H_489_46@

大佬总结

以上是大佬教程为你收集整理的c – 我用什么_can_作为std :: map键?全部内容,希望文章能够帮你解决c – 我用什么_can_作为std :: map键?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。