C++ set容器及其常见操作


前言

使用集合框架不仅能提高我们的代码开发效率,也能让我们在竞赛解题中如鱼得水。作为STL库中的一种常见容器,set能保证存入的数据是唯一的。为了能够更好的理解set容器,本文对set容器及其常见操作做了简单介绍。

提示:以下是本篇文章正文内容,下面案例可供参考

一、什么是set容器?

set容器是C++ 标准库里的一种集合框架,能保证输入其中的元素是独一无二的。

二、set容器的特征

set容器是一种实现了平衡二叉检索树的数据结构,因此set中的元素是有序的。

set容器的特征如下

特征解释
互异性set容器中没有重复的元素
有序性set容器中的元素是有序排列的

三、set容器的常见操作

set容器的常见操作如下

操作功能
insert(x)将元素x插入到set容器中
erase(x)将元素x从set容器中删除
clear()删除set容器中的所有元素
size()返回set容器中当前元素的个数
begin()返回set容器中第一个元素的地址
end()返回set容器中最后一个元素的地址

四、使用步骤

1.引入头文件

代码如下(示例):

#include<set> 
using namespace std;

2.set容器的定义

set<T> name; //定义的标准方式
T:容器的类型 如int,char
name:容器的名字

代码如下(示例):

set<int> s;//创建一个int类型的容器
set<char> sc;//创建一个char类型的容器

3.set的插入和删除

代码如下(示例):

set<int> s;
set<char> sc;
sc.insert('a');
s.insert(100);//插入元素100
s.insert(2);
s.insert(1);
s.insert(3);
s.erase(3);//删除元素3

4.set的遍历

set的遍历使用到iterator迭代子

代码如下(示例):

set<int> s;
s.insert(100);
s.insert(2);
s.insert(1);
s.insert(3);
s.erase(3);//删除元素3
set<int>::iterator it;//创建一个迭代子it
for(it=s.begin();it!=s.end();it++){
printf("%d\n",*it);//打印set中的元素

运行结果如下:
运行结果
从打印结果可以看出,set集合中的元素是有序的。

5.set.size()

size()用于返回set容器当前的元素个数

set<int> s;
s.insert(100);
s.insert(2);
s.insert(1);
s.insert(3);
printf("删除元素3前:%d\n",s.size());
s.erase(3);//删除元素3
printf("删除元素3后:%d\n",s.size());
set<int>::iterator it;//创建一个迭代子it
for(it=s.begin();it!=s.end();it++){
printf("%d\n",*it);//打印set中的元素

总结

以上就是今天要讲的内容,对set容器及其常见操作进行了简单的介绍,活用集合框架能够极大的提高我们的开发效率和解题速度。
  • 8
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++ STL库中的set容器是一个用于存储元素的关联容器,它的元素默认按照升序排列,并且保证元素的唯一性。set容器的基本操作包括: 1. 插入元素:使用insert()函数向set容器中插入元素。插入元素的时间复杂度为O(log n)。 ```c++ #include <iostream> #include <set> int main() { std::set<int> s; s.insert(3); s.insert(1); s.insert(4); s.insert(1); // 重复元素不会被插入 s.insert(5); for (auto x : s) { std::cout << x << " "; } std::cout << std::endl; return 0; } ``` 上述代码输出:1 3 4 5 2. 删除元素:使用erase()函数删除set容器中的元素,可以指定要删除的元素值,也可以指定一个迭代器范围。删除元素的时间复杂度为O(log n)。 ```c++ #include <iostream> #include <set> int main() { std::set<int> s{3, 1, 4, 1, 5}; s.erase(1); // 删除元素值为1的元素 for (auto x : s) { std::cout << x << " "; } std::cout << std::endl; return 0; } ``` 上述代码输出:3 4 5 3. 查找元素:使用find()函数和count()函数查找set容器中的元素,find()函数返回一个指向要查找的元素的迭代器,如果元素不存在,则返回end()迭代器。count()函数返回要查找的元素在set容器中出现的次数,因为set容器中的元素保证唯一性,所以count()函数的返回值只能是0或1。查找元素的时间复杂度为O(log n)。 ```c++ #include <iostream> #include <set> int main() { std::set<int> s{3, 1, 4, 1, 5}; auto it = s.find(4); if (it != s.end()) { std::cout << "4 is found" << std::endl; } else { std::cout << "4 is not found" << std::endl; } std::cout << "1 appears " << s.count(1) << " times" << std::endl; std::cout << "2 appears " << s.count(2) << " times" << std::endl; return 0; } ``` 上述代码输出:4 is found,1 appears 1 times,2 appears 0 times。 除了上述基本操作外,set容器还支持迭代器操作和比较操作。更详细的使用方法可以参考C++ STL库的set容器文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值