gpt4 book ai didi

c++ - 您如何构建比较函数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:55:56 25 4
gpt4 key购买 nike

我经常遇到这样的情况,尤其是在 C++ 中进行排序时,我正在比较一系列字段以比较更大的结构。一个简化的例子:

struct Car{
Manufacturer make;
ModelName model;
Year year;
};

bool carLessThanComparator( const Car & car1, const Car & car2 ){
if( car1.make < car2.make ){
return true;
}else if( car1.make == car2.make ){
if( car1.model < car2.model ){
return true;
}else if( car1.model == car2.model ){
if( car1.year < car2.year ){
return true;
}
}
}

return false;
}

我的直觉方法似乎很麻烦,尤其是对于 3 个以上的字段。您将如何用 C++ 构建这一系列的比较?其他语言是否提供更简洁或优雅的语法?

最佳答案

好吧,如果您的函数在 if 子句中返回,则不需要显式 else,因为它已经退出。这可以节省“缩进谷”:

bool carLessThanComparator( const Car & car1, const Car & car2 ) {
if( car1.make < car2.make )
return true;

if ( car1.make != car2.make )
return false;

if( car1.model < car2.model )
return true;

if( car1.model != car2.model )
return false;

if( car1.year < car2.year )
return true;

return false;
}

我也喜欢 MarkusQ 的 LISPish 短路方法。

关于c++ - 您如何构建比较函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/597532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com