快排sort
用法
头文件 #include
sort函数可以有两个参数,也可以有三个参数:
- 排序数组起始位置
- 排序数组结束为止
- 排序的方法,确认是升序还是降序,默认缺省情况为升序排序
举例
1 |
|
注意sort函数第二个参数的范围。
下面主要举例讲解三个参数用来解决结构数组排序的问题。
在CSP 17-3-2排队问题中,我用了一个结构体来表示每个同学,其中包含他的学号和位置。我需要sort函数来对他们的位置进行排序,这个时候就需要用到带有三个参数的sort函数了。
结构体声明如下
1 | typedef struct stu{ |
第三个参数函数声明如下
1 | bool cmp(stu a, stu b) |
因为我是要对他们的位置进行排序,而且是升序排序。通过修改return 的内容,可以实现对其他方面的排序以及修改排序的升降。
使用方法
1 | sort(array+1, array+1+n, cmp); |
这样就能对结构数组其中的位置信息进行排序了。
栈和队列
stack
模板类定义在#include
定义示例代码:stack<int> s
基本操作如下
操作 | 作用 |
---|---|
s.push(x) | 入栈 |
s.pop() | 出栈,注意该操作只删除元素,不返回元素 |
s.top() | 访问栈顶 |
s.empty() | 栈是否为空,为空时返回true |
s.size() | 访问栈的元素个数 |
queue
模板类定义在#include
定义示例代码:queue<int> q
基本操作如下
操作 | 作用 |
---|---|
q.push(x) | 入队 |
q.pop() | 出队,弹出队列第一个元素,但不会返回其值 |
q.front() | 访问队首元素,即第一个入队的 |
q.back() | 访问队尾元素,即最后一个入队的 |
q.empty() | 判断队空,若为空返回true |
q.size() | 访问队元素个数 |
示例
1 |
|
结果
1 | size of stack:3 |