gpt4 book ai didi

c++ - 按字母顺序对字符串数组进行排序 C++

转载 作者:行者123 更新时间:2023-11-30 03:33:00 30 4
gpt4 key购买 nike

我正在尝试编写一个具有以下结构的程序:

struct aPlayer {
string name; // name of player
int wins; // number of wins player has
};

struct aCompetition {
string name; // name of the match
int numPlayers; // number of players in the club
aPlayer player[10]; // list of players in this club
};

从那里我想编写一个函数,按名字的字母顺序对玩家进行排序。函数声明如下:

    void sortByName(aCompetition & c){}

注意:我想通过只使用 for 循环、while 循环和 if 语句来做到这一点。我能想到的比较这两个字符串的唯一方法是比较它们的 ASCII 值。我不确定该怎么做,所以任何输入都将不胜感激。谢谢!

最佳答案

排序由标准库提供,类型为 operator< ,或其他类型(如果给定比较器)。您可以构建一个 string::operator<执行词法比较。

#include <algorithm>
void sortByName(aCompetition& c) {
sort(&c.player[0], &c.player[c.numPlayers],
[](const aPlayer& a, const aPlayer& b) {return a.name < b.name;});
}

如果您没有 C++11 lambda,那么您可以使用仿函数。

struct compareAPlayerByName {
boolean operator()(const aPlayer& a, const aPlayer& b) {
return a.name < b.name;
}
};
void sortByName(aCompetition& c) {
sort(&c.player[0], &c.player[c.numPlayers], compareAPlayerByName());
}

关于c++ - 按字母顺序对字符串数组进行排序 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43268672/

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