STL中set用法详解.pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
STL中的`set`是一个标准关联容器,它主要用于存储唯一且有序的元素。这个容器的实现基于红黑树,这是一类自平衡的二叉搜索树,因此在插入、删除和查找操作上具有较高的效率。红黑树的特性使得元素在set中的插入和删除操作时间复杂度通常为O(log n),其中n是元素的数量。 `set`的基本用法包括: 1. **插入元素**:使用`insert()`函数插入元素。例如,`eg1.insert(1)`将1插入到set`eg1`中。如果尝试插入已存在的元素,`set`会忽略该元素,保持元素唯一性。 2. **遍历元素**:可以使用迭代器`begin()`和`end()`来遍历`set`中的所有元素。例如,`for(set<int>::iterator set_iter=eg1.begin(); set_iter != eg1.end(); set_iter++)`用于循环输出`eg1`中的所有元素。 3. **查询元素**:`find()`函数用于查找特定元素。如`eg1.find(200)`返回一个迭代器,指向200在set中的位置,如果不存在,则返回`end()`。 4. **获取元素数量**:通过调用`size()`函数可以获取set中当前元素的个数。 5. **集合操作**: - **并集**:使用`set_union()`函数可以合并两个set的所有元素,结果存放在第三个set中。例如,`set_union(eg1.begin(), eg1.end(), eg2.begin(), eg2.end(), insert_iterator<set<int>>(eg3, eg3.begin()))`。 - **交集**:`set_intersection()`函数用于找出两个set共有的元素。使用前,接收结果的set应先调用`clear()`清空。如`set_intersection(eg1.begin(), eg1.end(), eg2.begin(), eg2.end(), insert_iterator<set<int>>(eg3, eg3.begin()))`。 - **差集**:`set_difference()`函数返回第一个set中但不在第二个set中的元素。同样需要清空接收结果的set。如`set_difference(eg1.begin(), eg1.end(), eg2.begin(), eg2.end(), insert_iterator<set<int>>(eg3, eg3.begin()))`。 - **对称差集**:`set_symmetric_difference()`计算两个set中互不相同的元素。即A中有但B中没有,以及B中有但A中没有的元素。例如,如果A和B是两个set,`set_symmetric_difference(A.begin(), A.end(), B.begin(), B.end(), inserter(C, C.begin()))`将返回A和B的对称差集C。 这些集合操作返回的结果通常需要通过`insert_iterator`插入到一个新的set中,或者使用`copy()`函数配合`ostream_iterator`将其输出到控制台。 在实际编程中,`set`常用于存储不重复的元素,并且提供快速查找和集合操作的能力,尤其适用于需要进行集合运算的场景。`multiset`是`set`的一个变种,允许元素重复,但在其他方面与`set`类似。
- 粉丝: 6876
- 资源: 3万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助