C++ STL set集合容器简单使用
简介
set事一种关联式容器,刻画了具有某些相同特征的事物的集合,类似数学概念 ,与【STL的map】相似,但是不同的是,set的键是元素本身
通过查询,可以快速确定一个元素是否位于某个集合之中
常用方法
set的创建与初始化
可以单纯的像int a
一样声明一个set
set<int> se;
也可以由两个迭代器确定的一段序列来初始化集合,即把序列中的元素全部加入集合中
vector<int> vec;
set<int> se(vec.begin(), vec.end());
set中添加元素:insert
set<int> se;
pair<set<int>::iterator, bool> p;
/*
name : insert(x)
param x : 要插入的元素
return : 一个pair<迭代器,bool>,迭代器表示元素位置,bool变量表示是否插入成功
*/
p = se.insert(x);
当然可以简单的直接insert,因为普通set无重复元素
se.insert(1);
set中查找元素:find
与map不同,set查找的键值,就是元素的值本身
set<int> se;
set<int>::iterator iter;
/*
param x : 要查找的元素对象
return : 一个迭代器,指向被查找的元素,如果没找到,指向se.end()
*/
iter = se.find(x);
可以通过一下语句简单的判断元素是否被找到:
if(iter != se.end())
set中删除元素:erase
set<int> se;
set<int>::iterator iter = se.find(要查找的元素);
/*
param iter : 指向要删除的单个元素的迭代器
return :
*/
se.erase(iter);
值得注意的是erase函数也可以删除一段由迭代器指定的区间的所有元素
se.erase(iter_left, iter_right);
使用例
简单的创建set,插入元素,查找元素,删除元素
#include <iostream>
#include <set>
using namespace std;
int main()
{
// 初始化
set<int> se;
se.insert(1);
se.insert(2);
se.insert(3);
set<int>::iterator iter;
// 查找
iter = se.find(2);
if(iter != se.end())
{
cout<<"found"<<endl;
}
else
{
cout<<"not found"<<endl;
}
// 删除
se.erase(iter);
iter = se.find(2);
if(iter != se.end())
{
cout<<"found"<<endl;
}
else
{
cout<<"not found"<<endl;
}
return 0;
}