二分法在一个vector容器里面找某一个值,并求出该元素的下标

float COSGWellLog::GetPropertybyMD(float depth)
{
std::vector<float> vProperty = GetProperty();
std::vector<float> vMD = GetMD();
std::vector<float>::iterator it = std::lower_bound(m_vMD.begin(), m_vMD.end(), depth);
int index = std::distance(m_vMD.begin(), it);
 return  vProperty[index];

}

适用于两组值,有序 切元素个数相同的情况下  比如深度值和深度上的属性值 想根据深度值取属性值 原始方法是找一个map容器 求 把深度和属性一一对应以后 再根据深度取属性,方法不好,这里利用std的lower_bound()函数寻找深度值,然后利用distance函数得出深度值的下标 ,最后根据此下标得到对应的深度值,二分法效率高!


注意学习stL!effective STL


你可能感兴趣的:(二分法在一个vector容器里面找某一个值,并求出该元素的下标)