结构体
定义
struct person {
int x, y, z;
int sum;
......
};
person a, b[N];
Copy
结构体排序
bool cmp(person a, person b)
{
// 自定义的比较规则
if(a.x != b.x)
return a.x > b.x;
......
return a.y > b.y;
}
sort(b+1, b+n+1, cmp);
Copy
例题:
队列
CSP 经常考
方法一、使用数组+变量
int q[1000]; // 定义一个最大历史容量是 1000 的队列
int head=0, tail=0; // 定义队列头 队列尾,初始值依个人习惯而设,一般全为 0
int len = tail - head; // 获取队列的长度
if(head == tail) // 判断队列为空
int h = q[head]; // 取队首
q[tail++] = t; // 将 t 入队
head++; // 队首出队,前提是队列不为空
Copy
方法二、STL 队列 queue
queue<int> q; // 定义一个空队列
int len = q.size(); // 获取队列的长度
if(q.empty()) // 判断队列为空
int h = q.front(); // 取队首
q.push(t); // 将 t 入队
q.pop(); // 队首出队,前提是队列不为空
...... // 更多 STL 队列的使用方法可自行百度
Copy
例题:
双端队列
deque<int> q; // 定义一个空队列
int len = q.size(); // 获取队列的长度
if(q.empty()) // 判断队列为空
int h = q.front(); // 取队首
q.push_back(t); // 将 t 入队尾
q.push_front(t); // 将 t 入队首
q.pop_back(); // 队尾出队,前提是队列不为空
q.pop_front(); // 队首出队,前提是队列不为空
for(int i = 0; i < q.size(); i++)
{
cout << q[i] << ' ';
q[i] = 0; // 遍历修改双端队列
}
...... // 更多 STL 队列的使用方法可自行百度
Copy
优先队列
一种时刻保持队首是队列中最大/最小值的队列,底层利用的是二叉堆实现。
priority_queue<int&