STL:划分与排序--3

 

#include <iostream>//std::cout
#include<iomanip>//输入输出格式化
#include<functional>//函数对象
#include<algorithm>//算法
#include<cmath>//数学函数
#include<string>//String
#include<cstring>//memset
#include<vector>//vector
using namespace std;


bool myOperation(int a,int b) {
	return a<b;
}
struct obj {
	bool operator() (int a,int b) {
		return a<b;
	}
} myobject;
int main(int argc,char** argv) {

	vector<int> myVector;
	for(int i=1; i<10; i++) {
		myVector.push_back(i);
	}

	vector<int>myCopy(5);

	//output the elements in the vector
	random_shuffle(myVector.begin(),myVector.end());

//  for(vector<int>::iterator iter=myVector.begin(); iter!=myVector.end(); iter++) {
//		cout<<*iter<<" ";
//	}
//cout<<endl;

	//using default comparison
//	sort(myVector.begin(),myVector.end());
//	stable_sort(myVector.begin(),myVector.end());

//	partial_sort(myVector.begin(),myVector.begin()+5,myVector.end());
	partial_sort_copy(myVector.begin(),myVector.end(),myCopy.begin(),myCopy.end());

	for(vector<int>::iterator iter=myVector.begin(); iter!=myVector.end(); iter++) {
		cout<<*iter<<" ";
	}
	cout<<endl;

	for(vector<int>::iterator iter=myCopy.begin(); iter!=myCopy.end(); iter++) {
		cout<<*iter<<" ";
	}
	cout<<endl;

	//using function as comp
	random_shuffle(myVector.begin(),myVector.end());
//  for(vector<int>::iterator iter=myVector.begin(); iter!=myVector.end(); iter++) {
//		cout<<*iter<<" ";
//	}
//cout<<endl;

//	sort(myVector.begin(),myVector.end(),myOperation);
//	stable_sort(myVector.begin(),myVector.end(),myOperation);

//	partial_sort(myVector.begin(),myVector.begin()+5,myVector.end(),myOperation);
	partial_sort_copy(myVector.begin(),myVector.end(),myCopy.begin(),myCopy.end(),myOperation);

	for(vector<int>::iterator iter=myVector.begin(); iter!=myVector.end(); iter++) {
		cout<<*iter<<" ";
	}
	cout<<endl;


	for(vector<int>::iterator iter=myCopy.begin(); iter!=myCopy.end(); iter++) {
		cout<<*iter<<" ";
	}
	cout<<endl;

	//using object as comp
	random_shuffle(myVector.begin(),myVector.end());
//  for(vector<int>::iterator iter=myVector.begin(); iter!=myVector.end(); iter++) {
//		cout<<*iter<<" ";
//	}
//cout<<endl;

//	sort(myVector.begin(),myVector.end(),myobject);
//	stable_sort(myVector.begin(),myVector.end(),myobject);

//	partial_sort(myVector.begin(),myVector.begin()+5,myVector.end(),myobject);
	partial_sort_copy(myVector.begin(),myVector.end(),myCopy.begin(),myCopy.end(),myobject);

	for(vector<int>::iterator iter=myVector.begin(); iter!=myVector.end(); iter++) {
		cout<<*iter<<" ";
	}
	cout<<endl;

	for(vector<int>::iterator iter=myCopy.begin(); iter!=myCopy.end(); iter++) {
		cout<<*iter<<" ";
	}
	cout<<endl;

	//using  function object as comp
	random_shuffle(myVector.begin(),myVector.end());
//  for(vector<int>::iterator iter=myVector.begin(); iter!=myVector.end(); iter++) {
//		cout<<*iter<<" ";
//	}
//cout<<endl;

//	sort(myVector.begin(),myVector.end(),less<int>());
//	stable_sort(myVector.begin(),myVector.end(),less<int>());

//	partial_sort(myVector.begin(),myVector.begin()+5,myVector.end(),less<int>());
	partial_sort_copy(myVector.begin(),myVector.end(),myCopy.begin(),myCopy.end(),less<int>());

	for(vector<int>::iterator iter=myVector.begin(); iter!=myVector.end(); iter++) {
		cout<<*iter<<" ";
	}
	cout<<endl;

	for(vector<int>::iterator iter=myCopy.begin(); iter!=myCopy.end(); iter++) {
		cout<<*iter<<" ";
	}
	cout<<endl;
	return 0;
}


 

partial_sort

default (1)	
template <class RandomAccessIterator>
  void partial_sort (RandomAccessIterator first, RandomAccessIterator middle,
                     RandomAccessIterator last);
custom (2)	
template <class RandomAccessIterator, class Compare>
  void partial_sort (RandomAccessIterator first, RandomAccessIterator middle,
                     RandomAccessIterator last, Compare comp);

功能:对mid所指位置之前的元素进行排列

参数:

返回值:空

运行结果:

partial_sort_copy

default (1)	
template <class InputIterator, class RandomAccessIterator>
  RandomAccessIterator
    partial_sort_copy (InputIterator first,InputIterator last,
                       RandomAccessIterator result_first,
                       RandomAccessIterator result_last);
custom (2)	
template <class InputIterator, class RandomAccessIterator, class Compare>
  RandomAccessIterator
    partial_sort_copy (InputIterator first,InputIterator last,
                       RandomAccessIterator result_first,
                       RandomAccessIterator result_last, Compare comp);

功能:不改变原来的元素序列,[result_first,result_last)中的元素是[first,last)中局部有序的元素序列(所以一般result中的长度小于原序列)

参数:

返回值:返回复制数据的迭代器。

运行结果:

sort

功能:元素的排序

运行结果:

stable_sort

功能:元素的稳定排序

运行结果:(这里未出现重复元素,所以不能体现其稳定性)

发布了53 篇原创文章 · 获赞 3 · 访问量 3496

猜你喜欢

转载自blog.csdn.net/sinat_38292108/article/details/103785481