【发布时间】:2014-12-16 11:27:48
【问题描述】:
我需要创建std::map<cv::Point, double>。 cv::Point 是 OpenCV 库中的一种点。它有如下字段:x 和 y。
cv::Point 当然没有< 运算符。您知道如何定义它以对std::map 中的元素进行最佳访问吗?
换句话说。例如,我有 20000 点。我需要快速访问每个点。
例如:
std::map<cv::Point, double> myMap;
Point p(10, 234);
int value = 777;
myMap[p] = value; // I need this operation quite fast so I decided to use std::map
但是 cv::Point 没有 < 运算符。我可以准备< 这样的运算符(例如只比较x坐标):
bool operator<(const cv::Point a, const cv::Point b)
{
return a.x < a.x;
}
但我想这不是好的运营商。许多点具有相同的 x 值。
这种情况下如何准备高效算子?
【问题讨论】:
-
密钥需要可复制和可分配:stackoverflow.com/questions/6573225/…
-
@EdChum:这不是问题所在。
-
我在文档中找不到任何名为
cv::Point的类型。我只看到Point_,这是一个模板。 -
@peter55555 那么也许你应该澄清你到底遇到了什么问题。
-
订购了
std::map这个事实有什么用吗?std::unordered_map(或它的前身)会更合适吗?
标签: c++ algorithm opencv data-structures stl