std::set 2D 点的自定义比较器

2024-02-26

我需要一个非重复的 2D 点列表,所以我使用std::set具有自定义比较功能。我使用的函数在插入点后出现问题,因为有时std::find找不到已经插入的点。

const double tolerance = 0.1;
struct MyPoint2D
{
  MyPoint2D(double x, double y) : _x(x), _y(y) {}
  double _x, _y;
};
auto compMyPoint2D = [&](const MyPoint2D& pointA, const MyPoint2D& pointB) -> bool
{
  if (pointA._x < pointB._x - tolerance) return true;
  if (pointA._x > pointB._x + tolerance) return false;
  if (pointA._y < pointB._y - tolerance) return true;
  return false;
};
std::set<MyPoint2D, decltype(compMyPoint2D)> orderedMyPoints(compMyPoint2D);
MyPoint2D pointA(0.66,1.14);
MyPoint2D pointB(0.75, 0.0);
MyPoint2D pointC(0.57,1.19);
orderedMyPoints.insert(pointA);
orderedMyPoints.insert(pointB);
orderedMyPoints.insert(pointC);
if (orderedMyPoints.find(pointC)==orderedMyPoints.end())
{
  std::cout << "Not found" << std::endl;
  orderedMyPoints.insert(pointC);
  if (orderedMyPoints.find(pointC)==orderedMyPoints.end())
    std::cout << "Still not found" << std::endl;
}

在插入之前我需要预先订购 2d 点吗std::set或者有更好的2d点比较函数?

我需要使用std::find插入所有点后得到最终的点索引。

我在 Microsoft Visual Studio 2010 上使用本机 C++。


你的比较函数是错误的。去掉+-公差。当尝试确定浮点值之间的绝对顺序时,这没有用。例如,它不强制等价的传递性。也就是说,如果A == B (i.e. f(A, B) and f(B, A)都是假的)和B == C,那么情况不一定是这样A == C当你在那里进行公差调整时。

只需这样做:

if (pointA._x < pointB._x) return true;
if (pointA._x > pointB._x) return false;
if (pointA._y < pointB._y) return true;
return false;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

