【发布时间】:2019-03-12 11:17:26
【问题描述】:
我想对一个数字字符串数组进行排序,我正在使用 C++ 库中的 sort() 函数。
我正在向函数传递第三个参数来告诉如何比较字符串,但我无法正确处理。
有人可以帮帮我吗?
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
using namespace std;
bool howToCompare(string i, string j) {
if(i.length() > j.length()) {
return i > j;
}
else if(i.length() < j.length()) {
return i < j;
}
else {
for(int k = 0; k < i.length(); k++) {
if(i[k] - '0' < j[k] - '0') {
return i < j;
}
else if (i[k] - '0' > j[k] - '0'){
return i > j;
}
}
}
return i == j;
}
int main() {
int n;
cin >> n;
string array[n];
for(int i = 0; i < n; i++) {
cin >> array[i];
}
sort(array, array + n, howToCompare);
for(int i = 0; i < n; i++) {
cout << array[i] << endl;
}
return 0;
}
【问题讨论】:
-
string array[n];这不是标准的 C++。请改用std::vector<std::string>。 -
在你的
howToCompare函数中将i > j替换为false和i < j替换为true -
它通过更改为真或假来工作!非常感谢:D
标签: c++ arrays string sorting numeric