设为首页 加入收藏

TOP

G.5.3 排序和相关操作(3)
2013-10-07 15:50:27 来源: 作者: 【 】 浏览:66
Tags:G.5.3 排序 相关 操作

G.5.3  排序和相关操作(3)

(6)is_sorted_until(C++(www.cppentry.com)11)

 

如果区间[first, last]包含的元素少于两个,函数is_sorted_until将返回last;否则将返回迭代器it,确保区间[first, it]是经过排序的。第一个版本使用<来确定顺序,而第二个版本使用比较对象comp。

(7)nth_element( )

 

nth_element( )函数找到将[first, last)区间排序后的第n个元素,并将该元素置于第n个位置。第一个版本使用<来确定顺序,而第二个版本使用比较对象comp。

2.二分法搜索

二分法搜索组中的算法假设区间是经过排序的。这些算法只要求正向迭代器,但使用随机迭代器时,效率最高。

(1)lower_bound( )

 

lower_bound( )函数在排序后的区间[first, last)中找到第一个这样的位置,即将value插入到它前面时不会破坏顺序。它返回一个指向这个位置的迭代器。第一个版本使用<来确定顺序,而第二个版本使用比较对象comp。

(2)upper_bound( )

 

upper_bound( )函数在排序后的区间[first, last)中找到最后一个这样的位置,即将value插入到它前面时不会破坏顺序。它返回一个指向这个位置的迭代器。第一个版本使用<来确定顺序,而第二个版本使用比较对象comp。

(3)equal_range( )

 

equal_range( )函数在排序后的区间[first, last)区间中找到这样一个最大的子区间[it1, it2),即将value插入到该区间的任何位置都不会破坏顺序。该函数返回一个由it1和it2组成的pair。第一个版本使用<来确定顺序,第二个版本使用比较对象comp。

(4)binary_search( )

 

如果在排序后的区间[first, last]中找到与value等价的值,则binary_search( )函数返回true,否则返回false。第一个版本使用<来确定顺序,而第二个版本使用比较对象comp。

注意:前面说过,使用<进行排序时,如果a<b和b<a都为false,则a和b等价。对于常规数字来说,等价意味着相等;但对于只根据一个成员进行排序的结构来说,情况并非如此。因此,在确保顺序不被破坏的情况下,可插入新值的位置可能不止一个。同样,如果使用比较对象comp进行排序,等价意味着comp(a, b)和comp(b,a)都为false(这是"如果a不小于b,b也不小于a,则a与b等价"的统称)。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇G.5.3 排序和相关操作(4) 下一篇G.5.3 排序和相关操作(2)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·常用meta整理 | 菜鸟 (2025-12-25 01:21:52)
·SQL HAVING 子句:深 (2025-12-25 01:21:47)
·SQL CREATE INDEX 语 (2025-12-25 01:21:45)
·Shell 传递参数 (2025-12-25 00:50:45)
·Linux echo 命令 - (2025-12-25 00:50:43)