C++中的--【排序算法】
来源:互联网 发布:linux 查看系统分区 编辑:程序博客网 时间:2024/06/17 15:43
本文主要是学习C++标准库中的排序算法的应用,一般来讲C++提供的排序算法只能针对int类型的数据进行相应升序或降序。本文中用的是ID类类型的数据,拥有两个参量,一个是string类型的name,另一个是int类型的score数据,所以如果对它们进行排序的话需要对==和<运算符进行运算符重载,这也是C++一大亮点之一,使得程序开发变得更加灵活!引用《The C++ Programming Language》中的运算符重载说明:
1. 可以供用户自己去定义运算符的有:
用户不可以进行定义的有:
::(作用域解析符)
.(成员选择运算符)
.*(通过到成员的指针做成员选择运算符)
?:(三元运算符)
typeid、sizeof(都不可以用户自定义)
它们都以名字作为其第二个参数,而且提供的是引用成员的最基本语义。
在没有重载==和<的时候运行程序会报错,如下所示:
加了对==和<运算符重载过后就可以正确的对包含字符型和整型的ID类型的参数进行排序,只需调用sort(AA,BB)函数即可进行升序排列,标准模板库中同时也可以进行降序排列,只需添加一个如下代码即可:
bool compare(const ID& x,const ID& y){ return x.score>y.score;}
然后调用sort(ids.begin(),ids.end(),compare);
此时就会有以下结果:
升序结果如下图所示:
Code:
/* *作者:att0206 *上海师范大学 *2017/03/18*/#include<iostream>#include<string>#include<vector>#include<algorithm>using namespace std;void showText(){ cout<<"**********************************"<<endl; cout<<"**** Welcoming! ****"<<endl; cout<<"**********************************"<<endl;}class ID{public: ID():name(""),score(0){} ID(string n,int s):name(n),score(s){} string name; int score;};//重载运算符bool operator==(const ID& x,const ID& y) //重载==运算符{ return (x.name == y.name)&&(x.score == y.score);}bool operator<(const ID& x,const ID& y){ return x.score<y.score;}int main(int argc,char** argv){ showText(); vector<ID> ids; vector<ID>::iterator iter; ids.push_back(ID("Wang",8)); //使用了拷贝构造函数 //cout<<&ID::show<<endl; ids.push_back(ID("Chao",5)); ids.push_back(ID("Long",3)); ids.push_back(ID("SHNU",9)); for(iter = ids.begin();iter != ids.end();++iter) //对ids进行遍历 { cout<< (*iter).name<<" "<<(*iter).score<<endl; } sort(ids.begin(),ids.end()); //调用排序算法 cout<<"The sort output :"<<endl; for(iter = ids.begin();iter != ids.end();++iter) { cout<< (*iter).name<<" "<<(*iter).score<<endl; } for(;;); return 0;}
以上代码是针对升序的,如果想实现降序功能,自行修改添加相关代码。
对于C++中提供的丰富STL标准库的接口很是方便,只需要知道如何进行调用相关的API很快就可以解决问题。对于算法的学习,只是以排序作为一个简单的例子,后面还会具体的学习算法。
0 0
- C语言中的排序算法
- C语言中的排序算法
- C语言中的一些排序算法
- C语言中的一些排序算法
- 算法导论中的快速排序C源码~
- C语言中的算法排序方法集中营
- 黑马程序员-c语言中的排序算法
- C/C++中的经典排序算法总结
- 常见算法:C语言中的排序算法--冒泡排序,选择排序,希尔排序
- 常见算法:C语言中的排序算法--冒泡排序,选择排序,希尔排序
- 数据结构中的排序查找算法(C语言实现)
- 算法导论中的归并排序C语言实现
- c语言中的几种排序算法——冒泡排序、快速排序、插入排序、选择排序
- 排序算法 - 堆排序 (C++)
- 排序算法 - 快速排序(C++)
- 排序算法 - 计数排序(C++)
- c#中的排序算法
- java中的排序算法
- 细说jQuery如何实现懒加载
- 浅谈HTTP中Get与Post的区别
- Jquery AJAX POST与GET之间的区别
- css3容易混淆记错的记录
- 利用@media screen实现网页布…
- C++中的--【排序算法】
- 详解 CSS 属性 -&n…
- css有哪些种类的选择器
- CSS选择器大全
- 细说HTML元素的ID和Name属性的区别
- 常见图片格式jpg、jpeg、png、gif…
- Why is the fold action necessary in Spark?
- 解释下浮动和它的工作原理?清除浮…
- Flex 布局教程:语法篇