首页 > 编程语言 >【C++】STL 容器 - set 集合容器 ② ( set 集合容器常用 api 简介 | 使用迭代器进行正向迭代与反向迭代 | 集合容器插入元素 | 插入单个元素 | 插入多个元素 )

【C++】STL 容器 - set 集合容器 ② ( set 集合容器常用 api 简介 | 使用迭代器进行正向迭代与反向迭代 | 集合容器插入元素 | 插入单个元素 | 插入多个元素 )

时间:2024-01-02 12:06:48浏览次数:32  
标签:容器 set 迭代 insert 元素 插入 se



文章目录

  • 一、set 集合容器遍历
  • 1、使用迭代器进行正向迭代与反向迭代
  • 2、代码示例
  • 二、set 集合容器插入元素
  • 1、插入单个元素 - insert 函数
  • 2、插入多个元素 - insert 函数
  • 3、插入指定迭代器范围的元素 - insert 函数








一、set 集合容器遍历



1、使用迭代器进行正向迭代与反向迭代



std::set 集合容器 提供了 begin、end、rbegin 和 rend 这几个成员函数,用于 获取 迭代访问链表中的元素 的 迭代器 , 函数原型如下 :

  • 获取首元素迭代器 : 返回一个迭代器 , 指向集合的第一个元素 ;
iterator begin();  
const_iterator begin() const;
  • 获取尾元素之后的迭代器 : 返回一个迭代器 , 指向集合的尾部 , 该尾部指的是 超出 尾元素 的位置 , 不是最后一个元素 , 是最后一个元素后面的位置 , 无法获取值 ;
iterator end();  
const_iterator end() const;
  • 获取指向尾元素的反向迭代器 : 该函数返回一个反向迭代器 , 指向集合容器的最后一个元素 ; 如果集合容器为空 , 则此操作未定义 ; 反向迭代器从集合的尾部向头部移动 ;
  • 获取指向首元素之前的反向迭代器 : 返回一个反向迭代器 , 指向集合的 超出头部 ”的位置 , 即第一个元素的前一个位置 ; 该迭代器 它用于与 rbegin 一起实现完整的逆向迭代 ;
reverse_iterator rend();  
const_reverse_iterator rend() const;

迭代器的位置如下图所示 :

【C++】STL 容器 - set 集合容器 ② ( set 集合容器常用 api 简介 | 使用迭代器进行正向迭代与反向迭代 | 集合容器插入元素 | 插入单个元素 | 插入多个元素 )_STL

  • 正向迭代示例 :
// 遍历 set 集合容器 , 正向迭代
	for (set<int>::iterator it = se.begin(); it != se.end(); it++)
	{
		cout << *it << " ";
	}
	// 回车换行
	cout << endl;
  • 反向迭代示例 :
// 遍历 set 集合容器 , 反向迭代
	for (set<int>::reverse_iterator rit = se.rbegin(); rit != se.rend(); rit++)
	{
		cout << *rit << " ";
	}
	// 回车换行
	cout << endl;



2、代码示例



代码示例 :

#include "iostream"
using namespace std;
#include "set"
#include "vector"

int main() {

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

	// 遍历 set 集合容器 , 正向迭代
	for (set<int>::iterator it = se.begin(); it != se.end(); it++)
	{
		cout << *it << " ";
	}
	// 回车换行
	cout << endl;

	// 遍历 set 集合容器 , 反向迭代
	for (set<int>::reverse_iterator rit = se.rbegin(); rit != se.rend(); rit++)
	{
		cout << *rit << " ";
	}
	// 回车换行
	cout << endl;


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

	return 0;
};

执行结果 :

5 7 9
9 7 5
请按任意键继续. . .

【C++】STL 容器 - set 集合容器 ② ( set 集合容器常用 api 简介 | 使用迭代器进行正向迭代与反向迭代 | 集合容器插入元素 | 插入单个元素 | 插入多个元素 )_开发语言_02






二、set 集合容器插入元素



1、插入单个元素 - insert 函数



在 C++ 的 标准模板库 ( STL , Standared Template Library ) 中 , set 容器是一个有序的集合 , 其中包含唯一的元素 ;

调用 set 容器的 insert 函数用于向集合中插入元素 , 插入元素时会自动排序 ;

set#insert 函数原型 :

void insert (const value_type& val);
  • val 参数 : value_type 是元素类型 , val 是要插入的元素引用 ;
  • 使用示例 :
// set 集合容器
	// 初始化列表中的顺序会自动排序
	set<int> se{9, 5, 7};

	// 向容器中插入元素
	se.insert(3);



代码示例 :

#include "iostream"
using namespace std;
#include "set"

int main() {

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

	// 向容器中插入元素
	se.insert(3);
	se.insert(1);
	se.insert(2);

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


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

	return 0;
};

执行结果 :

1 2 3 5 7 9
请按任意键继续. . .

【C++】STL 容器 - set 集合容器 ② ( set 集合容器常用 api 简介 | 使用迭代器进行正向迭代与反向迭代 | 集合容器插入元素 | 插入单个元素 | 插入多个元素 )_STL_03



2、插入多个元素 - insert 函数



调用 set 集合容器的 insert 函数 , 传入一个初始化列表 , 如 {3, 1, 2} , 可以将多个元素插入到 set 集合容器中 ;

函数原型如下 : 使用初始化列表来插入多个元素

void insert (initializer_list<value_type> init);

插入多个元素时 , 会将多个元素与原有元素进行排序 ;

使用示例 :

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

	// 向容器中插入若干元素
	se.insert({3, 1, 2});



代码示例 :

#include "iostream"
using namespace std;
#include "set"
#include "vector"

int main() {

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

	// 向容器中插入若干元素
	se.insert({3, 1, 2});

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


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

	return 0;
};

执行结果 :

1 2 3 5 7 9
请按任意键继续. . .

【C++】STL 容器 - set 集合容器 ② ( set 集合容器常用 api 简介 | 使用迭代器进行正向迭代与反向迭代 | 集合容器插入元素 | 插入单个元素 | 插入多个元素 )_开发语言_04



3、插入指定迭代器范围的元素 - insert 函数



调用 set 容器的 insert 函数 , 传入 2 个迭代器对象 , 可以将另外一个容器指定范围的元素插入到 set 集合容器中 , 插入的多个元素会在 set 容器中自动排序 ;

被插入元素的 另外的集合 , 可以不是 set 集合 , 可以是 vector , deque 等容器 ;

set#insert 插入多个元素 函数原型 :

void insert (InputIt first, InputIt last);
  • 使用示例 :
// set 集合容器
	// 初始化列表中的顺序会自动排序
	set<int> se{9, 5, 7};

	// 要插入的容器元素
	vector<int> vec{ 3, 1, 2 };

	// 向容器中插入若干元素
	se.insert(vec.begin(), vec.end());



代码示例 :

#include "iostream"
using namespace std;
#include "set"
#include "vector"

int main() {

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

	// 要插入的容器元素
	vector<int> vec{ 3, 1, 2 };

	// 向容器中插入若干元素
	se.insert(vec.begin(), vec.end());

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


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

	return 0;
};

执行结果 :

1 2 3 5 7 9
请按任意键继续. . .

【C++】STL 容器 - set 集合容器 ② ( set 集合容器常用 api 简介 | 使用迭代器进行正向迭代与反向迭代 | 集合容器插入元素 | 插入单个元素 | 插入多个元素 )_set_05


标签:容器,set,迭代,insert,元素,插入,se
From: https://blog.51cto.com/u_14202100/9066895

相关文章