【发布时间】:2010-12-11 13:43:37
【问题描述】:
我正在尝试找出最佳方法来搜索“Tracklet”类型的向量(我自己构建的一个类),以查找其中一个变量的给定值的第一次和最后一次出现。例如,我有以下类(本例已简化):
class Tracklet {
TimePoint *start;
TimePoint *end;
int angle;
public:
Tracklet(CvPoint*, CvPoint*, int, int);
}
class TimePoint {
int x, y, t;
public:
TimePoint(int, int, int);
TimePoint(CvPoint*, int);
// Relevant getters and setters exist here
};
我有一个向量“vector<Tracklet> tracklets”,我需要在结束时间点搜索具有给定值“t”的任何轨迹。该向量按结束时间排序(即tracklet.end->t)。
我很乐意编写一个搜索算法,但不确定该采用哪条路径。我不确定二进制搜索是否合适,因为我似乎记得它不一定会找到第一个。我正在考虑一种方法,我使用二进制搜索来查找具有正确时间的元素的索引,然后迭代返回以找到第一个并转发以找到最后一个。我确信有比这更好的方法,因为它通过迭代浪费了二进制搜索 O(log n)。
希望这是有道理的:我很难解释一下! 干杯!
【问题讨论】:
标签: c++ search class vector opencv