STL----Set容器

Set

基本原理
将插入的值(第一个操作数)与树根(第二个操作数)(红黑树,二叉排序树)进行比较,如果返回值是true,则在左子树中进行插入
否则在右子树中进行插入。

Set容器的遍历
默认升序
要降序排序,可以通过以下方法实现
1、修改比较函数(默认less,改为greater)
2、重载 < 运算符
3、定义比较函数

默认升序:

#include <iostream>
#include <set>
using namespace std;
int main(){
	set<int> s;
    	set<int>::iterator ite;
    	s.insert(3);  s.insert(2);  s.insert(1);  s.insert(1);
    	for(ite=s.begin();ite!=s.end();ite++)
  		cout<<*ite<<"   ";
 	cout<<endl;
    	ite=s.begin();
 	while(p!=s.end()) {
  		cout<<*ite<<"   "; p++;
 	}
    	return 0;
}

修改比较函数(默认less,改为greater)

 set<int, greater<int> > s;
 set<int,greater<int> >::iterator iter;

重载 < 运算符

#include <iostream>
#include <set>
#include <iterator>
using namespace std;
class Integer{
    	int data;
    public:
    	Integer(int a=0)    {
        	data=a;
    	}
    	bool operator <(const Integer b) const {//语法要求必须重载成常成员函数
        	return data>b.data;
    	}
    	friend ostream & operator<<(ostream &out, Integer a)    {
        	out<<a.data;
        	return out;
    	}
};

int main(){
    	set<Integer> s;
    	set<Integer>::iterator ite;
    	Integer a(1),b(3);
    	s.insert(a);
    	s.insert(b);
    	for(ite=s.begin();ite!=s.end();ite++) {
        	cout<<*ite<<" ";
    	}
    	return 0;
}

定义比较函数

#include<iostream>
#include<set>
using namespace std;

struct mycomp{      //自定义比较函数,重载“()”操作符
 	bool operator() (const int &a, const int &b) {
  		return a > b;
 	}
};

int main(){
 	set<int, mycomp> s; //采用比较函数mycomp
 	s.insert(5); //第一次插入5,可以插入
 	s.insert(1);
 	s.insert(6);
 	s.insert(3);
 	s.insert(5); //第二次插入5,重复元素,不会插入
 	set<int,mycomp>::iterator it;
 	for(it = s.begin(); it != s.end(); it++)
  		cout << *it << " ";
 	cout << endl;
 	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值