[C/C++标准库]_[初级]_[使用std::sort排序各种类型数据]
来源:互联网 发布:手机如何联系淘宝小二 编辑:程序博客网 时间:2024/05/01 02:51
std::sort
场景:
1. 在使用sort排序时,有时候需要对对象的某个值进行排序,比如对类对象的某个id的int类型值或者bool类型值,其实bool类型值排序研究了半天。。
test_sort.cpp
#include <stdlib.h>#include <string.h>#include <string>#include <vector>#include <algorithm>#include <iostream>using namespace std;template <typename t>void Print (vector<t> array){int size = array.size();cout << "size: " << size << endl;for (int i = 0; i < size; ++i){cout << array[i] << endl;}}class Data{friend ostream &operator<<(ostream &output, const Data* data);public:Data(){}~Data(){}int id_;bool is_deleted_;};ostream& operator<<( ostream& os,const Data* data){return os << data->id_ << ":" << data->is_deleted_;}void SortString(){vector<string> array;array.push_back("abc");array.push_back("a");array.push_back("bc");array.push_back("h");//1.从小到大排序cout << "sort with from small to big" << endl;sort(array.begin(),array.end(),std::less<string>());Print(array);//1.从大到小排序cout << "sort with from big to small" << endl;sort(array.begin(),array.end(),std::greater<string>());Print(array);}void SortInt(){vector<int> array;array.push_back(4);array.push_back(5);array.push_back(1);array.push_back(2);//1.从小到大排序cout << "sort with from small to big" << endl;sort(array.begin(),array.end(),std::less<int>());Print(array);//1.从大到小排序cout << "sort with from big to small" << endl;sort(array.begin(),array.end(),std::greater<int>());Print(array);}bool CompId(Data* first,Data* second){return first->id_ < second->id_;}bool CompBool(Data* first,Data* second){return first->is_deleted_ > second->is_deleted_;}void SortData(){vector<Data*> array;Data *d1 = new Data();d1->id_ = 4;d1->is_deleted_ = true;Data *d2 = new Data();d2->id_ = 3;d2->is_deleted_ = false;Data *d3 = new Data();d3->id_ = 1;d3->is_deleted_ = true;Data *d4 = new Data();d4->id_ = 5;d4->is_deleted_ = false;array.push_back(d1);array.push_back(d2);array.push_back(d3);array.push_back(d4);//1.根据id_从小到大排序.sort(array.begin(),array.end(),CompId);Print(array);//1.根据is_deleted_排序,true在前面.sort(array.begin(),array.end(),CompBool);Print(array);}int main(int argc, char const *argv[]){cout << "begin" << endl;SortInt();SortString();SortData();return 0;}
输出:
beginsort with from small to bigsize: 41245sort with from big to smallsize: 45421sort with from small to bigsize: 4aabcbchsort with from big to smallsize: 4hbcabcasize: 41:13:04:15:0size: 41:14:13:05:0
0 0
- [C/C++标准库]_[初级]_[使用std::sort排序各种类型数据]
- [C/C++标准库]_[初级]_[std::map的使用细节]
- [C/C++标准库]_[初级]_[std::deque和std::vector比较]
- [C/C++标准库]_[初级]_[使用string stream]
- [C/C++标准库]_[初级]_[自定义std::map的key]
- [C/C++标准库]_[初级]_[std::vector的删除元素]
- [C/C++标准库]_[初级]_[实用类std::pair]
- [C/C++标准库]_[初级]_[如何实现std::string自己的Format(sprintf)函数]
- [C/C++标准库]_[初级]_[std::vector的多线程读写问题]
- [C/C++标准库]_[初级]_[标准库里提供的排序算法]
- [C/C++标准库]_[初级]_[对C链表排序]
- [C/C++]_[初级]_[标准字符串std::string 所有函数的用法总结]
- [C/C++]_[初级]_[把一个图片的数据存入到std::string里,使用_wfopen生成二进制文件]
- [C/C++标准库]_[初级]_[使用freopen重定向标准输出]
- [C/C++11]_[初级]_[使用enumerations类型]
- [C/C++标准库]_[初级]_[使用时间库]
- [C/C++标准库]_[初级]_[signal信号浅析]
- [C/C++标准库]_[初级]_[集合操作]
- codeforces #257 C题Jzzhu and Chocolate
- 34 韩信点兵
- JSP邮编区号管理系统
- 【LeetCode】【Python题解】Reverse Integer
- 杭电1102 Constructing Roads
- [C/C++标准库]_[初级]_[使用std::sort排序各种类型数据]
- 36 最长公共子序列
- Cocos2d-x中的文件读取操作
- Android中ListView的各种显示效果
- hdu 1032--3n+1
- 制作不暴露源码的Android Library Project
- 37 回文字符串
- 从 "specified with /SECTION option does not exist" 说开
- GNUstep 搭建Objective C编译环境教程