C++ sort和for_each算法的普通、文艺和2B用法
2012-03-23 22:26
501 查看
题目:对数组元素进行从大到小排序.
说明:本文用sort和for_each算法的3种使用方法,来说明C++算法的谓词参数如何传入自己定义的"函数"。
1。普通用法,传入普通函数
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
//普通比较函数
bool normal_greater(const int& a, const int& b)
{
return a > b;
}
//普通打印函数
void normal_print(const int& value)
{
cout << value << endl;
}
int main()
{
vector<int> vec = {3, 5, 4, 1, 2};
//普通排序过程
sort(vec.begin(), vec.end(), normal_greater);
//普通打印过程
for_each(vec.begin(), vec.end(), normal_print);
}这种用法,好像没有什么需要说明的。
2。文艺用法,就是定义函数对象。
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
//文艺比较函数
class funobject_greater
{
public:
bool operator()(const int& a, const int& b)
{
return a > b;
}
};
//文艺打印函数
class funobject_print
{
public:
void operator()(const int& value)
{
cout << value << endl;
}
};
int main()
{
vector<int> vec = {3, 5, 4, 1, 2};
//文艺排序过程
sort(vec.begin(), vec.end(), funobject_greater());
//文艺打印过程
for_each(vec.begin(), vec.end(), funobject_print());
}函数对象,是C++STL中的标准配件。
3。2B用法,是C++11新引入的Lambda表达式,即匿名函数。
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int main()
{
vector<int> vec = {3, 5, 4, 1, 2};
//2B排序过程
sort(vec.begin(), vec.end(), [](const int& a, const int& b){return a > b;});
//2B打印过程
for_each(vec.begin(), vec.end(), [](const int& value){cout << value << endl;});
}代码的确简洁很多,说这种用法2B,是褒义。
说明:本文用sort和for_each算法的3种使用方法,来说明C++算法的谓词参数如何传入自己定义的"函数"。
1。普通用法,传入普通函数
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
//普通比较函数
bool normal_greater(const int& a, const int& b)
{
return a > b;
}
//普通打印函数
void normal_print(const int& value)
{
cout << value << endl;
}
int main()
{
vector<int> vec = {3, 5, 4, 1, 2};
//普通排序过程
sort(vec.begin(), vec.end(), normal_greater);
//普通打印过程
for_each(vec.begin(), vec.end(), normal_print);
}这种用法,好像没有什么需要说明的。
2。文艺用法,就是定义函数对象。
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
//文艺比较函数
class funobject_greater
{
public:
bool operator()(const int& a, const int& b)
{
return a > b;
}
};
//文艺打印函数
class funobject_print
{
public:
void operator()(const int& value)
{
cout << value << endl;
}
};
int main()
{
vector<int> vec = {3, 5, 4, 1, 2};
//文艺排序过程
sort(vec.begin(), vec.end(), funobject_greater());
//文艺打印过程
for_each(vec.begin(), vec.end(), funobject_print());
}函数对象,是C++STL中的标准配件。
3。2B用法,是C++11新引入的Lambda表达式,即匿名函数。
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int main()
{
vector<int> vec = {3, 5, 4, 1, 2};
//2B排序过程
sort(vec.begin(), vec.end(), [](const int& a, const int& b){return a > b;});
//2B打印过程
for_each(vec.begin(), vec.end(), [](const int& value){cout << value << endl;});
}代码的确简洁很多,说这种用法2B,是褒义。
相关文章推荐
- C++ 中的单例模式(普通,2B,文艺)
- C++ 中的单例模式 普通,2B, 文艺
- c++普通程序员/文艺程序员/二逼程序员
- C++中sort用法
- c++for_each的用法
- C++:STL中sort()函数的用法总结
- C++ 排序函数 sort(),qsort()的用法
- C++ 中的sort排序用法通俗易懂
- C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法----细节决定成败 (sort用法)
- C语言qsort和C++sort的用法小结和区别比较
- C++ sort()函数简单用法
- c++中“计时器”、“sort”、“namespace”函数的用法
- c++中sort()及qsort()的用法总结
- 普通C++程序员 VS 文艺C++程序员
- c++中sort()及qsort()的用法总结
- C++ 排序函数 sort(),qsort()的用法
- c++中sort()及qsort()的用法总结
- C++ 排序函数 sort(),qsort()的用法
- [c++]no matching function for call to ‘sort(…)......
- c++ 标准模板库 STL 算法之 for_each 函数的使用用法详解