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];
{
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