从给定的未排序向量中获取帧索引的更快方法?

时间:2016-12-10 15:11:08

标签: c++ algorithm performance optimization c++98

我正在寻找一种让这项功能更快的方法。我为自己做了这个,所以想到可能是一个更好的解决方案。我使用的是c ++ 98 ...

基本上它从给定的帧向量返回给定currentFrame的索引,但有一些例外。

关键是,向量是未排序的,如果当前帧不存在于向量中,那么它应该从左边(MIN)给出最近的帧索引。如果左边的那个也丢失了,那么右边的(MAX)就丢失了。

int getFrameIndex(double currentFrame, std::vector<double> frames)
{
    int f_index = 0;
    if (frames.size() > 1)
    {   
        int nearFIndex = INT_MIN;
        int minFIndex = INT_MAX;
        std::vector<double>::iterator it;
        for(it = frames.begin(); it != frames.end(); ++it)
        {
            if (currentFrame == *it)
            {
                f_index = static_cast<int>(it - frames.begin());
                break;
            }
            else if (currentFrame > *it && nearFIndex < *it)
            {
                nearFIndex = static_cast<int>(*it);
                f_index = static_cast<int>(it - frames.begin());
                continue;
            }
            else if (*it < minFIndex && nearFIndex == INT_MIN)
            {
                minFIndex = static_cast<int>(*it);
                f_index = static_cast<int>(it - frames.begin());
            }
        }
    }
    return f_index;
}

0 个答案:

没有答案