gpt4 book ai didi

c++ - 无法将 std::lower_bound 返回值分配给 vector::iterator

转载 作者:太空宇宙 更新时间:2023-11-04 12:40:27 30 4
gpt4 key购买 nike

传入函数:const std::vector &xv:

std::vector<float>::iterator lowBound = lower_bound(xv.begin(), xv.end(), x);

在我更改 std::vector<float>& 之前该功能运行良好到 const std::vector<float>&

Lower_bound在编译时返回语法错误说:

no suitable user-defined conversion from "__gnu_cxx::__normal_iterator<const float *, std::vector<float, std::allocator<float>>>" to "__gnu_cxx::__normal_iterator<float *, std::vector<float, std::allocator<float>>>" exists
std::vector<...>::const_iterator std::lower_bound<std::vector<float, std::allocator<float>>::const_iterator, float>(std::vector<...>::const_iterator __first, std::vector<...>::const_iterator __last, const float &__val)

我试过改变 std::vector<float>::iteratorconst std::vector<float>::iterator也试过std::vector<const float>::iterator .

这些选项似乎都不起作用。

很抱歉给您带来麻烦,我尝试用谷歌搜索错误但无法得出答案。

最佳答案

lower_bound 返回一个 const_iterator。你需要

std::vector<float>::const_iterator lowBound = lower_bound(xv.begin(), xv.end(), x);

或简单地 (C++11)

auto lowBound = lower_bound(xv.begin(), xv.end(), x);

Demo

关于c++ - 无法将 std::lower_bound 返回值分配给 vector::iterator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54453059/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com