C++:排序函数

Posted

技术标签:

【中文标题】C++:排序函数【英文标题】:C++: Sort functions 【发布时间】:2017-09-15 09:20:21 【问题描述】:

我是 C++ 初学者。我想了解这个function 是如何对string 进行排序的?

int SA_cmp(const void *a, const void *b)  return strcmp(S + *(int*)a, S + *(int*)b); 

任何指针都会有帮助吗?

【问题讨论】:

一个忠告:放弃上面的,去std::string和std::sort。 什么是S?无论您使用什么学习材料:现在就把它扔掉。改为获取book。那是糟糕的代码,不应该向初学者展示。 【参考方案1】:

这是一个 C 比较函数,而不是 (C++) 排序函数。排序函数(可能是qsort,给定const void* 参数)会多次调用它(将指针传递给包含许多以null 结尾的字符串的缓冲区的明显索引),以便对这些索引进行排序(以及它们所指示的子字符串)。

【讨论】:

【参考方案2】:

不会对字符串进行排序。

这是一种帮助比较字符串的方法,被排序方法用作辅助方法。

如果字符串a 按字典顺序小于字符串b,它将返回一个负数,如果它们相等则返回0,或者如果b 大于a,则返回一个正数。

【讨论】:

感谢您的编辑。最初的答案让我感到困惑,让我陷入了深深的自我怀疑的深渊:D

以上是关于C++:排序函数的主要内容,如果未能解决你的问题,请参考以下文章

C++:排序函数

c++ sort 函数能对类或者结构体进行排序吗

插入排序函数行为怪异 C++

C++排序函数

带有矢量对象 C++ 的快速排序函数

使用非静态成员函数的 C++ 排序向量