std::set 2D 点的自定义比较器 的相关文章

  • 将处理后的图形绘制到另一个图形中

    我想将一个经过处理的图形绘制到另一个图形中 I have two graphics var gHead Graphics FromImage h var gBackground Graphics FromImage b Transform
  • 赋值运算符和复制构造函数有什么区别?

    我不明白C 中赋值构造函数和复制构造函数之间的区别 是这样的 class A public A cout lt lt A A lt lt endl The copy constructor A a b The assignment cons
  • MEX 文件中的断言导致 Matlab 崩溃

    我正在使用mxAssert 宏定义为matrix h在我的 C 代码中 mex 可以完美编译 当我调用的 mex 代码中违反断言时 该断言不会导致我的程序崩溃 而是导致 Matlab 本身崩溃 我错过了什么吗 这是有意的行为吗 当我查看 M
  • 如何进行带有偏差的浮点舍入(始终向上或向下舍入)?

    我想以偏置舍入浮动 要么总是向下 要么总是向上 代码中有一个特定的点 我需要这个 程序的其余部分应该像往常一样四舍五入到最接近的值 例如 我想四舍五入到最接近的 1 10 倍数 最接近 7 10 的浮点数约为 0 69999998807 但
  • 如果.Net Core可以在Windows上运行,为什么不能在.Net Framework中引用.Net Core DLL?

    我明白为什么 Net Framework 可能会在 Net Core IE 中导致问题 因为不存在特定于 Windows 平台的 API 但是为什么不能直接引用 Net Core 作为 Net Framework 中的库呢 如果 Net C
  • 使用实体框架从集合中删除项目

    我正在使用DDD 我有一个 Product 类 它是一个聚合根 public class Product IAggregateRoot public virtual ICollection
  • 在 C++11 中省略返回类型

    我最近发现自己在 C 11 模式下的 gcc 4 5 中使用了以下宏 define RETURN x gt decltype x return x 并编写这样的函数 template
  • 有什么工具可以说明每种方法运行需要多长时间?

    我的程序的某些部分速度很慢 我想知道是否有我可以使用的工具 例如它可以告诉我可以运行 methodA 花了 100ms 等等 或者类似的有用信息 如果您使用的是 Visual Studio Team System 性能工具 中有一个内置分析
  • Linux TUN/TAP:无法从 TAP 设备读回数据

    问题是关于如何正确配置想要使用 Tun Tap 模块的 Linux 主机 My Goal 利用现有的路由软件 以下为APP1和APP2 但拦截并修改其发送和接收的所有消息 由Mediator完成 我的场景 Ubuntu 10 04 Mach
  • Guid 应包含 32 位数字和 4 个破折号

    我有一个包含 createuserwizard 控件的网站 创建帐户后 验证电子邮件及其验证 URL 将发送到用户的电子邮件地址 但是 当我进行测试运行时 单击电子邮件中的 URL 时 会出现以下错误 Guid should contain
  • 在 C# 中将位从 ulong 复制到 long

    所以看来 NET 性能计数器类型 http msdn microsoft com en us library system diagnostics performancecounter aspx有一个恼人的问题 它暴露了long对于计数器
  • C++派生模板类继承自模板基类,无法调用基类构造函数[重复]

    这个问题在这里已经有答案了 我试图从基类 模板 继承 派生类也是模板 它们具有相同的类型 T 我收到编译错误 非法成员初始化 Base 不是基类或成员 为什么 如何调用基类构造函数 include
  • 组合框项目为空但数据源已满

    将列表绑定到组合框后 其 dataSource Count 为 5 但组合框项目计数为 0 怎么会这样 我习惯了 Web 编程 而且这是在 Windows 窗体中进行的 所以不行combo DataBind 方法存在 这里的问题是 我试图以
  • C# 创建数组的数组

    我正在尝试创建一个将使用重复数据的数组数组 如下所示 int list1 new int 4 1 2 3 4 int list2 new int 4 5 6 7 8 int list3 new int 4 1 3 2 1 int list4
  • “MyClass”的类型初始值设定项引发异常

    以下是我的Windows服务代码 当我调试代码时 我收到错误 异常 CSMessageUtility CSDetails 的类型初始值设定项引发异常 using System using System Collections Generic
  • C# using 语句、SQL 和 SqlConnection

    使用 using 语句 C SQL 可以吗 private static void CreateCommand string queryString string connectionString using SqlConnection c
  • 如何排列表格中的项目 - MVC3 视图 (Index.cshtml)

    我想使用 ASP NET MVC3 显示特定类型食品样本中存在的不同类型维生素的含量 如何在我的视图 Index cshtml 中显示它 an example 这些是我的代码 table tr th th foreach var m in
  • UWP 无法在两个应用程序之间创建本地主机连接

    我正在尝试在两个 UWP 应用程序之间设置 TCP 连接 当服务器和客户端在同一个应用程序中运行时 它可以正常工作 但是 当我将服务器部分移动到一个应用程序并将客户端部分移动到另一个应用程序时 ConnectAsync 会引发异常 服务器未
  • 以编程方式使用自定义元素创建网格

    我正在尝试以编程方式创建一个网格 并将自定义控件作为子项附加到网格中 作为 2x2 矩阵中的第 0 行第 0 列 为了让事情变得更棘手 我使用了 MVVM 设计模式 下面是一些代码可以帮助大家理解这个想法 应用程序 xaml cs base
  • Azure函数版本2.0-应用程序blobTrigger不工作

    我有一个工作功能应用程序 它有一个 blob 输入和一个事件中心输出 在测试版中工作 随着最新的更改 我的功能不再起作用 我尝试根据发行说明更新 host json 文件 但它没有引用 blob 触发器 version 2 0 extens

