Set 使用总结

#include
#include
#include
#include

using namespace std;
int p[10001];
int t[10001];
//set基本知识
int set01()
{
	set s;
	s.insert(1);
	s.insert(2);
	s.insert(3);
	s.insert(1);
	cout << "set 的 size 值为 :" << s.size() << endl;
	cout << "set 的 maxsize的值为 :" << s.max_size() << endl;
	cout << "set 中的第一个元素是 :" << *s.begin() << endl;
	cout << "set 中的最后一个元素是:" << *(--s.end()) << endl;
	s.clear();
	if (s.empty())
	{
		cout << "set 为空 !!!" << endl;
	}
	cout << "set 的 size 值为 :" << s.size() << endl;
	cout << "set 的 maxsize的值为 :" << s.max_size() << endl;
	return 0;
}

//count方法的作用
int set02()
{
	set st;
	st.insert(1);
	st.insert(2);
	st.insert(3);
	st.insert(1);

	cout << "1 个数为" << st.count(1) << endl;
	cout << "2 个数为" << st.count(2) << endl;
	cout << "5 个数为" << st.count(5) << endl;

	return 0;
	//总结count方法可以检测在set中某个元素是否存在  
	//因为set每个元素最多存在一次,所以显得这个没有作用,
	//我们暂且拿它判断一个元素是否存在
}

//equal_range的作用  pair类型的对象 第一个对应大于等于指定值的迭代器 第二个返回大于val的迭代器
int set03()
{
	set s;
	set::iterator iter;
	for (int i = 1; i <= 5; ++i)
	{
		s.insert(i);
	}
	for (iter = s.begin(); iter != s.end(); ++iter)
	{
		cout << *iter << " ";
	}
	cout << endl;
	pair::const_iterator, set::const_iterator> pr;
	pr = s.equal_range(3);
	cout << "第一个大于等于 3 的数是 :" << *pr.first << endl;
	cout << "第一个大于 3的数是 : " << *pr.second << endl;
	return 0;
}
//erase的使用 三种 1,删除指定迭代器所指向的值,2,删除迭代器指定的范围3,删除指定值
int set04()
{
	set s;
	set::const_iterator iter;
	set::iterator first;
	set::iterator second;
	for (int i = 1; i <= 10; ++i)
	{
		s.insert(i);
	}
	//第一种删除
	s.erase(s.begin());
	//第二种删除
	first = s.begin();
	second = s.begin();
	second++;
	second++;
	s.erase(first, second);
	//第三种删除
	s.erase(8);
	cout << "删除后 set 中元素是 :";
	for (iter = s.begin(); iter != s.end(); ++iter)
	{
		cout << *iter << " ";
	}
	cout << endl;
	return 0;
}
//关于insert的使用  返回值是一个pair的对象::iterator , bool>
//插入成功返回对应的迭代器,bool为true  失败返回 .end() bool返回为false
int set05()
{
	int a[] = { 1,2,3 };
	set s;
	set::iterator iter;
	s.insert(a, a + 3);
	for (iter = s.begin(); iter != s.end(); ++iter)
	{
		cout << *iter << " ";
	}
	cout << endl;
	pair::iterator, bool> pr;
	pr = s.insert(5);
	if (pr.second)
	{
		cout << *pr.first << endl;
	}
	pr = s.insert(1);
	if (!pr.second)
		cout << "当前set中插入5失败" << endl;
	return 0;
}

//关于lower_bound 第一个大于等于key_vale 
//和 upper_bound 第一个一个大于 key_val
int set06()
{
	set myset;
	for (int i = 1; i < 10; i++) myset.insert(i * 10); // 10 20 30 40 50 60 70 80 90

	auto itlow = myset.lower_bound(30);                //       ^
	auto itup = myset.upper_bound(60);





	int a[] = { 1,5,7,9,4 };
	set st;
	st.insert(a, a + 5);

	auto it = st.lower_bound(6);
	cout << *it << endl;
	it = st.upper_bound(6);
	cout << *it << endl;
	return 0;
}
int main()
{
	
	set06();
	

}

 

你可能感兴趣的:(C++)