Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.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++ 为什么找不到此std::map键?_C++ - Fatal编程技术网

C++ 为什么找不到此std::map键?

C++ 为什么找不到此std::map键?,c++,C++,我以前问过一次,现在我有一个相关的问题。下面,输出为“未找到”,打印的元素数为2 直线位置。安放(r,q)清楚地插入元素,并且映射大小正确,那么为什么找不到rp(本例中未记录) #包括 #包括 结构屏幕点{ 浮动x=0,y=0; 屏幕点(浮动x,浮动y):x{x},y{y}{ }; 布尔运算符您的运算符您的比较运算符 bool operator<(const screenPoint& left, const screenPoint& right){ return lef

我以前问过一次,现在我有一个相关的问题。下面,输出为“未找到”,打印的元素数为2

直线
位置。安放(r,q)
清楚地插入元素,并且映射大小正确,那么为什么找不到
r
<找到代码>p(本例中未记录)

#包括
#包括
结构屏幕点{
浮动x=0,y=0;
屏幕点(浮动x,浮动y):x{x},y{y}{
};

布尔运算符您的
运算符您的比较运算符

bool operator<(const screenPoint& left, const screenPoint& right){
  return left.x<right.x||left.y<right.y;
}

我在另一个问题中提出的解决办法似乎是不够的。对于这样一个简单的数据结构,如何提供一个好的操作符?==如果我使用浮点数,则不是一个好的解决方案。这也在我的链接的其他问题中提到过。@krzaq如果std::tie仅仅创建一个元组,那么标准是否会自动实现这个操作符操作符或者在
std::map
中输出这些操作符隐式地取决于两个浮点数的相等性。
运算符在我的另一个问题中,我使用了&&并且它也不起作用@JeromeBaldridge更新了。因为有两个成员,它变得更复杂。因为tie只创建了一个引用元组,所以这个结果元组会自动创建一个好的操作符吗?@JeromeBaldridge是的。它很好地使用了
操作符,iOS中的接触点以像素坐标表示为浮点,许多确实是分数。
bool operator<(const screenPoint& left, const screenPoint& right) {
    return left.x < right.x ||
           ( left.x == right.x && left.y < right.y );
}
bool operator<(const screenPoint& left, const screenPoint& right){
  return left.x<right.x||left.y<right.y;
}
bool operator<(const screenPoint& left, const screenPoint& right){
  return std::tie(left.x, left.y) < std::tie(right.x, right.y);
}