布尔函数在stable_sort函数中不起作用
A bool function doesn't work in stable_sort function
沉船;
输入一个数字,而不是类型乘客乘客(数字)的向量,其中乘客是由字符串名称和字符串状态组成的结构;问题是将下一个优先级在船上的乘客排序: a)首先离开船的人是老鼠,比船离开了妇或孩子,比船离开一个人,离开船的最后一个是船长。 b)必须编写一个布尔函数,我们将在功能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);
}
如果您试图为其中一个实现订购功能标准库功能,您的功能在微不足道上错误,因为如果两位乘客都是老鼠,它将返回真实。到建立适当的订购功能,比较任意两个条目在同一等价类中必须返回false。
再下降...如果两个乘客都是男人,会发生什么?没有任何您的 if
是正确的,你掉下来了,导致不确定的行为。(fwiw:通常是一个不好的做法将return
扔在功能中的左右和向左。一单个返回,作为功能的最后一行和外部任何控制结构都是一个很好的一般规则。)
无论如何,我要采用的方法是映射两个值为整体优先级,然后返回Priority(pas1) < Priority(pas2);
。简单得多,并保证不要错过任何情况。
if(pas1.status == "man" && pas2.status != "woman" && pas2.status == "child" && pas2.status != "rat")
我认为第三种情况pas2.status == "child"
应该是pas2.status != "child"
另外,函数中没有默认的return
语句。
相关文章:
- 仅包含可移动 std::map 的类的移动构造函数不起作用
- 为什么我的数组双精度函数不起作用?
- std::函数不起作用,但普通的旧函数指针可以 - 为什么?
- C++ Arduino - 随机函数不起作用
- 为什么我的数组或函数不起作用?
- 从类中的另一个文件请求函数不起作用
- 双链表堆栈删除函数不起作用
- 将 cmake 代码段转换为函数 - 不起作用
- 为什么我的从base64解码的函数不起作用?
- 为什么当我们使用等于'='符号比较器函数时,c ++的内置排序函数不起作用?
- swap(int&, int&) 函数不起作用,当交换不使用临时变量时?
- 子类化 STL 容器:范围构造函数不起作用
- 带有此指针的模板类多重继承构造函数不起作用?
- 以下打印树函数不起作用为什么?
- 为什么内存集函数不起作用?
- 调用填充我的主体数组的函数不起作用
- 带有自定义数字的阶乘函数不起作用
- 如何QDialog raise()函数不起作用
- Lambda 表达式闭包函数不起作用
- C++:在没有 lvalue 的情况下调用时复制构造函数不起作用