gpt4 book ai didi

c++ - 按姓氏然后名字对结构进行排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:04:43 26 4
gpt4 key购买 nike

我有按姓氏排序的算法,但我无法弄清楚如何按姓氏排序,如果两个人的姓氏相同,则按他们的名字排序。

void sortLastName(FRIEND friends[ARRAY_MAX], int& count) {

FRIEND temp;

for(int i = 0; i < count - 1; i++) {
for (int j = i + 1; j < count; j++) {
if (stricmp(friends[i].lastName, friends[j].lastName) > 0) {
temp = friends[i]; //swapping entire struct
friends[i] = friends[j];
friends[j] = temp;
}
}
}
}

=== 编辑 ====================

我不想使用 STD sort()

最佳答案

你为什么不使用 std::sort?这就是它的用途:

struct NameComparer {
bool operator()(const FRIEND& lhs, const FRIEND& rhs){
int compareResult = stricmp(lhs.lastName, rhs.lastName);
if(compareResult == 0){
compareResult = stricmp(lhs.firstName, rhs.firstName);
}
return compareResult < 0;
}
};

std::sort(friends, friends + ARRAY_MAX, NameComparer());

当然,您确实也应该使用 C++ std::string 类。这就是它的用途。然后您就不必再使用容易出错的 C 字符串操作函数,例如 stricmp

关于c++ - 按姓氏然后名字对结构进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/864554/

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