#include<iostream>
#include<algorithm>
#include<list>
#include<string>
#include<set>
using namespace std;
//使用set或者multiset的头文件都是se
//set的基本概念:
/*
Set的特性是。所有元素都会根据元素的键值自动被排序。(关联式容器自动排好序,序列式容器按插入顺序存放)
Set的元素不像map那样可以同时拥有实值和键值,set的元素即是键值又是实值。Set不允许两个元素有相同的键值。
我们可以通过set的迭代器改变set元素的值吗?
不行,因为set元素值就是其键值,关系到set元素的排序规则。如果任意改变set元素值,会严重破坏set组织。
换句话说,set的iterator是一种const_iterator.
set拥有和list某些相同的性质,当对容器中的元素进行插入操作或者删除操作的时候,操作之前所有的迭代器,
在操作完成之后依然有效,被删除的那个元素的迭代器必然是一个例外。
*/
//multiset容器基本概念:
/*
multiset特性及用法和set完全相同,唯一的差别在于它允许键值重复。
set和multiset的底层实现是红黑树,红黑树为平衡二叉树的一种。
*/
/*
set构造函数
set<T> st;//set默认构造函数:
mulitset<T> mst; //multiset默认构造函数:
set(const set &st);//拷贝构造函数
*/
/*
set赋值操作
set& operator=(const set &st);//重载等号操作符
swap(st);//交换两个集合容器
*/
/*
set插入和删除操作
insert(elem);//在容器中插入元素。
clear();//清除所有元素
erase(pos);//删除pos迭代器所指的元素,返回下一个元素的迭代器。
erase(beg, end);//删除区间[beg,end)的所有元素 ,返回下一个元素的迭代器。
erase(elem);//删除容器中值为elem的元素。
*/
void printSet(const set<int> &s)
{
for (set<int>::const_iterator it = s.begin(); it != s.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
void test01()
{
set<int> s1;
s1.insert(5);
s1.insert(1);
s1.insert(9);
s1.insert(3);
s1.insert
STL-----set容器的操作以及pair
最新推荐文章于 2021-02-23 15:10:03 发布