10018set03插入和删除

223 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第7天,点击查看活动详情

1.1 set插入和删除

功能描述:

  • set容器进行插入数据和删除数据

1.2 函数原型:

  • insert(elem); //在容器中插入元素。
  • clear(); //清除所有元素
  • erase(pos); //删除pos迭代器所指的元素,返回下一个元素的迭代器。
  • erase(beg, end); //删除区间[beg,end)的所有元素 ,返回下一个元素的迭代器。
  • erase(elem); //删除容器中值为elem的元素。

1.3 代码示例:

#include <set>

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

//插入和删除
void test01()
{
	set<int> s1;
	//插入
	s1.insert(10);
	s1.insert(30);
	s1.insert(20);
	s1.insert(40);
	printSet(s1);

	//删除
	s1.erase(s1.begin());
	printSet(s1);

	s1.erase(30);
	printSet(s1);

	//清空
	//s1.erase(s1.begin(), s1.end());
	s1.clear();
	printSet(s1);
}

int main() {

	test01();

	system("pause");

	return 0;
}

1.4 总结:

  • 插入 --- insert
  • 删除 --- erase
  • 清空 --- clear

1.5 set概述

1.set的作用
set就是集合的意思,集合的特点就是不会出现重复的内容。一般用来作查重或去重操作。 2.set的定义 set<储存的类型> 容器名 如: 储存int型的值 set s; 储存double型的值 set s; 储存string型的值 set s; 储存结构体或者类的值的值 set<结构体名> s;

set的一些基本的成员函数

**set的两种遍历方法**

迭代器iterator

set有一个很重要的特性,那就是自动升序排序,在很多场景可以方便使用,那么当需要降序排序的时候需要怎样呢?  

1、逆向思维
从end()-1到begin()遍历就是降序的了

2.rbegin()和rend()
逆向迭代器本来就是实现逆向迭代的功能的 auto用法,c++auto用法强大,当你无法确定变量的类型时,都可以用auto来代替,迭代器iterator很难记住,其实可以用auto来代替 对于set这个容器,存储的是自动排序的独特元素。也就是说,在这个容器中,所有的元素都是唯一的。

set的元素不像map那样可以同时拥有实值(value)和键值(key),set元素的键值就是实值,实值就是键值。set不允许两个元素有相同的键值。所以set可以理解成一个特殊的map,底层跟map一样用的也是红黑树,它的很多成员函数也跟map非常相似。

查找效率也和map一样,都是O(log n)。