只有vector,数组,结构体数组可以用sort排序,greater[HTML_REMOVED]是最大到小
- 数组 sort(a,a+n,greater[HTML_REMOVED]());
2.vector: sort(v.begin(),v.end(),greater[HTML_REMOVED] ); - map 按第一个,从大到小排序
-
优先队列反的,less
priority_queue[HTML_REMOVED],less[HTML_REMOVED] > q; 从大到小
重载小于号
<返回类型说明符> operator <运算符符号>(<参数表>) { <函数体> }
- 结构体内
bool operator< (const Person &t) const
{
if (grade != t.grade) return grade > t.grade;
return id < t.id;
}
第一个const 保证参数t对象不会被修改,第二个const保证调用函数对象不会被修改
链表
int n, k;
int h, e[N], ne[N];
1.读入
for (int i = 0; i < n; i ++ )
{
int address, key, next;
scanf("%d%d%d", &address, &key, &next);
e[address] = key, ne[address] = next;
}
2.链起来
for (int i = h; i != -1; i = ne[i])
{
int v = e[i];
if (v < 0) a.push_back(i);
else if (v <= k) b.push_back(i);
else c.push_back(i);
}
3.输出
for (int i = 0; i < a.size(); i ++ )
{
printf("%05d %d ", a[i], e[a[i]]);
if (i + 1 == a.size()) puts("-1");
else printf("%05d\n", a[i + 1]);
}
A1161 每隔两个往长的里面插一个小的
for(int i=0,j=0;i<v2.size();)
{
ans.push_back(v2[i++]);
if(i%2==0&&j<v1.size()) ans.push_back(v1[j++]);
}
vector
a中插入b
v.insert(起始位置,要插入的头,要插入的尾)
a.insert(a.end(), b.begin(), b.end());