【C++】代码实现:结合 vector 容器功能,通过运算符重载技术巧妙实现多条件排序。

一、工作场景:

在实际工作场景中,对两个数组中的数据进行了分析比对:滑动窗口式。

每移动一次就计算并记录相关系数,以及当前偏移下标值。

最后要对所有计算出的相关系数及下标值进行排序:

  1. 相关系数从大到小排序; 
  2. 相关系数相同的情况下,偏移下标从小到大排序。 

二、代码说明:

程序实现时结合 vector 容器自身功能,应用了运算符重载技术,并且巧妙地把比较条件放到 return 语句中。

三、实现代码:

  • 数据结构定义:
	//定义结构:存放相关系数、当时位移
	struct MyData
	{
		double Rmax;
		long Jmax;
		MyData(double Rmax, long Jmax) : Rmax(Rmax), Jmax(Jmax) {}

		//排序条件:1、Rmax 从大到小降序;2、Rmax相同的情况下,按 Jmax 从小到大升序。
		bool operator < (const MyData& rhs) const {
			return (Rmax < rhs.Rmax) || (Rmax == rhs.Rmax && Jmax > rhs.Jmax); ;
		}
	};
  • 排序使用示例:
	vector<MyData> vecRmax;
    
        ......

        //计算相关系数
	dResult = gama(vecDf, vecTData, sizeOfShort - iStartShort);
	vecRmax.emplace_back(dResult, jj);

        ......

	// 比对结果排序:降序方式 (相似度最大的排最前面)
	sort(vecRmax.rbegin(), vecRmax.rend());  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值