搜索
您的当前位置:首页正文

STL中的平衡二叉树(set)

来源:步旅网

STL中的平衡二叉树(set)

之前说了multiset

现在来说说set容器

set的用法
  • set 和 mulset 的区别在于容器里不能出现重复的元素

    a 和b 重复 <=>“a 必须排在 b 前面” 和“b 必须排在a 前面” 都不成立。

  • set 插入元素可能不成功。(因为元素不能重复的原因,所以如果插入相同元素就会失败)

set 用法示例:

#include <cstdio>
#include <iostream>
#include <cstring>
#include <set>
using namespace std;
int main()
{
    set<int >st;
    int a[10]={1,2,3,8,7,7,5,6,8,12};//注意这里有两个7,两个8。
    for(int i=0;i<10;++i)
        st.insert(a[i]);
    cout<<st.size()<<endl;//输出8(两个7,两个8都只留下一个,就是8个)
    set<int>::iterator i;//迭代器
    for(i=st.begin();i!=st.end();++i)
        cout<<*i<<",";//输出1,2,3,5,6,7,8,12,
    cout<<endl;
    pair<set<int>::iterator,bool> result= st.insert(2);//别慌,下面有解释
    if(!result.second)//条件成立说明插入不成功
        cout<<*result.first<<"already exists"<<endl;
    else 
        cout<<*result.first<<"inserted."<<endl;
    return 0;
}
pair 模板的用法

pair<T1,T2>类型等价于:

struct{

​ T1 first;

​ T2 second;

};

例如:

pair <int,double> a;

等价于:

struct{

​ int fitst;

​ double second;

} a;

a.first=1;

a.second=93.93;

相应的:pair<set< int >::iterator,bool>
struct{
set< int >::iterator first;
bool second;
};

因篇幅问题不能全部显示,请点此查看更多更全内容

Top