vector排序

 1 // VectorSort.cpp : Defines the entry point for the console application.
 2 //
 3 
 4 #include "stdafx.h"
 5 #include <iostream>
 6 #include <vector>
 7 #include <algorithm>
 8 
 9 //先自定义一个结构体
10 struct Test {
11     int member1;
12     int member2;
13 };
14 
15 //自定义排序函数
16 bool SortByM1( const Test &v1, const Test &v2)//注意:本函数的参数的类型一定要与vector中元素的类型一致
17 {
18     return v1.member1 < v2.member1;//升序排列
19 }
20 
21 void MyPushback(std::vector<Test> & vecTest, const int &m1, const int &m2)
22 {
23     Test test;
24     test.member1 = m1;
25     test.member2 = m2;
26     vecTest.push_back(test);
27 }
28 
29 void PrintVector( std::vector<Test> & vec)
30 {
31     /*
32         插一句,
33         vec.begin()对应的位置是向量的第一个位置,
34         vec.end()对应的是vector中的最后的一个元素位置的后面的一个位置(我认为,实际上是一个无效位置)
35         文档上的定义:Returns an iterator referring to the past-the-end element in the vector container.
36     */
37     for(std::vector<Test>::iterator it = vec.begin() ; it != vec.end() ; it++ )
38     {
39         std::cout<<it->member1<<'	'<<it->member2<<std::endl;
40     }
41 }
42 
43 int _tmain(int argc, _TCHAR* argv[])
44 {
45     std::vector<Test> vecTest;
46     MyPushback(vecTest,9,1);
47     MyPushback(vecTest,8,2);
48     MyPushback(vecTest,7,3);
49     MyPushback(vecTest,6,4);
50     MyPushback(vecTest,5,5);
51     MyPushback(vecTest,4,6);
52     MyPushback(vecTest,3,7);
53     MyPushback(vecTest,2,8);
54     MyPushback(vecTest,1,9);
55     //排序之前
56     std::cout<<"Before Sort:"<<std::endl;
57     PrintVector(vecTest);
58 
59     std::cout<<"对向量中的所有元素按member1进行升序排列:"<<std::endl;
60     std::sort(vecTest.begin(),vecTest.end(),SortByM1);
61     PrintVector(vecTest);
62 
63     //std::cout<<"对向量中的第2个到第5个元素按member1进行升序排列:"<<std::endl;
64     //std::sort(vecTest.begin()+1,vecTest.begin()+5,SortByM1);//vecTest.begin()+5为第6个位置
65     //PrintVector(vecTest);
66 
67     return 0;
68 }
原文地址:https://www.cnblogs.com/lhwblog/p/6476482.html