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 }