我是靠谱客的博主 寂寞红酒,最近开发中收集的这篇文章主要介绍二叉树----set集合容器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

set集合容器实现了红黑树(Red-Black Tree)的平衡二叉搜索树的数据结构,在插入元素时,它会自动调整二叉树的排列,把该元素放到适当的位置,以确保每个子树根节点的键值大于左子树所有节点的键值,而小于右子树所有检点的键值;另外,还得确保根节点左子树的高度与右子树的高度相等,这样,二叉树的高度最小,从而搜索速度最快。

set容器不会插入重复相同键值的元素,而采取忽略处理。下面网上找的一张set容器的图片


对于set容器中的键值,不可直接去修改。因为如果把容器中的一个键值修改了,set容器会根据新的键值去旋转子树,不断保持平衡。


而multiset多重集合容器与set一样,也是使用红黑树来组织元素数据,唯一不同的是,multiset允许重复的元素键值插入,而set则不允许。

下面是网上找的一张multiset多重集合容器图片



set、multiset容器的基本操作:

#include<set>

set<int> s;			//集合容器 
multiset<int> ms;	//多重集合容器 

/*插入元素n*/
s.insert(n);
ms.insert(n);

/*删除元素n*/
s.erase(n);
ms.erase(n);

/*查找元素n*/
s.find(n);
ms.erase(n);

/*清空容器*/
s.clear();
ms.clear();

/*返回容器个数*/
s.size();
ms.size(); 

元素的遍历用到迭代器(反向迭代器)遍历


嗯下面就是在VC中的测试:

#include<set>
#include<stdio.h>
using namespace std;
int main()
{
	int j;
	int ch;
	int sum;
	set<int> s;
	set<int>::iterator it;
	set<int>::reverse_iterator	rit;
	printf("请输入要插入元素个数:");
	scanf("%d",&sum);
	printf("请输入要插入的元素:");
	for(int i=0;i<sum;i++)
	{
		scanf("%d",&j);
		s.insert(j);
	}		 
	printf("*****************************n");
	printf("1、插入元素n2、删除元素n");
	printf("3、遍历元素n4、查找元素n");
	printf("5、清空元素n0、退出操作n");
	printf("*****************************n");
	while(scanf("%d",&ch)&&ch!=0)
	{
		if(ch==1){
			int n;
			printf("请输入插入的元素:");
			scanf("%d",&n);
			s.insert(n);
			printf("元素插入成功!n");
		}
		if(ch==2){
			int n;
			printf("请输入要删除的元素:");
			s.erase(n);
			printf("元素删除成功!n");		
		}
		if(ch==3){
			printf("元素的中序遍历:");
			for(it=s.begin();it!=s.end();it++)
			{
				printf("%d ",*it);
			}
			printf("n元素的反向遍历:");
			for(rit=s.rbegin();rit!=s.rend();rit++)
			{
				printf("%d ",*rit);
			}
			printf("n");
		}
		if(ch==4){
			int n;
			printf("请输入要查找的键值:");
			it=s.find(n);
			if(it!=s.end())	//找到
				printf("%d ",*it);
			else
				printf("没有找到!n"); 
		}
		if(ch==5){
			s.clear();
			printf("成功清空集合容器!n");
		}
	printf("*****************************n");
	}
	printf("成功退出操作!n");
	return 0;
}


最后

以上就是寂寞红酒为你收集整理的二叉树----set集合容器的全部内容,希望文章能够帮你解决二叉树----set集合容器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部