自定义set的比较函数

#include "stdafx.h"
#include <set>
#include <iostream>
using namespace std;

//首先实例化comp aa; 然后aa(lhs, rhs)进行比较
struct comp
{
	bool operator ()(const int &a, const int &b)
	{
		return a>b;
	}
};

int main()
{
	set<int,comp> s;
	s.insert(5);
	s.insert(9);
	s.insert(6);
	s.insert(13);
	s.insert(1);
	set<int,comp>::iterator it;
	for(it = s.begin(); it != s.end(); it++)
		cout<<*it<<" ";
	cout<<endl;

	system("pause");
	return 0;
}

set以红黑树实现,会自动忽略插入的重复元素。

如果set元素类型本身为struct或class类型,那直接在struct或class中重载比较运算符即可

另,注意,在使用反向迭代器reverse_iterator时,要头尾的读取为rbegin()和rend(),而不再是begin()和end()


你可能感兴趣的:(自定义set的比较函数)