我有一个C ++程序,我给了already sorted by ID
的大学生UC文件。我需要sort
在school name
参加,same school
按升序排列sorted by ID
。
ie. Joe Paarmann,3,UCB
我需要实现一个给定的函数
bool compareBySchoolName(学生s1,s2),按学校名称比较两名学生 当且仅当s1学校之前(小于)s2学校
时,它应该返回true并使用sort函数 排序(学生,学生+ len,compareBySchoolName);
我的问题是如何比较学校名称,因为它们是字符串?我很困惑如何开始这个。谢谢任何帮助非常感谢。
bool compareBySchoolName(Student s1, Student s2) {
}
答案 0 :(得分:0)
你可以,你需要决定如何比较字符串。我建议你从左到右按字母顺序排列。如果你不知道你想要实现什么逻辑,你就不能实现逻辑。
答案 1 :(得分:0)
答案 2 :(得分:0)
如果您使用的是C ++字符串,请进行比较 C++ String Relational Operators
bool compareBySchoolName(Student s1, Student s2) {
return s1.schoolName < s2.schoolName || (s1.schoolName == s2.schoolName && s1.ID < s2.ID);
}
&#13;
答案 3 :(得分:0)
不同的语言有不同的比较器功能。当你使用比较器功能时,它将获得return int value
。因此,您可以在< or >
声明中使用return
并获取true
或false
。
在C ++中,您可以这样做:
bool compareBySchoolName(Student s1, Student s2) {
return s1.schoolName < s2.schoolName || (s1.schoolName == s2.schoolName && s1.ID < s2.ID)
}
答案 4 :(得分:0)
Ok Buddy,来自此参考:http://www.cplusplus.com/reference/algorithm/sort/
你可以看到comp参数执行以下操作:
二进制函数,接受范围中的两个元素作为参数, 并返回一个可转换为bool的值。返回的值表示 是否将作为第一个参数传递的元素视为去 它在第二个特定的严格弱顺序之前定义。该 函数不得修改其任何参数。这可以是一个 函数指针或函数对象。
所以你要做的就是
bool compareBySchoolName(Student s1, Student s2) {
return s1.SchoolName< s2.SchoolName;
}