小白学习算法笔记 —— C++之STL

小白学习算法笔记 —— C++之STL

将简单学习C++ 的STL(标准模板库)中最基本的部分内容,这部分内容对于提高程序的编写效率和运行效率都十分有用。
  • STL:(Standard Template Library) 标准模板库
  • 包含一些常用的算法如排序查找,还有常用的数据结构如可变长数组、链表、字典等。
  • 使用方便,效率较高
  • 要使用其中的算法,需要添加头文件#include <algorithm>

1.用sort()进行排序运用

 

用法一:对基本类型的数组从小到大排序

sort(数组名+n1, 数组名+n2)
  • n1和n2都是int类型的表达式,可以包含变量
  • 如果n1=0,则 + n1 可以不用写
    将数组中下标范围为 [n1, n2) 的元素从小到大排序。(注意好了,下标为n2的元素不在排序区间内,这其实非常人性化,可以仔细想想。)

废话也不多说了,直接上代码:

int a[]={12, 8, 9, 2, 4, 17};
sort(a, a+6);
 //对整个数组从小到大排序
 //结果:{2, 4, 8, 9, 12, 17}

int a[]={12, 8, 9, 2, 4, 17};
sort(a+2, a+4};
//结果:{12, 8, 2, 9, 4, 17}

用法二:对元素类型为T的基本类型数组从大到小排序

sort( 数组名+n1, 数组名+n2, greater<T>())

先上代码再说:

int a[]={12, 8, 9, 2, 4, 17};
sort(a+1,a+4,greater<int>());
//结果:{12, 9, 8, 2, 4, 17}

学到这里我就很感恩STL了,以后不用再去写这些基础的排序了(泪目!)



好了,学到这里任务条就走一大半了,接下来要学习自定义排序喽!

用法三:用自定义的排序规则,对任何类型T的数组排序

sort(数组名+n1, 数组名+n2, 排序规则结构名();

排序规则结构的定义方式:

struct 结构名
{
	bool operator()(const T & a1, const T & a2) const{
		//若a1应该在a2前面,则返回true。
		//否则返回false。
	}
};

注释:a1, a2是的传入参数的变量名,可以随意换;T是比较的类型,后面代码中可以体会一下;最重要的是这个定义中的其他东西不要动,原样写上去就好。

还是代码解释一下:

struct student{
	char name[20];
	int Id;
	double gpa;
}

//假定我们有十个数据,实在不想写了。对象是students

struct student_rule
{
	bool operator()(const student & a1, const student & a2) const{
		return a1.gpa < a2.gpa;
		}
};//这里我们写了排序规则结构体,T就是student。

sort(students, students+sizeof(students)/sizeof(student), student_rule());
//这里就对students的是个数据按照student.Id从小到大排序。

写到这里就结束了,如果能给屏幕前的你带来一点帮助,那我便十分高兴了。最后,衷心感谢郭炜老师,感恩感谢。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值