C++标准库 std::sort vector排序
来源:互联网 发布:如何打造淘宝店铺爆款 编辑:程序博客网 时间:2024/06/05 10:11
前天要做一个对C++ STL的vector容器做一个排序操作,之前一直把vector当做一个容量可自动变化的数组,是的,数组,所以打算按照对数组进行排序的方法:用快速排序或是冒泡排序等算法自己写一个排序的函数。后来觉得STL这么强大,应该有它自己的排序方法(没有好好学习啊),然后就去google了一下,果然有,而且可以自定义排序的函数,太强大了(而且效率应该比我自己写的要好吧)。
- // VectorSort.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- #include <iostream>
- #include <vector>
- #include <algorithm>
- //先自定义一个结构体
- struct Test {
- int member1;
- int member2;
- };
- //自定义排序函数
- bool SortByM1( const Test &v1, const Test &v2)//注意:本函数的参数的类型一定要与vector中元素的类型一致
- {
- return v1.member1 < v2.member1;//升序排列
- }
- void MyPushback(std::vector<Test> & vecTest, const int &m1, const int &m2)
- {
- Test test;
- test.member1 = m1;
- test.member2 = m2;
- vecTest.push_back(test);
- }
- void PrintVector( std::vector<Test> & vec)
- {
- /*
- 插一句,
- vec.begin()对应的位置是向量的第一个位置,
- vec.end()对应的是vector中的最后的一个元素位置的后面的一个位置(我认为,实际上是一个无效位置)
- 文档上的定义:Returns an iterator referring to the past-the-end element in the vector container.
- */
- for(std::vector<Test>::iterator it = vec.begin() ; it != vec.end() ; it++ )
- {
- std::cout<<it->member1<<'\t'<<it->member2<<std::endl;
- }
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- std::vector<Test> vecTest;
- MyPushback(vecTest,9,1);
- MyPushback(vecTest,8,2);
- MyPushback(vecTest,7,3);
- MyPushback(vecTest,6,4);
- MyPushback(vecTest,5,5);
- MyPushback(vecTest,4,6);
- MyPushback(vecTest,3,7);
- MyPushback(vecTest,2,8);
- MyPushback(vecTest,1,9);
- //排序之前
- std::cout<<"Before Sort:"<<std::endl;
- PrintVector(vecTest);
- std::cout<<"对向量中的所有元素按member1进行升序排列:"<<std::endl;
- std::sort(vecTest.begin(),vecTest.end(),SortByM1);
- PrintVector(vecTest);
- //std::cout<<"对向量中的第2个到第5个元素按member1进行升序排列:"<<std::endl;
- //std::sort(vecTest.begin()+1,vecTest.begin()+5,SortByM1);//vecTest.begin()+5为第6个位置
- //PrintVector(vecTest);
- return 0;
- }
0 0
- C++标准库 std::sort vector排序
- std list/vector sort 排序
- [C/C++标准库]_[初级]_[使用std::sort排序各种类型数据]
- [C/C++标准库]_[初级]_[std::deque和std::vector比较]
- std list/vector sort 排序就这么简单
- std list/vector sort 排序就这么简单
- std list/vector sort 排序就这么简单
- std list/vector sort 排序就这么简单
- std list/vector sort 自定义类的排序
- C++标准库 std::list 与 std::vector性能对比
- [C/C++标准库]_[初级]_[std::vector的删除元素]
- [C/C++标准库]_[初级]_[std::vector的多线程读写问题]
- std::vector sort containing classes
- std::sort 排序使用方法
- std::sort 排序
- std::sort 排序使用方法
- std::sort数组排序
- std::sort排序算法
- DELPHI中自定义消息的发送和接收
- Spring注解@Component、@Repository、@Service、@Controller区别
- OpenWrt配置绿联的usb转Ethernet网口驱动
- HBase - Rowkey 设计 | 那伊抹微笑
- Windows下的网卡Teaming 配置教程
- C++标准库 std::sort vector排序
- MFC CtreeCtrl 节点的遍历
- 网店管家 不入塔读取淘宝订单的方法
- TCP/IP学习(四)TCP缓冲区大小及限制
- ubuntu之问题总结02 --ubuntu14.04 输入法问题
- windows下编译ffmpeg
- Hdu 2015 Multi-University Training Contest4
- POI-----POI操作Excel-3、单元格
- oracle中出现"数据被另一用户锁住"的解决方法