![](/img/trans.png)
[英]When getting rid of modulo bias how does min = -upper_bound % upper_bound; // work?
[英]How does upper_bound work with custom object type val?
我目前正在 c++ 中学习 upper_bound 算法,如果第三个参数 val 的类型为 Integer,事情就很容易了。但是,我遇到了一个自定义类型 val 的例子,事情变得有点混乱。 示例代码。
class Pocket
{
public:
int value;
Pocket(int value) : value(value) {};
bool operator < (const Pocket& right) const
{
return value < right.value;
}
int getValue() const
{
return value;
}
};
bool Compare(const Pocket &left, const Pocket &right)
{
return int (left.getValue() > right.getValue());
}
void main()
{
int a[] = { 3, 9, 2, 4, 4 };
std::deque<Pocket> d(a, a + 5);
std::sort(d.begin(), d.end(), Compare);
std::deque<Pocket>::iterator it = std::upper_bound(d.begin(), d.end(), Pocket(2));
}
生成的迭代器将指向值为 9 的元素。如何?
您的程序有未定义的行为。 您传递给上限的范围必须按<
排序(对于三参数重载)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.