题目
题目链接
题解考查STL。
set 容器排序详讲
set内部本身自带排序函数,也就是说插入set后通过迭代器或者auto输出的结果都是升序排列的;如果想要改变排序方式,可以自己定义一个cmp结构体,重载set
中?
的()
操作符,比如:
#define PSI pair
struct cmp {
bool operator() (const PSI & a, const PSI & b) const {
if (a.second != b.second) return a.second > b.second;
return a.first v2[i]说明v1>v2。
更新于2022.4.22
发现其实根本不用这么麻烦,只要知道vector是可以自己比较大小是就行了。
用map统计出每种vector的数量; 用个结构体保存,索引就是正常编号,数据项为vector和vector的个数; 再重新遍历输入的每一行,如果遍历过了这个vector,那么就continue,没遍历过就相当于遇到了一个独一无二的vector,结构体编号加一,vector赋值为遍历到的,个数赋值为上面map统计的数量; 遍历完成,sort,重写cmp; 输出。
代码
#include
#define VI vector,int
#define PVI pair
using namespace std;
int n, m, x;
vector v;
struct cmp { // !!!
bool operator() (const PVI & a, const PVI & b) {
if (a.second != b.second) return a.second > b.second;
return a.first > n >> m;
for (int i = 1;i x, v.push_back (x);
Map[v] ++;
}
for (auto item : Map) {
v = item.first;
int cnt = item.second;
s.insert ({v, cnt});
}
cout
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?