无论, 你插入什么整数, 它都会, 帮你从小到大或从大到小
set<int, less>
这里我插入的是: 5 4 3 2 1, 但是编译器会帮我自动排序机制. 但是set<int>
会有一个默认的函数模板set<int, less<int>> set1;
template<class _Ty>
struct less
: public binary_function<_Ty, _Ty, bool>
{ // functor for operator<
bool operator()(const _Ty& _Left, const _Ty& _Right) const
{ // apply operator< to operands
return (_Left < _Right);
}
返回: 左边是否小于右边(true)
例子:
#include <iostream>
#include <set>
#include <functional>
#include <algorithm>
using namespace std;
int main()
{
//less 函数对象实现比较, 为排序提供依据
//set<int> set1;
set<int, less<int>> set1;
for(int i = 5; i > 0; i--)
{
set1.insert(i); //插入元素
}
//使用迭代器访问
for(set<int>::iterator it = set1.begin(); it != set1.end(); it++)
{
cout<<*it<<" ";
}
cout<<endl;
system("pause");
return 0;
}
运行结果: 1 2 3 4 5
set<int, greater>>
template<class _Ty>
struct greater
: public binary_function<_Ty, _Ty, bool>
{ // functor for operator>
bool operator()(const _Ty& _Left, const _Ty& _Right) const
{ // apply operator> to operands
return (_Left > _Right);
}
};
返回值: 如果左边 > 右边 true
例子:
#include <iostream>
#include <set>
#include <functional>
#include <algorithm>
using namespace std;
int main()
{
//less 函数对象实现比较, 为排序提供依据
//set<int, less<int>> set1;
set<int, greater<int>> set1;
for(int i = 5; i > 0; i--)
{
set1.insert(i); //插入元素
}
//使用迭代器访问
for(set<int, greater<int>>::iterator it = set1.begin(); it != set1.end(); it++)
{
cout<<*it<<" ";
}
cout<<endl;
system("pause");
return 0;
}
运行结果: 5 4 3 2 1
如果有错误, 请留言. 我认为很正常, 是人都会犯错. 谢谢 !!!