前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【C++】STL 容器 - set 集合容器 ③ ( set 集合容器常用 api 简介 | 删除元素 | 删除指定值的元素 | 删除指定迭代器位置元素 | 删除指定迭代器范围元素 )

【C++】STL 容器 - set 集合容器 ③ ( set 集合容器常用 api 简介 | 删除元素 | 删除指定值的元素 | 删除指定迭代器位置元素 | 删除指定迭代器范围元素 )

作者头像
韩曙亮
发布2023-12-29 09:56:33
3120
发布2023-12-29 09:56:33
举报
文章目录
  • 一、删除元素
    • 1、删除指定值的元素 - erase 函数
    • 2、删除指定迭代器位置的元素 - erase 函数
    • 3、删除指定迭代器范围的元素 - erase 函数
    • 4、删除集合中的所有元素 - clear 函数

一、删除元素


1、删除指定值的元素 - erase 函数

在 C++ 语言的 STL 标准模板库 中 , set 集合容器 是一个有序的集合 , 存储的元素值都是唯一的 , 不重复的 ;

调用 set 集合容器的 erase 函数 , 可以删除 集合容器 中指定值 的元素 ;

上述 set#erase 函数原型如下 :

代码语言:javascript
复制
size_type erase (const key_type& k);
  • 参数解析 :
    • key_type 是 set 中元素的类型 ;
    • k 是要删除的元素的键 ;
  • 返回值解析 : 返回值是一个 size_type , 表示被删除的元素数量 ;
    • 在 set 集合容器中返回值肯定是 0 或 1 ;
    • 在 multiset 集合中 , 返回值可能大于 1 ;
  • 使用示例 :
代码语言:javascript
复制
	// set 集合容器
	// 初始化列表中的顺序会自动排序
	set<int> se{ 9, 5, 7 };

	// 删除元素 7
	se.erase(7);

代码示例 :

代码语言:javascript
复制
#include "iostream"
using namespace std;
#include "set"

// 声明遍历打印 set 集合容器的函数
void printS(set<int>& se);

int main() {

	// set 集合容器
	// 初始化列表中的顺序会自动排序
	set<int> se{ 9, 5, 7 };

	// 删除元素 7
	se.erase(7);

	// 打印 set 集合容器
	printS(se);

	// 控制台暂停 , 按任意键继续向后执行
	system("pause");

	return 0;
};

// 遍历打印 set 集合容器元素
void printS(set<int>& se) {
	// 遍历 set 集合容器
	for (set<int>::iterator it = se.begin(); it != se.end(); it++)
	{
		cout << *it << " ";
	}
	// 回车换行
	cout << endl;
}

执行结果 : 在代码中 元素 7 被删除了 , 只打印出了 5 , 9 两个元素 ;

5 9 Press any key to continue . . .

在这里插入图片描述
在这里插入图片描述

2、删除指定迭代器位置的元素 - erase 函数

set#erase 函数 还可以传入一个 指向指定元素位置的 迭代器 对象 , 作为参数 , 删除该迭代器指向的元素 ;

函数原型如下 :

代码语言:javascript
复制
iterator erase (iterator position);
  • 参数解析 : position 参数是一个指向要删除元素的迭代器 ;
  • 返回值解析 : 该函数的返回值是一个迭代器 , 指向被删除元素之后的下一个元素 ;
  • 使用示例 : 在下面的示例中 , 删除了集合容器中的第二个元素 ;
代码语言:javascript
复制
	// set 集合容器
	// 初始化列表中的顺序会自动排序
	set<int> se{ 9, 5, 7 };

	// 删除集合容器中第二个元素
	se.erase(++se.begin());

完整代码示例 :

代码语言:javascript
复制
#include "iostream"
using namespace std;
#include "set"

// 声明遍历打印 set 集合容器的函数
void printS(set<int>& se);

int main() {

	// set 集合容器
	// 初始化列表中的顺序会自动排序
	set<int> se{ 9, 5, 7 };

	// 打印 set 集合容器
	printS(se);

	// 删除集合容器中第二个元素
	se.erase(++se.begin());

	// 打印 set 集合容器
	printS(se);

	// 控制台暂停 , 按任意键继续向后执行
	system("pause");

	return 0;
};

