C++中Set学习

本文通过实例介绍了C++中set容器的使用,包括如何初始化并自动排序,以及查找、插入、删除和查找特定范围的操作。重点展示了mycompare自定义比较器和find、lower_bound、upper_bound、equal_range等查找方法的应用。
摘要由CSDN通过智能技术生成

Hello, 大家好,我是爱吃香蕉的猴子,写写Set的例子


#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <set>
#include <list>
using namespace std;

class mycompare 
{
public:
	bool operator() (int v1, int v2) const {
		return v1 > v2;
	}
};

//set容器初始化
void test01()
{
	set<int, mycompare> s1;//自动进行排序 默认从小到大
	s1.insert(1);
	s1.insert(2);
	s1.insert(3);
	s1.insert(4);
	s1.insert(5);

	for (set<int>:: iterator it = s1.begin(); it != s1.end(); it ++) 
	{
		cout << *it << "";
	}
	cout << endl;
}

//查找
void test02()
{
	set<int> s1;
	s1.insert(7);
	s1.insert(6);
	s1.insert(5);
	s1.insert(4);
	s1.insert(3);
	s1.insert(2);
	s1.insert(1);

	set<int>::iterator ret = s1.find(14);
	if (ret == s1.end()) {
		cout << "没有找到" << endl;
	}
	else
	{
		cout << "ret:" << *ret << endl;
	}

	//找第一个大于等于key的元素
	ret = s1.lower_bound(2);
	if (ret == s1.end())
	{
		cout << "没有找到" << endl;
	}
	else
	{
		cout << "red:" << *ret << endl;
	}

	//找第一个大于等于key的值
	ret = s1.lower_bound(2);
	if (ret == s1.end())
	{
		cout << "没有找到" << endl;
	}
	else
	{
		cout << "ret:" << *ret << endl;
	}
	//equal_range 返回lower_bound和upper_bound值
	pair<set<int>::iterator, set<int>::iterator> myret = s1.equal_range(2);
	if (myret.first == s1.end())
	{
		cout << "没有找到" << endl;
	} 
	else
	{
		cout << "ret:" << *ret << endl;
	}


	if (myret.second == s1.end()) {
		cout << "没有找到!" << endl;
	}
	else {
		cout << "myret:" << *(myret.second) << endl;
	}
}

int main(void)
{
	//test01();
	test02();
}

/*
set构造函数
set<T> st;//set 默认构造函数: 
mulitset<T> mst; //multiset 默认构造函数: 
set(const set &st);//拷贝构造函数
*/

/*
set赋值
set& operator=(const set &st);//重载等号操作符 
swap(st);//交换两个集合容器
*/

/*
set 大小的操作
size();//返回容器中元素的数目 
empty();//判断容器是否为空
*/

/*
set插入和删除操作
insert(elem);//在容器中插入元素。
clear();//清除所有元素 
erase(pos);//删除 pos 迭代器所指的元素,返回下一个元素的迭代器。 
erase(beg, end);//删除区间[beg,end)的所有元素 ,返回下一个元素的迭代器。 
erase(elem);//删除容器中值为 elem 的元素。
*/

/*
set查找操作
find(key);//查找键 key 是否存在,若存在,返回该键的元素的迭代器;若不存在,返回 map.end();
lower_bound(keyElem);//返回第一个 key>=keyElem 元素的迭代器。
upper_bound(keyElem);//返回第一个 key>keyElem 元素的迭代器。
equal_range(keyElem);//返回容器中 key 与 keyElem 相等的上下限的两个迭代器。
*/
                                  Code的搬运工V1.0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值