我正在制作一个二十一点游戏,并创建了一个数组来充当用户发牌的手牌。我希望能够对其进行排序,以便手按数字顺序排序,这样可以更简单地确定用户的手的类型。这是我的卡片结构:
struct ACard{
int num;
const char *pic;
};
我想按int num
对数组进行排序。我试图只使用简单的插入排序来完成排序,但我相信我需要重载运算符才能这样做,但我这样做时遇到了麻烦,因为我以前从未重载过这样的结构。到目前为止,这是我所拥有的:
int i,j;
ACard key;
for(int i = 1; i < 5; i++){
key = userHand[i].num;
j = i - 1;
while(j >= 0 && userHand[j].num > key){
userHand[j + 1] = userHand[j];
j = j - 1;
}
userHand[j + 1] = key;
}
*注意 userHand
是我希望排序的 ACard 的数组
。
最佳答案
对于 STL 容器,您可以使用 std::sort
函数。前两个参数定义要排序的元素范围。第三个参数定义用于自定义元素比较的 LessThan
函数(您可以为此使用 lambda 表达式)。
std::vector<ACard> userHand; // or another stl container
// initialize userHand somehow
std::sort(userHand.begin(), userHand.end(),
[](const ACard& left, const ACard& right)
{
return left.num < right.num;
});
关于c++ - 对结构数组(卡片)进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47334667/