Q
C++键值关系
0
A
回答
2
您可能想要使用std::set
作为存储。你需要/需要一个比较函数来考虑坐标(距离直接从它们派生出来,所以你不需要比较它)。
编辑:根据评论,涉及大量的点,std::unordered_set
可能是一个更好的选择。它可能会更多的工作,但允许插入和搜索复杂性,你通常希望是恒定的。
2
用适当的散列表示该std::unordered_set
。
1
编辑:问题改变了,纬度/经度消失了,有些事情已经澄清。我开始了:
你的问题似乎意味着距离计算不仅仅是一个简单的std :: abs(X-Y),因为根本没有意义存储结果来加快速度。我假设你有一个昂贵的函数计算它,让我们说:
int distance(int X, int Y) { /* heavy stuff */ }
现在,你需要决定是否要调用它,或者如果你已经做了这一点,你可以重复使用的结果。你需要一个容器来保存结果和功能使用:
typedef std::pair< int, int > key;
std::map< key, int > values;
int quick_distance(int X, int Y)
{
const auto k = key(X,Y);
const auto it = values.find(k);
if(it != values.end()) return it->second;
const auto d = distance(X,Y);
values[k] = d;
return d;
}
0
看一看的std ::对,他们是为这个目的而创建的,你可以使用与这种关联容器的改进数据结构。
我前段时间用数据对图形串行数据从microcontrolers,检查在https://github.com/jpcordovae/GLRealTimeGraphics/blob/master/DataPair.hpp,也许它会帮助你写的东西。
问候!
JP Cordova E.
相关问题
- 1. 外键关系
- 2. MSSQL外键关系和空值
- 3. jpa-主键关系
- 4. SQL外键关系
- 5. c#字典从关键字选择值
- 6. 创建在C++的关键值对
- 7. c#关键字
- 8. Objective-C这个类不是关键值findContact的关键值编码。
- 9. C#DATASET关系
- 10. 非关系型数据库,关键值或平坦表
- 11. Rails中的外键关系
- 12. 基数和外键关系
- 13. 关系(外键)CakePHP的
- 14. @OneToMany关系复合键
- 15. 聚集主键和关系
- 16. 多对多关系键
- 17. 生成关系单个键
- 18. 钥匙和外键关系
- 19. 外键,关系问题
- 20. Mysql表关系/外键?
- 21. 加入由主键和外键关系
- 22. 创建主键和外键关系
- 23. Emacs:键盘和键之间的关系
- 24. 一对一的关系Visual Studio 2010的关键和非关键
- 25. Objective-C与C#的yield关键字是否有任何的平行关系
- 26. c#Linq关键字?
- 27. Laravel雄辩的关系'与'关键字
- 28. ERM:关系的关键属性
- 29. Laravel集:只返回的关系,关键
- 30. MySQL外键关系vs mysql_insert_id关联表
什么是?请给更多的背景 – tlehman 2013-02-28 23:17:21
他意味着关键,价值的关系。我有一个待处理的标题编辑为 – 2013-02-28 23:18:08
您的列表有多大?你怎么访问它很多?你可以在vector中使用2 int/float/double的类/结构体。如果你没有很多点迭代只使用矢量,那么地图将更快地查找。哈希映射甚至更快。所以请告诉我们更多的细节 – Gilad 2013-02-28 23:21:31