有关set和lower_bound()的知识

回复帖子

@hunxuewangzi 2020-03-26 19:13 回复

代码如下

set<int> pos;
ans=*lower_bound(pos.begin(),pos.end(),x);

在set里面找大于等于x的最小值。

不知道为什么报错,对set操作不太熟悉,希望有人能指

出哪里错了。为什么错,该怎么写。

谢谢了

@hunxuewangzi 2020-03-26 19:31 回复 举报

那查找大于等于x的元素小于等于y的元素

为什么不直接

s.upper_bound(y)-s.lower_bound(x)

比较疑惑??我还是蒟蒻啊

@Alpha  2020-03-26 19:32 回复 举报

@hunxuewangzi 忘了说了,s.lower_bound(x)在找不到时会返回s.end(),这是一个不存在的迭代器,需要特判才可以解除引用。

@Alpha  2020-03-26 19:33 回复 举报

@hunxuewangzi 别听Marser的,迭代器有些是可以相减的

迭代器分两种,随机访问迭代器和双向迭代器,其中随机访问迭代器可以相减,双向迭代器不行。

反馈
如果你认为某个帖子有问题,欢迎向洛谷反馈,以帮助更多的同学。



请具体说明理由,以增加反馈的可信度。