如何在排序向量中找到下界 我对C++很陌生,不理解STL库的所有概念,所以请耐心等待。 我编写了以下代码片段(粘贴在下面)来查找排序向量中的下界。 尽管这段代码在发布模式下运行良好,但它在调试模式(VStudio-8)下断言。 我认为这是因为less_equal不是严格的弱序
从以下线程: 我确实理解STL强加了弱排序,但我仍然不太清楚为什么 在下面的例子中,我需要使用如何在排序向量中找到下界 我对C++很陌生,不理解STL库的所有概念,所以请耐心等待。 我编写了以下代码片段(粘贴在下面)来查找排序向量中的下界。 尽管这段代码在发布模式下运行良好,但它在调试模式(VStudio-8)下断言。 我认为这是因为less_equal不是严格的弱序,c++,lower-bound,C++,Lower Bound,从以下线程: 我确实理解STL强加了弱排序,但我仍然不太清楚为什么 在下面的例子中,我需要使用less_equal,因为我试图在排序向量中找到与给定值最近的元素 下面的代码片段是否有效?还有,有更好的方法吗?此外,任何关于弱序和偏序的见解/参考都会有所帮助 int main() { vector<int> dest; for(int i = 0;i <6;i++) { dest.push_back(i); } vector<int>:
less_equal
,因为我试图在排序向量中找到与给定值最近的元素
下面的代码片段是否有效?还有,有更好的方法吗?此外,任何关于弱序和偏序的见解/参考都会有所帮助
int main() {
vector<int> dest;
for(int i = 0;i <6;i++) {
dest.push_back(i);
}
vector<int>::iterator i =
std::lower_bound(dest.begin(),dest.end(),4,less_equal< int >());
return 1;
}
intmain(){
向量dest;
对于(inti=0;i());
返回1;
}
STL使用严格弱排序,因为给定一个SWE(让我们将其表示为y iff y
至于您试图解决的问题,如果您希望值尽可能接近目标值,您确实不需要在此处使用
less_equal
,而是使用lower_bound
来获得一个迭代器,该迭代器指向比您要查找的值大的最小元素(使用默认的谢谢,现在对我来说更有意义了,正如你提到的,我没有理由坚持使用less_equal:)
x < y iff x < y
x <= y iff !(y < x)
x == y iff !(x < y || y < x)
x != y iff (x < y || y < x)
x >= y iff !(x < y)
x > y iff y < x