// 遍历打印 set 集合容器元素
void printS(set<int>& se) {
	// 遍历 set 集合容器
	for (set<int>::iterator it = se.begin(); it != se.end(); it++)
	{
		cout << *it << " ";
	}
	// 回车换行
	cout << endl;
}

执行结果 :

5 7 9 5 9 Press any key to continue . . .

在这里插入图片描述
在这里插入图片描述

3、删除指定迭代器范围的元素 - erase 函数

调用 set#erase 函数 , 可以传入两个迭代器参数 , 这两个迭代器划定了本集合容器的一个范围 , 执行该函数可删除该范围的所有元素 ;

函数原型如下 :

代码语言:javascript
复制
iterator erase (iterator first, iterator last);
  • 参数解析 : first 和 last 是要删除元素范围的迭代器 ;
  • 返回值解析 : 返回值是一个迭代器 , 指向被删除范围之后的下一个元素 ;
  • 使用示例 : 下面的代码 , 删除集合容器中第二个元素和第三个元素 ;
代码语言:javascript
复制
	// set 集合容器
	// 初始化列表中的顺序会自动排序
	set<int> se{ 9, 5, 2, 7 };

	// 删除集合容器中第二个元素和第三个元素
	se.erase(++se.begin(), --se.end());

完整代码示例 :

代码语言:javascript
复制
#include "iostream"
using namespace std;
#include "set"

// 声明遍历打印 set 集合容器的函数
void printS(set<int>& se);

int main() {

	// set 集合容器
	// 初始化列表中的顺序会自动排序
	set<int> se{ 9, 5, 2, 7 };

	// 打印 set 集合容器
	printS(se);

	// 删除集合容器中第二个元素和第三个元素
	se.erase(++se.begin(), --se.end());

	// 打印 set 集合容器
	printS(se);

	// 控制台暂停 , 按任意键继续向后执行
	system("pause");

	return 0;
};

// 遍历打印 set 集合容器元素
void printS(set<int>& se) {
	// 遍历 set 集合容器
	for (set<int>::iterator it = se.begin(); it != se.end(); it++)
	{
		cout << *it << " ";
	}
	// 回车换行
	cout << endl;
}

执行结果 :

2 5 7 9 2 9 Press any key to continue . . .

在这里插入图片描述
在这里插入图片描述

4、删除集合中的所有元素 - clear 函数

调用 set 集合容器的 clear 函数 , 可以删除容器中的所有元素 ;

函数原型如下 :

代码语言:javascript
复制
void clear();

该函数没有参数和返回值 , 使用示例如下 :

代码语言:javascript
复制
	// set 集合容器
	// 初始化列表中的顺序会自动排序
	set<int> se{ 9, 5, 2, 7 };

	// 删除集合容器中所有元素
	se.clear();

完整代码示例 :

代码语言:javascript
复制
#include "iostream"
using namespace std;
#include "set"

// 声明遍历打印 set 集合容器的函数
void printS(set<int>& se);

int main() {

	// set 集合容器
	// 初始化列表中的顺序会自动排序
	set<int> se{ 9, 5, 2, 7 };

	// 打印 set 集合容器
	printS(se);

	// 删除集合容器中所有元素
	se.clear();

	// 打印 set 集合容器
	printS(se);

	// 控制台暂停 , 按任意键继续向后执行
	system("pause");

	return 0;
};

// 遍历打印 set 集合容器元素
void printS(set<int>& se) {
	// 遍历 set 集合容器
	for (set<int>::iterator it = se.begin(); it != se.end(); it++)
	{
		cout << *it << " ";
	}
	// 回车换行
	cout << endl;
}

执行结果 :

代码语言:javascript
复制
2 5 7 9

Press any key to continue . . .
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、删除元素
    • 1、删除指定值的元素 - erase 函数
      • 2、删除指定迭代器位置的元素 - erase 函数
        • 3、删除指定迭代器范围的元素 - erase 函数
          • 4、删除集合中的所有元素 - clear 函数
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档