C++ Sort类成员的传递
2015-07-02 11:14
471 查看
C++模板中提供了sort方法,一般有两种方法:传递函数,传递一个对象。
第一种方法:函数
注意:这里的compare函数是全局函数,而不是成员函数。
第二种方法
代码如下:
上面代码的运行结果:
abcef
12348
$#@!
注意,这里不能sort中不能传递类的成员函数指针,而是传递的一个对象。因为C++模板获取不到类的成员函数指针,类型成员函数指针都隐含了this指针。
第一种方法:函数
bool compare(const string &strLeft, const string &strRight) { return strLeft<strRight; } int main() { vector<string> vtstrTest; vtstrTest.push_back(...); std::sort(vtstrTest.begin(),vtstrTest.end(),compare); return 0; }
注意:这里的compare函数是全局函数,而不是成员函数。
第二种方法
代码如下:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <iostream> #include <vector> #include<algorithm> using namespace std; class SortTest { public: SortTest(){} void run() { VtSort(); } private: void VtSort(); struct SortDesc { bool operator() (const string &left, const string &right) { return left > right; } }; }; void SortTest::VtSort() { vector<string> vtTemp; vtTemp.push_back("abcef"); vtTemp.push_back("12348"); vtTemp.push_back("$#@!"); std::sort(vtTemp.begin(),vtTemp.end(),SortDesc()); for(int i =0; i<vtTemp.size(); ++i) { cout<<vtTemp[i]<<endl; } } int main() { SortTest test; test.run(); return 0; }
上面代码的运行结果:
abcef
12348
$#@!
注意,这里不能sort中不能传递类的成员函数指针,而是传递的一个对象。因为C++模板获取不到类的成员函数指针,类型成员函数指针都隐含了this指针。
相关文章推荐
- JNI初次使用---在C++中得到一系列圆并返回ArrayList
- C/C++中函数参数传递详解
- 数独检测器:帝国理工C++作业
- 2048控制台程序:一份帝国理工C++作业
- 在C++ 中 如何调用 C# 写的DLL
- c语言结构体中保存函数指针的用法
- C++ STL中常见容器的时间复杂度
- 黑马程序员---C语言基础---语句概述
- C/C++中善用大括号
- C语言关键字auto与register的深入理解
- C++中的四种强制类型转换的区别
- 【c语言】模拟实现strchr函数,功能:在一个字符串中查找一个字符第一次出现的位置,如果没有出现返回NULL
- C++ 类继承与对象赋值 情况下 成员变量的覆盖 浅析
- 【c语言】编写程序,使字符串逆序,空间复杂度O(1)
- 【c语言】 模拟实现库函数strcat函数
- C语言中关于错误输出的函数
- 【c语言】模拟实现库函数strcpy函数
- 【c语言】实现一个函数,求字符串的长度,不允许创建第三方变量
- 【c语言】实现一个函数,求字符串的长度
- c++ explicit