提振.多索引空间操作
Boost.MultiIndex spatial operations
我需要一个应用程序的空间地图。我找到了Boost.MultiIndex.
我遵循了它的教程,了解了如何创建一个类型:
typedef boost::multi_index_container<MapNode,
indexed_by<
ordered_non_unique<member<MapNode, int, &MapNode::X>>,
ordered_non_unique<member<MapNode, int, &MapNode::Y>>
>
> Map_T;
和如何插入:
Map.insert(Node);
如何根据其x
和y
坐标检索值?我怎么检查这里是否有值呢?
首先,您不需要boost::multi_index来解决这个问题。简单地重载operator
使用boost::multi_index只有一个原因:如果需要不同的访问方法。例如,如果您想要一个额外的"视图",其中节点首先按y排序,然后又按x排序。然而,multi_index的成员方法(如上面的代码)不是一个好主意。使用identity两次,但提供两个不同的比较函数。详细信息可以在boost文档中找到。
最后,所有这些方法可能都不是最好的——这取决于您的应用程序。例如,Berg等人在《计算几何》一书中描述了专门的数据结构。不幸的是,我不知道这些算法的任何自由实现…
相关文章:
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 命名空间中具有.h和.cpp文件的类
- 从父命名空间重载类型
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- 在命名空间中定义函数还是限定函数
- 重载操作程序时出错>>用于类中的字符串 memebr
- C++:对不存在的命名空间使用命名空间指令
- 通过继承类使用来自不同命名空间的运算符
- 对字符串进行位操作
- 使用命名空间时出现多个定义错误
- OpenGL相机和相机空间转型的困惑
- 无法对套接字执行操作,因为系统缺少足够的缓冲区空间或队列已满
- 如何使用C 其他名称空间中定义的操作
- 提振.多索引空间操作
- 命名空间类的操作重载
- 用于操作终端空间的库
- 如何在C/C++中使用stdio文件操作时检测磁盘空间不足
- 寻找一个好的3D空间矢量类,具有点积,叉积和其他常见操作
- 操作系统——c++被设计成在单个地址空间内操作