关于对STL容器重载运算符的问题
2024-09-03 18:35:13
注意:下文中vector数组指的是每个数组元素都是一个vector的数组
大部分有序STL容器都重载了小于号,且比较方式是对容器中元素进行字典序比较。
此时如果你写\(bool\ operator<\)重载运算符,重载的内容将被忽视,仍然按字典序进行比较。
如果你想用自己的比较方式对STL容器数组(如vector数组)进行排序,一定要写比较函数,在sort时作为参数传入。注意为保证复杂度,比较函数的参数必须打上&引用。
一个实例:
#include<bits/stdc++.h>
using namespace std;
#define N 100007
vector<int> a[N];
int n=100000;
bool cmp(vector<int> &a,vector<int> &b)
{
return a[0]-a[1]<b[0]-b[1];
}
int main()
{
for(int i=1;i<=n;i++)
a[i].push_back(i),a[i].push_back(2*i);
//return 0;
sort(a+1,a+n+1,cmp);
printf("%d\n",a[1][0]);
}
最新文章
- Python之路,Day9, 进程、线程、协程篇
- MySQL主从数据库同步延迟问题解决(转)
- applicationContext-mail.xml 模板
- WildFly 9.0.2 + SQLServer + BIRT + JNDI 处理BIRT报表发布时数据源的修改
- JavaScript 标准对象
- 金蝶K3无法创建数据库,请查看该文件夹的错误的解决方法。
- 判断非法字符串的类方法,与jsp
- fork() &;&; fork() || fork()
- [leetcode](4.21)4. 有效子数组的数目
- Sql Server 2008日志满的解决办法
- CMDB资产管理系统开发【day25】:需求分析
- io系列之其他类
- mybatis mapper配置
- 算法笔记 3.2 codeup1934 找X
- DB2 键约束操作
- 网易新网 spider
- 让HTMLrunner 报告的子列表都 默认展示出来的 方法(方便发送邮件时可以方便查看)
- 深入了解MyBatis二级缓存
- 2017.7.4 ACM校内赛 Round 2
- IONIC 页面之间传递参数