网站开发设计的阶段,重庆专业做淘宝网站,响应式网站建设源码,嵌入式软件开发简历Set常用用法 2013-04-22 19:24 86508人阅读 评论(1) 收藏 举报分类#xff1a;CPlus#xff08;54#xff09; set集合容器#xff1a;实现了红黑树的平衡二叉检索树的数据结构#xff0c;插入元素时#xff0c;它会自动调整二叉树的排列#xff0c;把元素放到适当的位置… Set常用用法 2013-04-22 19:24 86508人阅读 评论(1) 收藏 举报 分类 CPlus54 set集合容器实现了红黑树的平衡二叉检索树的数据结构插入元素时它会自动调整二叉树的排列把元素放到适当的位置以保证每个子树根节点键值大于左子树所有节点的键值小于右子树所有节点的键值另外还得保证根节点左子树的高度与右子树高度相等。 平衡二叉检索树使用中序遍历算法检索效率高于vector、deque和list等容器另外使用中序遍历可将键值按照从小到大遍历出来。 构造set集合主要目的是为了快速检索不可直接去修改键值。 常用操作 1.元素插入insert() 2.中序遍历类似vector遍历用迭代器 3.反向遍历利用反向迭代器reverse_iterator。 例 setint s; ...... setint::reverse_iterator rit; for(rits.rbegin();rit!s.rend();rit) 4.元素删除与插入一样可以高效的删除并自动调整使红黑树平衡。 setint s; s.erase(2); //删除键值为2的元素 s.clear(); 5.元素检索find()若找到返回该键值迭代器的位置否则返回最后一个元素后面一个位置。 setint s; setint::iterator it; its.find(5); //查找键值为5的元素 if(it!s.end()) //找到 cout*itendl; else //未找到 cout未找到; 6.自定义比较函数 (1)元素不是结构体 例 //自定义比较函数myComp,重载“”操作符 struct myComp { bool operator()(const your_type a,const your_type b) [ return a.data-b.data0; } } setint,myComps; ...... setint,myComp::iterator it; (2)如果元素是结构体可以直接将比较函数写在结构体内。 例 struct Info { string name; float score; //重载“”操作符自定义排序规则 bool operator (const Info a) const { //按score从大到小排列 return a.scorescore; } } setInfo s; ...... setInfo::iterator it;c stl集合set介绍 c stl集合(Set)是一种包含已排序对象的关联容器。set/multiset会根据待定的排序准则自动将元素排序。两者不同在于前者不允许元素重复而后者允许。1) 不能直接改变元素值因为那样会打乱原... c stl集合set介绍 c stl集合(Set)是一种包含已排序对象的关联容器。set/multiset会根据待定的排序准则自动将元素排序。两者不同在于前者不允许元素重复而后者允许。 1) 不能直接改变元素值因为那样会打乱原本正确的顺序要改变元素值必须先删除旧元素则插入新元素 2) 不提供直接存取元素的任何操作函数只能通过迭代器进行间接存取而且从迭代器角度来看元素值是常数 3) 元素比较动作只能用于型别相同的容器(即元素和排序准则必须相同) set模板原型//Key为元素(键值)类型 template class Key, class ComparelessKey, class AllocSTL_DEFAULT_ALLOCATOR(Key) 从原型可以看出可以看出比较函数对象及内存分配器采用的是默认参数因此如果未指定它们将采用系统默认方式。 set的各成员函数列表如下: c stl容器set成员函数:begin()--返回指向第一个元素的迭代器 c stl容器set成员函数:clear()--清除所有元素 c stl容器set成员函数:count()--返回某个值元素的个数 c stl容器set成员函数:empty()--如果集合为空返回true c stl容器set成员函数:end()--返回指向最后一个元素的迭代器 c stl容器set成员函数:equal_range()--返回集合中与给定值相等的上下限的两个迭代器 c stl容器set成员函数:erase()--删除集合中的元素 c stl容器set成员函数:find()--返回一个指向被查找到元素的迭代器 c stl容器set成员函数:get_allocator()--返回集合的分配器 c stl容器set成员函数:insert()--在集合中插入元素 c stl容器set成员函数:lower_bound()--返回指向大于或等于某值的第一个元素的迭代器 c stl容器set成员函数:key_comp()--返回一个用于元素间值比较的函数 c stl容器set成员函数:max_size()--返回集合能容纳的元素的最大限值 c stl容器set成员函数:rbegin()--返回指向集合中最后一个元素的反向迭代器 c stl容器set成员函数:rend()--返回指向集合中第一个元素的反向迭代器 c stl容器set成员函数:size()--集合中元素的数目 c stl容器set成员函数:swap()--交换两个集合变量 c stl容器set成员函数:upper_bound()--返回大于某个值元素的迭代器 c stl容器set成员函数:value_comp()--返回一个用于比较元素间的值的函数 c stl集合set插入,遍历用法举例 #includeiostream
#includeset
using namespace std;
//set插入元素操作
int main()
{ //定义一个int型集合对象s,当前没有任何元素.由www.169it.com搜集整理setint s; s.insert(8); //第一次插入8可以插入 s.insert(1); s.insert(12); s.insert(6); s.insert(8); //第二次插入8重复元素不会插入 setint::iterator it; //定义前向迭代器 //中序遍历集合中的所有元素 for(its.begin();it!s.end();it) cout*itendl; system(pause); return 0;
}