C++之标准库(STL)容器set的用法

文章目录

      • set介绍
      • set定义
      • set访问
        • 通过迭代器访问:
      • set常用函数用法
      • set用途

set介绍

  • set: 集合,STL容器之一,可以理解成一个内部自动有序且不含重复元素的容器。

  • 使用set前需要添加:

#include 
using namespace std;

set定义

set是一个模板类,所以使用前需要提前定义;
定义格式:

set<typename> st;   //typename代表集合中参数的类型

set访问

访问set中参数是处理set的最基本的操作;访问set中元素只能通过set迭代器来访问;

通过迭代器访问:

迭代器(iterator)理解为类似指针的东西,定义为:

set<typename>::iterator it;
  • it是set< typename>::iterator类型的变量,通过* it用来访问set里的元素。
  • 迭代器都支持支持自增自减,但只有vector和string支持加减整数的操作。因此,set只能通过迭代器的自增迭代去访问元素,不支持*(it + i)的访问方式。

假设现在有一个set容器st,那么,st.begin()和st.end()标志着迭代器的开头(首元素的地址)和结尾(尾元素地址的下一个地址)。

注:只有vector或string的容器,才能按下标访问 *(it + i)。

例1:访问迭代器中元素

#include 
using namespace std;
int main()
{
	int a = 2;
	int b = 1;
	int c = 2;
	int d = 5;
	int e = 9;
	int f = 2;

	set<int> s;
	s.insert(a);
	s.insert(b);
	s.insert(c);
	s.insert(d);
	s.insert(e);
	s.insert(f);

	cout << "size:" << s.size() << endl;
	
	set<int>::iterator it;
	for (it = s.begin(); it !=s.end();it++)
	{
		cout << "element:" << *it << endl;
	}


	return 0;
}

运行结果:

size:4
element:1
element:2
element:5
element:9

说明:由于set有对数据的去重性,所以以上例子中set中元素个数为4;以及对数据按升序排列的特性,所以以上例子中set中元素输出为升序;

set常用函数用法

  • insert()
    用法:insert(x)用来在set的里面添加新元素x,并自动增序排列和去重

  • find()
    用法:find(value)用来返回set中对应值为value的迭代器

  • erase()
    用法:删除单个元素
    erase(it)用来删除迭代器it处的元素,可以结合find函数使用
    erase(value)用来直接删除值为value的元素

  • 删除一个区间内的所有元素
    erase(first, last)用来删除迭代器[first, last)内的所有元素

  • size()
    size()用来获得set中的元素个数

  • clear()
    clear()用来将set中的所有元素清空

set用途

set最重要的作用就是:(1)自动去重;(2)并按升序排序

你可能感兴趣的:(C++,c++,算法,开发语言)