使用std::upper_bound检索矢量的索引,索引超出范围



我正试图使用std::upper_bound根据向量的值检索向量的索引。不过,出于某种原因,下面的代码将tmpKey设置为等于2,而不是我期望的1值。有没有什么明显的错误?

int main()
{
float time = 30.0000000;
std::vector<float> positionKeyTimes = { 0.000000000, 30.0000000 };
auto it = std::upper_bound(positionKeyTimes.begin(), positionKeyTimes.end(), time);
auto tmpKey = (size_t)(it - positionKeyTimes.begin());
std::cout << tmpKey << "n";
std::cin.get();
}

std::upper_bound

返回一个迭代器,该迭代器指向范围[first,last(中的第一个元素,该元素大于值,如果未找到此类元素,则返回last。

向量中没有大于30的元素,因此返回结束迭代器。

为了得到你的期望值,你可以使用std::lower_bound,哪个

返回一个迭代器,该迭代器指向范围[first,last(中的第一个元素,该元素不小于(即大于或等于(值,如果找不到此类元素,则返回last。

记住

必须根据表达式元素<value或comp(element,value(对范围[first,last(进行分区,即表达式为true的所有元素必须位于表达式为false的所有元素之前。完全排序的范围符合此标准。

相关内容

  • 没有找到相关文章

最新更新