c++ 中带有对象的排序函数
Sort function in c++ with objects?
我有以下程序以小时:分钟:秒的形式比较时间。
class time
{
public:
string Hours;
string Minutes;
string Seconds;
};
bool CompareTimes(time A, time B)
{
if (A.Hours < B.Hours)
{
return true;
}
if (A.Minutes < B.Minutes)
{
return true;
}
if (A.Seconds < B.Seconds)
{
return true;
}
return false;
}
而且基本上...
sort(TimeArray, TimeArray + NumberOfTimes, CompareTimes);
但是,这似乎没有正确排序。另一方面,如果我将比较时间方法更改为以下内容:
bool CompareTimes(time A, time B)
{
if (A.Hours > B.Hours)
{
return false;
}
if (A.Minutes > B.Minutes)
{
return false;
}
if (A.Seconds > B.Seconds)
{
return false;
}
return true;
}
然后一切正常。我认为如果第二个输入大于第一个输入,排序函数需要返回 true。为什么在第一种情况下不起作用,但在第二种情况下有效?
if (A.Hours < B.Hours)
{
return true;
}
之后,您有两个选择:小时相等,或 A.小时>B.小时。如果它们相等,那么比较分钟是有意义的。如果 A 有更多的小时数,那么比较分钟是没有意义的。您的第二个条件应该是:
if (A.Hours == B.Hours && A.Minutes < B.Minutes)
同样,你的第三个条件应该是:
if (A.Hours == B.Hours && A.Minutes == B.Minute && A.Seconds < B.Seconds)
最后的回报应保持不变。另外,请注意,将它们存储为字符串将导致它们按字母顺序排序。(或按其 ASCII 码的顺序)。
我认为要返回true,您需要一次检查所有三个条件。
return (A.Hours*60*60 +A.Minutes*60+A.Seconds > B.Hours*60*60 + B.Minutes*60 + B.Seconds);
刚刚编写了如下所示的示例。
#include<iostream>
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
using namespace std;
class time_
{
public:
string Hours;
string Minutes;
string Seconds;
time_(int h,int m,int s){
char buf[6]={0,};
memset(buf,0,sizeof(buf));sprintf(buf,"%d",h);Hours+=buf;
memset(buf,0,sizeof(buf));sprintf(buf,"%d",m);Minutes+=buf;
memset(buf,0,sizeof(buf));sprintf(buf,"%d",s);Seconds+=buf;
}
};
bool CompareTimes(time_ A, time_ B){
return (
((atoi(A.Hours.c_str())*60*60)+(atoi(A.Minutes.c_str())*60)+atoi(A.Seconds.c_str())) >
((atoi(B.Hours.c_str())*60*60)+(atoi(B.Minutes.c_str())*60)+atoi(B.Seconds.c_str())));
}
int main(){
time_ A(10,10,10);
time_ B(10,10,11);
std::cout<<(CompareTimes( A, B)?"greater":"smaller")<<endl;
time_ A1(10,11,10);
time_ B1(10,10,10);
std::cout<<(CompareTimes( A1, B1)?"greater":"smaller")<<endl;
}
相关文章:
- 如何计算此排序函数的时间复杂度?
- 什么是自定义比较器以及如何在 C++ 的排序函数中使用它?
- 自定义排序函数中的堆溢出
- 分段 排序函数实现中的错误
- 使用排序函数 c++ 对字符数组进行排序
- 类中的排序函数
- 数组为此合并排序函数提供了正确的输出,但向量给出了不正确的输出.出了什么问题?
- 快速排序函数在快速排序算法中如何工作?
- 解释标准库排序函数C++的比较谓词的工作原理?
- C++ wrt 字符串中的 STL 排序函数
- 排序函数和优先级队列 C++ 中的比较器
- 为什么当我们使用等于'='符号比较器函数时,c ++的内置排序函数不起作用?
- C++排序函数中的奇怪之处
- C++ 排序函数中的数组项赋值
- 瓶颈 C++ 排序函数Wi-Fi 信号
- 算法中的排序函数返回错误
- 排序函数如何在整数对的向量上工作?
- 从递归向后选择排序函数调用 max 和交换函数
- 排序函数未正确返回数组
- 如何将比较器添加到自定义排序函数