码迷,mamicode.com
首页 > 其他好文 > 详细

std::sort()

时间:2014-12-14 10:34:59      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   使用   sp   

原文地址:http://blog.csdn.net/factor2000/article/details/3936195 

 1 #include "stdafx.h" 
 2 #include <vector> 
 3 #include <algorithm> 
 4 #include <functional> 
 5 #include <iostream> 
 6 
 7 using namespace std; 
 8 
 9 //Return whether first element is greater than the second 
10 bool UDgreater(int elem1,int elem2) 
11 { 
12 return elem1 > elem2; 
13 } 
14 class Csort 
15 { 
16 public: 
17 //Return whether first element is less than the second 
18 bool operator () (int a,int b) const 
19 { 
20 return a<b; 
21 }; 
22 }; 
23 
24 int _tmain(int argc, _TCHAR* argv[]) 
25 { 
26 vector<int> v1; 
27 vector<int> ::iterator Iter1; 
28 int arr[12]; 
29 int i; 
30 for (i = 0;i<=5;i++) 
31 { 
32 v1.push_back(2*i); 
33 arr[i]= 2*i; 
34 } 
35 for (i = 6;i<=11;i++) 
36 { 
37 arr[i] = 23 - 2*i; 
38 } 
39 
40 int ii; 
41 for (ii = 0; ii<=5;ii++) 
42 { 
43 v1.push_back(2 * ii + 1); 
44 } 
45 cout <<"Original vector v1 = ("; 
46 for(Iter1 = v1.begin();Iter1 != v1.end();Iter1++) 
47 cout << *Iter1<<","; 
48 cout<<")"<< endl; 
49 cout <<"Original array arr = ("; 
50 for (int n = 0;n<12;n++) 
51 cout << arr[n]<<","; 
52 cout << ")"<< endl; 
53 
54 //std::sort 默认排序方式 
55 sort(v1.begin(),v1.end()); 
56 cout<<"Sorted vector v1 = ("; 
57 for(Iter1 = v1.begin();Iter1 != v1.end();Iter1++) 
58 cout << *Iter1 <<","; 
59 cout<<")"<<endl; 
60 
61 
62 //使用自定义函数给数组排序,第三个参数为函数指针UDgreater 
63 //第二个自定义参数为数据最大地址的后一位指针&arr[12]; 
64 sort(&arr[0],&arr[12],UDgreater); 
65 
66 cout<<"Resorted(UDgreater) array arr = ("; 
67 for(int n =0;n<12;n++) 
68 cout << arr[n]<<","; 
69 cout << ")"<<endl; 
70 
71 //使用<functional>库中 greater<int>()给向量v1排序; 
72 sort(v1.begin(),v1.end(),greater<int>()); 
73 //sort(v1.begin(),v1.end().Csort()); 
74 
75 cout << "Resorted (greater) vector v1 = ("; 
76 for(Iter1 = v1.begin();Iter1 != v1.end();Iter1++) 
77 cout << *Iter1 <<","; 
78 cout << ")" << endl; 
79 
80 //A user - defined (UD) binary predicate can also be used 
81 //sort (v1.begin(),v1.end(),UDgreater); 
82 sort(v1.begin(),v1.end(),Csort()); 
83 cout << "Resorted (Csort) vector v1 = ("; 
84 for(Iter1 = v1.begin();Iter1!= v1.end();Iter1++) 
85 cout << *Iter1 << ","; 
86 cout << ")" <<endl; 
87 
88 system("Pause"); 
89 //getchar(); 
90 return 0; 
91 } 
std::sort(vec.begin(),vec.end(),Func);
error C2780: “void std::sort(_RanIt,_RanIt)”: 应输入 2 个参数,却提供了 3 个
解决方案:Func是一个class的成员函数,在class其定义处将其改为静态函数即可。	 
	  如 static bool Func(const Type& t1,const Type& t2);

std::sort()

标签:style   blog   http   io   ar   color   os   使用   sp   

原文地址:http://www.cnblogs.com/nightcatcher/p/4162252.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!