STL algorithm算法is_sorted和is_sorted_until(28)

is_sort的原型:

::is_sorted

default (1)
template 
  bool is_sorted (ForwardIterator first, ForwardIterator last);
custom (2)
template 
  bool is_sorted (ForwardIterator first, ForwardIterator last, Compare comp);
该函数是测试范围内的元素是否已经有序!

使用operator<或者comp来进行比较。

如果范围内的元素个数少于两个,总是返回true.

其行为类似如下:

1
2
3
4
5
6
7
8
9
10
11
12
template 
  bool is_sorted (ForwardIterator first, ForwardIterator last)
{
  if (first==last) return true;
  ForwardIterator next = first;
  while (++next!=last) {
    if (*next<*first)     // or, if (comp(*next,*first)) for version (2)
      return false;
    ++first;
  }
  return true;
}
一个简单的测试例子:

#include 
#include 
#include 
using namespace std;
int main(int argv,char **argc)
{
	vector v1{1,2,3,4};
	vector v2{4.0,5.0,3.5,6.0};
	
	cout<<"v1=";
	for(int i:v1)
		cout<
运行结果:

STL algorithm算法is_sorted和is_sorted_until(28)_第1张图片




is_sorted_until原型:

std::is_sorted_until

default (1)
template 
  ForwardIterator is_sorted_until (ForwardIterator first, ForwardIterator last);
custom (2)
template 
  ForwardIterator is_sorted_until (ForwardIterator first, ForwardIterator last,
                                   Compare comp);
该函数类似与is_heap和is_heap_until的关系。

返回第一个破坏序列有序的元素迭代器。

使用operator<或者comp来进行比较。

其行为类似与:
2
3
4
5
6
7
8
9
10
11
template 
  ForwardIterator is_sorted_until (ForwardIterator first, ForwardIterator last)
{
  if (first==last) return first;
  ForwardIterator next = first;
  while (++next!=last) {
    if (*next<*first) return next;
    ++first;
  }
  return last;
}

一个简单的例子:

#include 
#include 
#include 
using namespace std;
int main(int argv,char **argc)
{
	vector v1{1,2,3,4,5};
	vector v2{4.0,5.0,3.5,6.0,1.0};
	
	cout<<"v1=";
	for(int i:v1)
		cout<
运行截图:

STL algorithm算法is_sorted和is_sorted_until(28)_第2张图片
通过对比源代码可以知道,第一个返回的是v1.end(),第二个返回的则是3.5!


——————————————————————————————————————————————————————————————————

//写的错误或者不好的地方请多多指导,可以在下面留言或者点击左上方邮件地址给我发邮件,指出我的错误以及不足,以便我修改,更好的分享给大家,谢谢。

转载请注明出处:http://blog.csdn.net/qq844352155

author:天下无双

Email:[email protected]

2014-9-17

于GDUT

——————————————————————————————————————————————————————————————————










你可能感兴趣的:(STL,算法,STL,算法,algorithm,stl,算法,c++11)