C++ STL multiset中,lower_bound的区间到底是什么意思?
multiset<Person>::iteratorib,ie;ib=mp.lower_bound(Person("王臣彬",21));ie=mp.upper_bound...
multiset<Person>::iterator ib, ie;
ib = mp.lower_bound(Person("王臣彬",21));
ie = mp.upper_bound(Person("王臣彬",21));
他说.lower跟upper得到了一个区间,但你把这个++ib输出时,就得到了所有王臣彬这个元素。
但是你是一个区间啊,你++难道就没有中间那些不同元素?
所谓的lower跟upper得到一个区间,这种说法根本不合理吧?
到底正确的说法是什么? 展开
ib = mp.lower_bound(Person("王臣彬",21));
ie = mp.upper_bound(Person("王臣彬",21));
他说.lower跟upper得到了一个区间,但你把这个++ib输出时,就得到了所有王臣彬这个元素。
但是你是一个区间啊,你++难道就没有中间那些不同元素?
所谓的lower跟upper得到一个区间,这种说法根本不合理吧?
到底正确的说法是什么? 展开
3个回答
展开全部
lower_bound 第一个>=的元素
upper_bound 第一个>的元素
所以中间的就是==的元素
upper_bound 第一个>的元素
所以中间的就是==的元素
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
函数介绍
lower_bound()返回一个 iterator 它指向在[first,last)标记的有序序列中可以插入value,而不会破坏容器顺序的第一个位置,而这个位置标记了一个不小于value 的值。
例如,有如下序列:
ia[]={12,15,17,19,20,22,23,26,29,35,40,51};
用值21调用lower_bound(),返回一个指向22的iterator。用值22调用lower_bound(),也返回一个指向22的iterator。第一个版本使用底层的 < (小于)操作符,第二个版本根据comp进行排序和比较。
注意事项
调用lower_bound之前必须确定序列为有序序列,否则调用出错。第一个版本排序根据底层的 <(小于)操作符,第二个版本根据comp进行排序。
lower_bound()返回一个 iterator 它指向在[first,last)标记的有序序列中可以插入value,而不会破坏容器顺序的第一个位置,而这个位置标记了一个不小于value 的值。
例如,有如下序列:
ia[]={12,15,17,19,20,22,23,26,29,35,40,51};
用值21调用lower_bound(),返回一个指向22的iterator。用值22调用lower_bound(),也返回一个指向22的iterator。第一个版本使用底层的 < (小于)操作符,第二个版本根据comp进行排序和比较。
注意事项
调用lower_bound之前必须确定序列为有序序列,否则调用出错。第一个版本排序根据底层的 <(小于)操作符,第二个版本根据comp进行排序。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询