【发布时间】:2021-10-28 16:44:33
【问题描述】:
我是 C++ 新手,所以我想了解为什么以下代码不起作用:
std::sort(arr, arr + j);
for (int i = 0; i < j; i++) {
cout << arr[i] << "\n";
}
输入我测试:a, u, m
我期望的输出:a, m, u
但还是不动a, u, m。
我假设这是因为我将一个指向数组的指针放入了sort()(那部分代码在函数中)?但是我在这里阅读了很多关于如何对数组的指针进行排序的问题并且真的被卡住了。请有人以一种让初学者容易理解的方式解释为什么我的代码不起作用,以及如何解决它?
更新:
struct Phones {
char surname[50];
int yearWhenPhoneRegistred;
int phoneNumber;
};
Phones group[20];
void findDataByYear(struct Phones group[], int year, char *arr[]);
int main {
int year = 0;
char* surnameArr[20] = {};
cout <<"Please, type the year value to apply the sorting: \n";
cin >> year;
findDataByYear(group, year, surnameArr);
return 0;
}
void findDataByYear(struct Phones group[], int year, char *arr[]) {
int j = 0;
for (int i = 0; i < 20; i++) {
if (group[i].yearWhenPhoneRegistred > year) {
arr[j] = group[i].surname;
j++;
}
}
std::sort(arr, arr + j);
printf(" Surname |\n-------------------\n");
for (int i = 0; i < j; i++) {
cout << arr[i] << "\n";
}
}
【问题讨论】:
-
请显示minimal reproducible example。将代码粘贴为文本,无链接,无图像。
-
@ThomasMatthews,已添加!
-
@FrançoisAndrieux 添加!
-
仅供参考,在声明参数、变量、成员或返回类型时,您不需要使用
struct。