随机推荐

  • 使用 CLI omxplayer 调整音频音量级别 - Raspberry Pi

    我有一个 bash 脚本 可以通过 omxplayer 在 Raspberry Pi 上播放 mp3 文件 但无法控制本地 耳机 音量GUI 是否有一个命令CLI我可以在 bash 脚本中实现吗 我搜索了很多 但找不到这样的命令 Code
  • “DataView 在 System.data 中未标记为可序列化”是什么意思?

    当我将 dataview 存储在 viewstate 中时 net 显示错误 Dataview 在 system data 中未标记为可序列化 但当我将其存储在会话中时 它可以正常工作吗 背后的原因是什么 还有哪些其他对象没有标记为 可序列
  • 如何将选项传递给“集合”字段 Symfony 2.1 中的 CustomType?

    I have SuperType实体表格Super 在这种形式中我有一个collection现场ChildType实体的表单类型Child class SuperType public function buildForm FormBuil
  • 从 byte[] 下载 PDF 文件

    我一直在努力做一个PDF文件下载自bytes 在 ASP Net MVC C 中 下面的代码工作正常 我需要将代码转换为 NET Core对于相同的PDF下载过程 string fileName testFile pdf byte pdfa
  • 在主屏幕中安装启动器图标一次

    当用户安装 Android 应用程序时 会在应用程序菜单中创建启动器图标 我采访过的许多用户都希望 当他们安装应用程序时 他们的主屏幕 启动板 上应该自动出现一个图标 许多应用程序都以某种方式实现了这一点 我的偏好是在安装时出现一个窗口 询
  • 如何在 VB.Net 中运行 Powershell 脚本

    我需要在 VB Net 中运行 Exchange 2007 powershell 脚本 但我似乎找不到显示如何在加载模块的情况下执行此操作的方法 做到这一点的最佳方法是什么 您可以在VB中运行powershell脚本 请查看以下链接 htt
  • 单击按钮即可更新 D3 等值线州地图数据

    我使用 d3 datamaps 和 topojson 创建了一个 choropleth 州地图 我在根据按钮单击更改原始地图数据时遇到问题 首选方法是仅在更改函数内刷新原始地图的数据 相反 我让按钮执行函数消除包含地图的 div 然后重新创
  • Sqlite3_step() 在此查询上不断返回 SQLITE_MISUSE。有什么指点吗?

    我试图在 viewDidLoad 例程中打开一个 sqlite 数据库 并尝试将 sql 查询发送到该数据库 但 sqlite step 每次都会失败 我不确定这里出了什么问题 我只是尝试将其作为 sqlite3 的 hello world
  • 提交响应后 FormResponse.getId() 返回错误值

    我正在编写一个程序 需要各种谷歌表单响应的ID 我的程序首先创建表单对象并获取响应 var form FormApp openByUrl var allResponses form getResponses 如果表单响应是几个小时前的 那么
  • 转换时区时注意夏令时

    我有一个 Redshift 数据表 其中所有时间值都存储在 CST 中 并且我根据邮政编码 位置 将时间值转换为相应的时区 当我这样做时 我知道所有时间值都是标准时间 因此我的函数用法是 CASE WHEN convert timezone
  • 如何矢量化(利用 pandas/numpy)而不是使用嵌套 for 循环

    我希望有效地使用pandas or numpy 而不是嵌套for循环与if解决特定问题的语句 这是一个玩具版本 假设我有以下两个 DataFrame import pandas as pd import numpy as np dict1
  • 无法读取架构文档'http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd

    我正在为大学编写一个简单的 Swing 应用程序 并使用 Hibernate 和 Oracle XE 我被这个错误困住了 29 06 2011 14 54 10 org hibernate cfg annotations Version
  • 放大图像映射的某个区域

    我目前正在尝试制作一个响应式图像地图 我们还可以在其中缩放特定区域 目前我有类似的东西 插图 例如 我有 3 个部分用于 3 个不同的区域 但现在我不想在用户单击特定区域时放大该区域 我已经尝试了一些 jquery 脚本 但问题是它会缩放所
  • 如何隐藏Android手机上的软键栏?

    当我的应用程序启动时 我想隐藏软键栏 红色矩形 以获得更大的屏幕 我怎样才能隐藏它 当应用程序退出时 我是否需要特意显示该栏 或者应用程序退出后它会自动恢复 Android 4 1 手机正面没有硬件按键 我知道已经晚了 但这是正确的答案 所
  • 如何在 Spring Tools Suite 上添加 Spring roo

    我已经安装了 sts 但创建的新 roo 项目不存在 我需要做什么才能添加 spring roo 在以前的版本中我可以创建它 但在 3 5 0 中不行 在 Spring 工具套件中 单击仪表板中的 扩展 链接 搜索 Spring Roo 并
  • “known_hosts”文件中的 ECDSA 条目由哪些部分组成?

    我正在尝试从我的文件中提取 ECDSA 公钥已知主机归档该文件ssh用于验证主机 我下面有一个例子 这是我的known hosts 文件中 127 0 0 1 ecdsa sha2 nistp256 的条目 AAAAE2VjZHNhLXNo
  • Express 应用程序 - 更改基本 url

    我正在构建一个问答应用程序本教程 http engineering paiza io entry 2016 03 10 115345一切顺利 但我需要更改更改通过配置文件提供应用程序的基本根的机会 现在 该应用程序在 localhost 8
  • 使用 jquery 将表单值传递到 iframe 的 src url

    我一直让自己发疯去尝试做看似简单的事情 我有一张表格 我可以在其中询问邮政编码 在您输入邮政编码后 我使用 colorbox 弹出带有 iframe 的灯箱 我需要将表单中的邮政编码值传递到 iframe 的源 URL 中 我的表单代码如下
  • 下拉框显示的高度[重复]

    这个问题在这里已经有答案了 可能的重复 调整下拉框中列表的高度 https stackoverflow com questions 5600646 adjust the height of the list in dropdown box
  • std::set 2D 点的自定义比较器

    我需要一个非重复的 2D 点列表 所以我使用std set具有自定义比较功能 我使用的函数在插入点后出现问题 因为有时std find找不到已经插入的点 const double tolerance 0 1 struct MyPoint2D