21xrx.com
2024-11-22 12:57:12 Friday
登录
文章检索 我的文章 写文章
C++中的set函数详解
2023-06-27 07:24:01 深夜i     --     --
C++ set函数 详解

在C++中,set是一个非常有用的函数,它可以帮助我们快速地实现去重、排序、查找等操作。在这篇文章中,我们将详细解析set的用法和原理,帮助大家更好地掌握这个函数。

set的定义和用法

set是C++标准库中的一个容器类,它可以存储一组特定类型的元素,并且保证元素的唯一性和有序性。set是一个自平衡二叉搜索树的结构,它的元素按照从小到大的顺序进行排列,每个元素只有一份,不允许重复。

set的定义方式非常简单,我们可以使用以下语句来定义一个set变量:


set<int> s; //定义一个int类型的set

set的常用操作

set的常用操作包括插入、删除、查找、遍历等,下面我们逐一解析。

1. 插入元素

我们可以使用insert函数来向set中插入元素,insert函数有两种形式,分别为单个元素插入和范围插入,具体用法如下:


set<int> s;

s.insert(1);  //插入单个元素

s.insert(2);

s.insert(3);

vector<int> v = 5;

s.insert(v.begin(), v.end());  //范围插入

2. 删除元素

我们可以使用erase函数来删除set中的元素,erase函数也有两种形式,分别为单个元素删除和范围删除,具体用法如下:


set<int> s;

s.insert(1);

s.insert(2);

s.insert(3);

s.erase(2);   //删除单个元素

s.erase(s.begin(), s.end());  //范围删除,删除整个set

3. 查找元素

我们可以使用find函数来在set中查找元素,如果元素存在就返回指向该元素的迭代器,否则返回end()。


set<int> s;

s.insert(1);

s.insert(2);

s.insert(3);

auto it = s.find(2);  //查找元素2

if (it != s.end())

  cout << "元素存在" << endl;

else

  cout << "元素不存在" << endl;

4. 遍历元素

我们可以使用迭代器来遍历set中的元素,具体用法如下:


set<int> s;

s.insert(1);

s.insert(2);

s.insert(3);

for (auto it = s.begin(); it != s.end(); it++) {

  cout << *it << " ";

}

cout << endl;

set的常用属性和方法

set还有一些常用的属性和方法,我们在这里介绍一下:

1. size():返回set中元素的个数。

2. empty():如果set为空,则返回true,否则返回false。

3. clear():清空set中的所有元素。

4. count():返回set中等于某个值的元素个数,因为set的元素只有一份,所以返回值只能是0或1。

5. lower_bound()和upper_bound():这两个函数用于查找大于等于和大于某个值的第一个元素,如果查找不到则返回end()。

总结

set是C++中非常实用的一个函数,在实际编程中也经常用到,我们需要注意的是,set的插入和删除操作会重新平衡set的二叉树结构,因此比较耗时。当我们需要频繁插入和删除元素时,可以考虑使用unordered_set函数,它的插入和删除操作比set更快速,但是无法保证元素的有序性。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复