海难;
输入一个数字,而不是乘客乘客(数量)类型的向量,其中Passenger是一个由字符串名称和字符串状态组成的结构; 问题是按下一个优先顺序对船上的乘客进行分类: a)首先离开船的人是老鼠,而不是船离开的人或者孩子,而不是船离开一个人,最后一个离开船的人是船长; b)有必要编写一个bool函数,我们将在函数stable_sort中使用它来对乘客的矢量进行排序;
我试过了:
int Priority1(Passenger pas)
{
if(pas.status == "rat")
return 3;
if(pas.status == "woman" || pas.status == "child")
return 2;
if(pas.status == "man")
return 1;
if(pas.status == "captain")
return 0;
}
bool Priority(Passenger pas1, Passenger pas2)
{
return Priority1(pas1) > Priority1(pas2);
}
答案 0 :(得分:1)
如果您尝试为其中一个实现订购功能 标准库函数,你的函数是错误的, 因为如果两名乘客都是老鼠,它就会返回至 建立正确的排序功能,比较任何两个条目 在同一个等价类中必须返回false。
再往下......如果两名乘客都是男性会怎么样?没有
你if
的确是真的,你就会失败,结果就是这样
未定义的行为。 (FWIW:这通常是一种不好的做法
在函数中左右两侧抛出return
。一
单个返回,作为函数的最后一行,以及
任何控制结构都是一个很好的一般规则。)
无论如何,我采取的方法是映射两个值
到一个整体优先级,然后返回Priority(pas1) < Priority(pas2);
。更简单,保证不会错过
任何情况。
答案 1 :(得分:0)
if(pas1.status == "man" && pas2.status != "woman" && pas2.status == "child" && pas2.status != "rat")
我认为第三个条件pas2.status == "child"
应为pas2.status != "child"
此外,函数中没有默认的return
语句。