工作也不想做,博客也不想写QAQ又是一个难熬的下午……
这个月的leetcode每日一题落下了好多,主要是动态规划我真不会,看题解基本也想不明白,DP我的一生之敌(x_x)
前言
这里要介绍一下顺序容器和关联容器的区别。顺序容器就是按照元素在容器中的位置,来进行保存和访问,例如vector、deque、list、forward_list、array、string,它们的共同特点是可以快速顺序访问元素;而关联容器中的元素按照关键字来进行保存和访问,例如set和map,因此它们不支持位置相关的操作,但是支持高效的关键字查找和访问。
一、集合是什么?
这里的集合和数学上的集合概念差不多,集合的主要特点有确定性(一个元素只能属于或不属于一个集合),互异性(即任意两个元素互不相同),和无序性(元素之间是无序的)。
而set数据结构的两大特点是
- set内部元素自动排序
- set内部元素唯一,无重复元素
要注意的是这里的排序是指,在set的内部是按元素值大小进行排序的,与元素的添加顺序无关。
二、定义和初始化
*注意:在使用时需要带头文件#include<set>
set<int> s;
set<int> s {
1,2,3,4,5};
set<int> s(s1); //拷贝构造
set<int> s(v.begin(), v.end()); //v可以是同类型一维数组
三、读取数据
前面提到,集合不支持按照位置访问元素,所以一般可以这样读取集合内全部元素
set<int> s {
1,3,2,5,4};
for(int i:s)
cout