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