STL set详解
时间: 2024-06-16 19:05:31 浏览: 13
STL(Standard Template Library)是C++标准库中的一个重要组成部分,其中包含了一系列的容器、算法和函数模板,用于支持常见的数据结构和算法操作。其中,set是STL中的一个关联容器,它提供了一种有序、不重复的数据存储方式。
set容器内部的元素按照一定的规则进行排序,并且不允许重复元素存在。它基于红黑树(Red-Black Tree)实现,因此插入、删除和查找操作的时间复杂度都是O(logN)。
set容器提供了一系列的成员函数,包括插入元素、删除元素、查找元素等操作。此外,它还提供了一些特殊的操作,如合并两个set容器、求交集、求差集等。
使用set容器时,需要包含头文件<set>。下面是一些常用的set容器操作示例:
1. 插入元素:
set<int> mySet;
mySet.insert(10);
mySet.insert(20);
mySet.insert(30);
2. 删除元素:
mySet.erase(20);
3. 查找元素:
set<int>::iterator it = mySet.find(10);
if (it != mySet.end()) {
cout << "找到了元素:" << *it << endl;
}
4. 遍历元素:
for (int num : mySet) {
cout << num << " ";
}
cout << endl;
相关问题
C++ stl set
引用提供了一些使用set的常见操作和方法。如果要访问set中的最后一个元素,有几种方法可以实现。第一种方法是使用rbegin()函数,它返回一个指向set中最后一个元素的反向迭代器,然后可以使用*运算符来获取该元素的值。第二种方法是使用end()函数返回一个指向set末尾的迭代器,然后通过--运算符将迭代器移动到最后一个元素,再使用*运算符获取该元素的值。第三种方法是直接使用end()函数返回的迭代器,然后使用--运算符将迭代器移动到最后一个元素,再使用*运算符获取该元素的值。提供了一个重载<运算符的示例代码。在这个示例中,定义了一个结构体node,并在结构体中重载了<运算符。通过重载<运算符,我们可以自定义set中元素的比较规则。在main函数中,创建了一个set<node>类型的集合s,并插入了一些元素。通过遍历集合s,我们可以看到集合中的元素按照我们定义的比较规则进行排序。介绍了set中lower_bound和upper_bound函数的使用。lower_bound函数返回大于或等于给定值的第一个元素的迭代器,而upper_bound函数返回大于给定值的第一个元素的迭代器。在示例代码中,首先创建了一个set<int>类型的集合s,并插入了一些元素。然后使用lower_bound和upper_bound函数分别查找给定值的边界,并输出对应的元素值。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [C++ STL之set详解](https://blog.csdn.net/qq_50285142/article/details/122304728)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [【c++STL——第八讲】set系列 (常用知识点总结)](https://blog.csdn.net/m0_63233163/article/details/124645182)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
std::unordered_set 详解
std::unordered_set是C++ STL中的一个关联容器,它是一个无序的集合,其中的元素没有按照特定的顺序进行排列。std::unordered_set可以存储各种类型的元素,并且每个元素都是唯一的。它的内部实现是使用哈希表来存储元素,因此可以通过键值直接快速访问各个元素。
使用std::unordered_set时,需要提供一个哈希函数,用于计算元素的哈希值。默认情况下,std::unordered_set使用std::hash作为哈希函数,但也可以自定义哈希函数。同时,还需要提供一个相等比较函数,用于比较两个元素是否相等,默认情况下,std::unordered_set使用std::equal_to进行相等比较。
std::unordered_set提供了以下成员函数:
- insert:向集合中插入一个元素。
- erase:从集合中删除一个元素。
- size:返回集合中元素的个数。
- empty:判断集合是否为空。
- find:查找集合中是否存在某个元素。
- clear:清空集合中的所有元素。
使用std::unordered_set时,需要包含头文件<unordered_set>。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)