STL之set容器

STL set常见方法详解
STL中的容器set也是非常的重要啊,它的常用方法有哪些呢?请看以下代码分解!嘿嘿

#include<iostream>
#include<string>
#include<set>
using namespace std;
int main() {

	//本讲主要对C++STL中set的主要方法进行讲解
	//set是C++自带的容器库,它具有两个特点:
	//1.集合的元素都是排好序的
	//2.set中没有重复的元素

	//集合初始化
	set<int>s;

	//使用insert方法插入元素,并验证其有序性和不重复性
	for (int i = 0; i < 6; i++) {
		s.insert(i);//插入元素
	}
	s.insert(2);
	s.insert(3);//插入集合中已有的两个数,观察输出结果可知集合符合元素唯一性且按照升序排序
	set<int>::iterator iter1 = s.begin();
	for (; iter1 != s.end(); iter1++) {
		cout << *iter1 << " "; //输出集合中的元素序列
	}
	cout << endl;

	//利用size方法获得集合元素个数
	int num1 = s.size();
	cout << "集合中元素个数为" << num1 << endl;

	//用max_size方法获得集合中元素的最大个数
	int num2 = s.max_size();
	cout << "集合中元素的最大个数为:" << num2 << endl;

	//用erase方法删除迭代器指针it的值
	set<int>::iterator iter2 = s.begin();
	for (int i = 0; i < 2; i++){  //将迭代器向后移两位,即指向元素3;
		iter2++;
    }
	s.erase(iter2);//删除iter2指向的元素,这里指的是元素2
	set<int>::iterator iter3 = s.begin();
	for (; iter3 != s.end(); iter3++) {
		cout << *iter3 << " ";  //输出删除元素后的序列以验证是否删除成功
	}
	cout << endl;

	//利用find 方法查找集合中的元素
	set<int>::iterator iter4,iter5;
	iter4 = s.find(1);
	if (iter4 != s.end()) {  //判断元素1是否存在集合中
		cout << "元素1存在set中!" << endl;
	}
	else {
		cout << "元素1不存在于set中!" << endl;
	}
	iter5 = s.find(2);//判断元素2是否还在集合中
	if (iter5==s.end()) {
		cout << "元素2不在集合中!" << endl;
	}

	//利用empty方法判断该集合是否非空
	set<int>s1;//重新实例化以对比说明
	bool judge1 = s.empty();
	bool judge2 = s1.empty();

	if (judge1) { //s集合为空
		cout << "s集合为空!" << endl;
	}
	else {
		cout << "s集合不为空,且有" << s.size() << "个元素" << endl;
	}

	if (judge2) {  //集合s1为空
		cout << "s1集合为空!" << endl;
	}
	else {
		cout << "s1集合不为空,且元素个数为:" << s1.size() << endl;
	}

	//利用反向迭代器输出集合序列
	set<int>::iterator iter6 = s.cbegin();
	for (; iter6 != s.cend(); iter6++) {
		cout << *iter6 << " ";
	}
	cout << endl;

	//利用swap函数实现两个集合的交换
	cout << "交换前s中元素个数为:" << s.size() << endl;
	cout << "交换前s1中元素个数为:" << s1.size() << endl;
	s.swap(s1);
	int num3 = s.size();
	int num4 = s1.size();
	cout << "交换后两个集合中的元素分别为:" << endl;
	cout << "s集合中的元素为:" << num3 << endl;
	cout << "s1集合中的元素个数为:" << num4 << endl;
	//观察以上结果可知交换后,s和s1中元素全部交换
	//值得注意的是,这种交换是仅针对地址的交换,实际内容并么有交换
	//这就是高效的C++啊!!!

	//由于交换,s中元素个数变为0;因此利用clear方法对s1集合元素进行清空
	s1.clear();
	if (s1.size() == 0) {
		cout << "s1中的元素已经被清空!" << endl;
	}
	else {
		cout << "s1中元素没有被清空,出现错误!" << endl;
	}

	//恭喜你完成本小节的学习!祝贺你掌握了使用基本的set方法!
	//未来加油!!!
	
	return 0;
}

运行结果如下图所示:
在这里插入图片描述
冲!
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值