char word[100],p[100],result[4][100];
我想按字母顺序对结果[4] [100]进行排序。例如
result[0]="adbs";
result[1]="aacs";
result[2]="abef";
result[3]="abbm";
排序后将是:
result[0]="aacs";
result[1]="abbm";
result[2]="abbm";
result[3]="adbs";
如何使用库函数或STL执行此操作。提前谢谢,
答案 0 :(得分:5)
如何将result
替换为std::string
数组并对其进行排序:
std::string result[4];
std::sort(result, result + (sizeof(result) / sizeof(result[0])));
答案 1 :(得分:1)
Mark B的答案是C ++的做事方式。
如果您坚持使用原始字符数组,那么使用C风格的方法可能会更好。
#include <cstddef>
#include <cstdlib>
#include <cstring>
#include <iostream>
typedef int (*Comparator)(const void *, const void *);
int main() {
const std::size_t cWords = 4;
char result[cWords][100] = { "az", "ax", "aa", "ab" };
std::qsort(result, cWords, sizeof(result[0]),
reinterpret_cast<Comparator>(std::strcmp));
for (std::size_t i = 0; i < cWords; ++i) {
std::cout << result[i] << std::endl;
}
return 0;
}
方法基本相同,但细节不同。
qsort获取void指针,类型大小和比较函数(也使用void指针)来对任何类型的数据类型实现排序。
std :: sort使用模板来处理特定于类型的细节,因此您可以在更高的抽象级别上工作,并获得更好的类型安全性。但是当你没有真正的类型而只是一个固定长度的字符数组时,这可能更难做到。 std :: sort方法可能可能更快,因为编译器有机会内联比较函数。