排序对不工作
Sorting pair not working
#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
是不是应该排序第一个?但这似乎不起作用。我在Dev c++上尝试了这个,它输出正确,但是当在ideone上尝试这个时,它输出错误
请帮助我,对不起,我的英语不好。
这里有几件事让我感到困惑:
- 为什么你使用std::pair数组来模拟std::map的行为?
- 为什么从1开始索引而不是0?
bool mysort(std::pair<const char*, int> a, std::pair<const char*,int> b) {
return (strcmp(a.first, b.first) < 0);
}
我很惊讶你没有得到一个编译器错误。std::sort
不知道如何比较数组中的元素。您需要将该信息作为std::sort
的第三个参数传递进来(作为指向函数的指针或函子)。
相关文章:
- 为什么指针在对二维数组进行排序时无法正常工作?
- 排序功能在C++中未按预期工作
- 解释一下这个排序算法是如何工作的?
- 快速排序函数在快速排序算法中如何工作?
- 解释标准库排序函数C++的比较谓词的工作原理?
- 排序函数如何在整数对的向量上工作?
- 合并排序实施无法正常工作
- 运算符重载在 CPP 中的排序中如何工作?
- 快速排序动态大量对象无法正常工作
- 当输入向量称为储备金时,STD ::排序无法正常工作
- 排序功能无法正常工作
- std::sort与不严格的弱排序比较器可以作为拓扑排序工作
- 实现快速排序,几乎可以工作但不能
- 排序向量<变体<...>>无法通过运算符正常工作<
- 排序函数的第三个参数如何工作
- 合并排序无法在N logN中工作
- 快速排序程序停止工作
- 气泡排序:为什么它不能正常工作?
- 这种珠子排序算法的 c++ 实现是如何工作的
- 在 C++ 中工作排序函数