STL容器-Set(二)

介绍:
1.set 翻译为集合,是一个内部自动有序且不含重复元素的容器。
2.既然set是一个集合,那么set 中的元素是唯一的,满足集合元素的互异性,其内部采用“红黑树”实现。
使用方法:
1.添加头文件: #include < set >
2.必须要有“using namespacestd”
3.定义一个set:
set< typename > name;
其中typename是任意的基本类型或者STL容器,name是set的名字。
Set的访问:
set只能用迭代器访问。
代码如下:

#include 
using namespace std;
set<string>vis;
set<string>::iterator it;//迭代器中的it相当于一个指针。
int main()
{
     
     for(it=vis.begin();it!=vis.end();it++)
     {
     
         string tmp;
         tmp=*it;//用*it来访问it的值
     }
    return 0;
}

Set的常用函数:
STL容器-Set(二)_第1张图片
1.insert(x):向set中插入一个元素下x,其中如果set中已经存在了x再次插入则不会产生任何效果。
2.erase(x):其中的x可以是一下三种:
1)erase(iterator) , 删除定位器iterator 指向的值

#include 
using namespace std;
set<int>vis;
set<int>::iterator it;//迭代器中的it相当于一个指针。
set<int>::iterator first,second;
int main()
{
     
     for(it=vis.begin();it!=vis.end();it++)
     {
     
            vis.erase(it);
     }
    return 0;
}

2)erase(first,second), 删除定位器first 和second 之间的值

using namespace std;
setvis;
set::iterator it;//迭代器中的it相当于一个指针。
set::iterator first,second;
int main()
{
     for(it=vis.begin();it!=vis.end();it++)
     {
            first=vis.begin();
            second=vis.begin();
            second+=2;
            vis.erase(first,second);
     }
    return 0;
}

3)erase(key_value), 删除键值key_value 的值

#include 
using namespace std;
set<int>vis;
set<int>::iterator it;//迭代器中的it相当于一个指针。
set<int>::iterator first,second;
int main()
{
     
     for(it=vis.begin();it!=vis.end();it++)
     {
     
            int tmp;
            tmp=*it;//将指针中的值取出来
            vis.erase(tmp);
     }
    return 0;
}

3.count(x):x是key_value,是一个值。使用count会返回这个值出现的次数。

#include 
using namespace std;
set<int>vis;
set<int>::iterator it;//迭代器中的it相当于一个指针。
int main()
{
     
     int num;
     for(i=1;i<=10;i++)
        vis.insert(i);
       num=vis.count(5);//num中储存着5出现的次数
    return 0;
}

4.size(name):其中name是一个set的名字,使用.size()会返回set中元素的个数。
5.clear(name):其中name是一个set的名字,使用.clear()会清空set中的元素,在多组输入的最开头或者末尾要加上,否则set不会清零。
6.lower_bound(key_value) ,返回第一个大于等于key_value的定位器,相当于lower_bound(key_value)是一个指向第一个大于等于key_value的值的指针,所以要用
*lower_bound(key_value)将第一个大于等于key_value的值取出来。
upper_bound(key_value),返回最后一个大于等于key_value的定位器
upper_bound(key_value)是一个指向第一个大于等于key_value的值的指针,所以要用
*upper_bound(key_value)将第一个大于等于key_value的值取出来。

你可能感兴趣的:(ACM算法,c++,算法,数据结构)