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 方法可能更快,因为编译器有机会内联比较函数。