c++ - 搜索具有下限和上限的 map <pair<int, int>, ...>

标签 c++ stl

我想知道查找以一对整数(坐标)作为键的 map 是否具有lower_bound 和upper_bound 的任何可用含义?

using Point = std::pair<int, int>;
std::map<Point, Vertex> vertex_map = {};

const auto p = std::make_pair(0, 0);
const auto q = std::make_pair(10, 10);

auto foo = vertex_map.lower_bound(p);
auto bar = vertex_map.upper_bound(q);
特别是,我想检查 map 是否包含由给定矩形(p,q)绑定(bind)的任何顶点。

最佳答案

不,我不认为这是可能的。您需要一个 comparator这样p < x && x < p如果xRectangle (p, q) 约束这个比较器必须定义一个 strict weak ordering
据我所知,这是不可能的。
以一种有效的方式解决这个问题的方法是保存两个列表:一个包含由 x 排序的点。组件和另一个具有 y 排序的点零件。

关于c++ - 搜索具有下限和上限的 map <pair<int, int>, ...>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64640365/

相关文章:

c++ - 使用什么数据结构来存储游戏对象的基于 2D 单元的 map ?

c++ - 分配内存然后释放是否构成 C++ 程序中的副作用?

c++ - 编写 C++ Dll 并将其高效地公开给 .NET(不通过 C++/CLI)

C++ 11 绑定(bind) std::function 与存储元组和解包

c++ - 谁负责删除?

C++ 从文本文件中读取字典并将其存储在排序容器中的最佳方法是什么

c++ - 使用 C++ 在 Linux 上进行 vector ODBC 配置

c++ - boost::shared_ptr 中没有名为 value_type 的类型

c++ - 为什么 "!="与迭代器一起使用而不是 "<"?

c++ - 在 O(logn) 时间内使用 STL 堆实现 Decrease Key