set(c++)
set(c++)
在C++中,set
是一个标准库容器,属于 std
命名空间,通常用于存储唯一的元素,并自动按照升序或自定义的顺序排序。它的底层实现通常基于红黑树(或类似的平衡二叉树)。set
中的元素是唯一的,并且不允许修改(即元素不可重复插入和修改)。以下是常用的 set
方法及其详细解释:
1. insert()
insert()
用于向 set
中插入元素。如果元素已经存在,insert()
不会插入新元素,并且返回一个指示插入结果的对(iterator, bool
)。
1 | std::set<int> mySet; |
2. erase()
erase()
用于删除一个指定的元素。它可以接受一个元素值或一个迭代器作为参数。
- 通过元素删除:删除指定的元素。
- 通过迭代器删除:删除指定位置的元素。
1 | std::set<int> mySet = {10, 20, 30}; |
3. find()
find()
用于查找 set
中是否包含某个元素。返回一个指向该元素的迭代器,如果找不到则返回 set::end()
。
1 | std::set<int> mySet = {10, 20, 30}; |
4. count()
count()
返回指定元素在 set
中的出现次数。由于 set
中的元素唯一,因此返回值只能是 0 或 1。
1 | std::set<int> mySet = {10, 20, 30}; |
5. empty()
empty()
用于检查 set
是否为空。如果为空,返回 true
;否则返回 false
。
1 | std::set<int> mySet; |
6. size()
size()
返回 set
中的元素个数。
1 | std::set<int> mySet = {10, 20, 30}; |
7. clear()
clear()
清空 set
中的所有元素。
1 | std::set<int> mySet = {10, 20, 30}; |
8. lower_bound()
和 upper_bound()c++
lower_bound()
返回指向第一个不小于给定值的元素的迭代器。upper_bound()
返回指向第一个大于给定值的元素的迭代器。
这两个方法常用于区间查找。
1 | std::set<int> mySet = {10, 20, 30, 40}; |
9. reverse_iterator
和 rbegin()
, rend()
set
支持反向迭代器,可以通过 rbegin()
和 rend()
来获取反向迭代器,便于逆序遍历。
1 | std::set<int> mySet = {10, 20, 30}; |
10. swap()
swap()
用于交换两个 set
容器的内容。
1 | std::set<int> set1 = {10, 20, 30}; |
11. equal_range()
equal_range()
返回一个包含两个迭代器的对,第一个是指向第一个不小于给定值的元素,第二个是指向第一个大于给定值的元素。
1 | std::set<int> mySet = {10, 20, 30, 40}; |
12. begin()
和 end()
begin()
返回指向set
中第一个元素的迭代器。end()
返回指向set
末尾元素的迭代器,指向的是一个虚拟元素,比最后一个元素的后一个位置。
1 | std::set<int> mySet = {10, 20, 30}; |
总结
set
是一个非常强大的容器,提供了自动排序、唯一性保证和高效的查找、插入、删除操作。使用这些方法,能够高效地管理和操作一组有序的元素。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 寻觅~流光!
评论