vector的sort
时间: 2023-11-12 20:55:48 浏览: 108
vector的sort函数用于对vector中的元素进行排序。它采用快速排序算法实现,时间复杂度为O(NlogN)。在排序时,vector中的元素会按照升序进行排列。
为了在sort函数中使用自定义的比较函数,我们可以利用函数对象(function object)的方式进行传入。函数对象是一个类对象,其中的operator()函数被重载,用于实现排序时的比较操作。在sort函数中,我们可以通过传入一个比较函数对象作为第三个参数来指定排序的方式。
下面是一个关于vector排序的例子,涉及到了如何继承std::binary_function类、CString类以及如何重载operator()函数的方法:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
// 自定义比较函数对象
class MyCompare : public std::binary_function<CString, CString, bool>
{
public:
bool operator()(const CString& str1, const CString& str2) const
{
return str1.GetLength() < str2.GetLength();
}
};
int main()
{
std::vector<CString> vec;
vec.push_back("abcd");
vec.push_back("ab");
vec.push_back("abc");
// 使用自定义的比较函数对象对vector进行排序
std::sort(vec.begin(), vec.end(), MyCompare());
// 打印排序后的结果
for (const auto& str : vec)
{
std::cout << (LPCTSTR)str << std::endl;
}
return 0;
}
```
阅读全文