gpt4 book ai didi

c++ - 排序对不起作用

转载 作者:行者123 更新时间:2023-11-30 01:27:44 25 4
gpt4 key购买 nike

#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;

pair<char[300],int> list[10000];

int main()
{
char a[300],b[20000];
int n;
cin >> n;
for(int d=1; d<=n; d++)
{
list[d].second = 0;
}
int k=0;
for(int d=1; d<=n; d++)
{
cin >> a;
bool masuk=false;
for(int e=1; e<=k;e++)
{
if (strcmp (a,list[e].first) == 0)
{
masuk = true;
list[e].second++;
break;
}
}
if (!(masuk))
{
k++;
strcpy(list[k].first,a);
list[k].second++;
}
cin.getline(b,256);
}
sort(list+1,list+k+1);
for(int e =1; e<=k; e++)
{
cout << list[e].first << " " << list[e].second << endl;
}
}

如果我输入

3
Spain Donna Elvira
England Jane Doe
Spain Donna Anna

我要它输出

England 1
Spain 2

但它输出

Spain 2
England 1

sort 不是应该对第一个进行排序吗?但它似乎不起作用。我在 Dev C++ 上试过,输出正确,但在 ideone 上试过,输出错误

请帮助我,抱歉我的英语不好。

最佳答案

这里有几件事打败了我:

  1. 为什么要使用 std::pair 数组来模拟 std::map 的行为?
  2. 为什么从 1 而不是 0 开始索引?

无论如何,std::sort 需要第三个参数,正如 Max Lybbert 已经提到的那样。该参数是指向排序函数的指针。这个适用于您的情况:

bool mysort(std::pair<const char*, int> a, std::pair<const char*,int> b) {
return (strcmp(a.first, b.first) < 0);
}

关于c++ - 排序对不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8454757/

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