• std::Set


    C++标准库:std_set作为一个有序集合

    摘要:std::set作为标准库的一个关联容器,实现内部元素进行了排序,使用这特性可以对一组元素进行插入排序。std::set最初的设计是完成数学中“集合”的概念,它提供的接口也是如此。本文简单地介绍一下这一个标准库容器。

    为了使用std::set,我只需要如下:


    #include<set>
    //定义一个整型数据的集合
    std::set<int> set;

    如同所有的STL容器一样,std::set的基本的使用是如此简单,即使使用看起来很高级的功能也并不难,STL是经过设计的调试可用的库。

    下面我会展示一些简单的使用示例,这些是示例非常简单,首先介绍那个“排序”的用法:



    #include<set>
    int array[5]={12, 34, 10, 98, 3};
    const size_t array_size=sizeof(array)/sizeof(array[0]);
    std::set<int> set;
    for(size_t i=0; i<array_size; ++i)
    {
            //把数据插入集合,数据自动排序
            set.insert(array[i]);
    }

    //此时已经排序了,下面依次输出
    std::set<int>::const_iterator b=set.begin();
    for(; b!=set.end(); ++b)
    {
            std::cout << *<< '\n';
    }

    在一般意识中,一个集合并没有太多的操作,所有在STL中,std::set也没有太多操作,它的排序是自动的,我们可以插入一个元素,也可以删除一个元素,也有迭代器。下面简单的示例包括std::set自身的多数的特性:



    #include<set>
    int array[5]={12, 34, 10, 98, 3};
    const size_t array_size=sizeof(array)/sizeof(array[0]);
    //一个新的定义容器的方法
    std::set<int> set(array, array+array_size);

    //插入一个元素
    set.insert(23);
    //移除一个元素
    set.erase(10);
    //移除一个元素不在集合中的元素
    //此时什么也不做,n作为返回值将会是0
    //指明没有元素移除
    size_t n=set.erase(11);

    //使用迭代器,找到一个元素
    std::set<int>::const_iterator result=set.find(98);

    std::set<int> other;
    //交换两个集合的内容
    std::swap(set, other);

    //清楚所有的内容
    other.clear()
    ;

     

    eg:

    #include <iostream>
    #include <set>
    #include <signal.h>

    using namespace std;

    int main(void)
    {
     std::set<int> _signals;
     _signals.insert(SIGTERM);
     _signals.insert(SIGINT);
     _signals.insert(SIGCHLD);
     for( std::set<int>::const_iterator i = _signals.begin(); i != _signals.end(); ++i)
      cout << *i << endl;

     _signals.clear();
     return 0;
    }

  • 相关阅读:
    eclipse中Preferences的一些设置
    eclipse中文乱码问题解决方案
    classpath、path、JAVA_HOME的作用
    java中抽象类与接口中方法访问修饰符问题 (
    Tomcat配置
    编译型语言和解释型语言
    强类型语言和弱类型语言
    javascript生成指定范围的随机整数
    java中int和Integer的区别
    红黑树入门
  • 原文地址:https://www.cnblogs.com/hgy413/p/3693606.html
Copyright © 2020-2023  润新知