zoukankan      html  css  js  c++  java
  • STL容器之set容器API(一)

    • 关联式容器
    • 插入数据自动排序 按照key
    • insert 插入值
    • erase  参数可以传值 或者 迭代器
    • find() 返回值 迭代器  找不到返回的  end()
    • count 计数  对于set而言  结果 就是 0 或者1
    • lower_bound(keyElem);//返回第一个key>=keyElem元素的迭代器。
    • upper_bound(keyElem);//返回第一个key>keyElem元素的迭代器。
    • equal_range(keyElem);//返回容器中key与keyElem相等的上下限的两个迭代器。
    • 对组 pair
    1. 第一个值 first
    2. 第二个值 second
    3. 默认括号
    4. make_pair()
    • set插入返回值是 对组  < 迭代器, 是否成功标示>
    • 指定set排序规则,利用仿函数
    • set插入自定义数据类型
    #define _CRT_SECURE_NO_WARNINGS
    #include <iostream>
    using namespace std;
    #include <set>
    /*
    set构造函数
    set<T> st;//set默认构造函数:
    mulitset<T> mst; //multiset默认构造函数:
    set(const set &st);//拷贝构造函数
    
    set赋值操作
    set& operator=(const set &st);//重载等号操作符
    swap(st);//交换两个集合容器
    
    set大小操作
    size();//返回容器中元素的数目
    empty();//判断容器是否为空
    
    set插入和删除操作
    insert(elem);//在容器中插入元素。
    clear();//清除所有元素
    erase(pos);//删除pos迭代器所指的元素,返回下一个元素的迭代器。
    erase(beg, end);//删除区间[beg,end)的所有元素 ,返回下一个元素的迭代器。
    erase(elem);//删除容器中值为elem的元素。
    
    set查找操作
    find(key);//查找键key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回set.end();
    count(key);//查找键key的元素个数
    lower_bound(keyElem);//返回第一个key>=keyElem元素的迭代器。
    upper_bound(keyElem);//返回第一个key>keyElem元素的迭代器。
    equal_range(keyElem);//返回容器中key与keyElem相等的上下限的两个迭代器。
    
    */
    void printSet(set<int>& s)
    {
        for (set<int>::iterator it = s.begin(); it != s.end(); it++)
        {
            cout << *it << " ";
        }
        cout << endl;
    }
    void test01()
    {
        //构造
        set<int>s1;
        //关联式容器, 插入数据 key自动按从小到大排序
        s1.insert(5);
        s1.insert(1);
        s1.insert(9);
        s1.insert(7);
        s1.insert(3);
        printSet(s1);   //1 3 5 7 9
    
        //按迭代器位置删除
        s1.erase(s1.begin()); 
        printSet(s1);       //3 5 7 9
        s1.erase(3);        //按元素删除
        printSet(s1);       //5 7 9
    }
    //查找操作
    void test02()
    {
        set<int>s1;
        s1.insert(5);
        s1.insert(1);
        s1.insert(9);
        s1.insert(7);
        s1.insert(3);
        //对于set 没有value key就是value
        
        set<int>::iterator it = s1.find(3); //查找键key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回set.end();
        if (it != s1.end())                     //3
        {
            cout << *it << endl;       
        }
        else
        {
            cout << "未找到" << endl;
        }
        set<int>::iterator it2 = s1.find(2); 
        if (it2 != s1.end())                 //未找到   如果不判断 没找到的时候会报错
        {
            cout << *it2 << endl;        
        }
        else
        {
            cout << "未找到" << endl;      
        }
        //lower_bound(keyElem);//返回第一个key>=keyElem元素的迭代器。
        set<int>::iterator it3 = s1.lower_bound(3);
        if (it3 != s1.end())                 //3
        {
            cout << *it3 << endl;
        }
        else
        {
            cout << "未找到" << endl;
        }
        //upper_bound(keyElem);//返回第一个key>keyElem元素的迭代器。
        set<int>::iterator it4 = s1.lower_bound(4);
        if (it4 != s1.end())                 //5
        {
            cout << *it4 << endl;
        }
        else
        {
            cout << "未找到" << endl;
        }
        //equal_range(keyElem);//返回容器中key与keyElem相等的上下限的两个迭代器。
        pair<set<int>::iterator, set<int>::iterator> ret = s1.equal_range(3);
        //获取第一个值
        cout << *(ret.first) << endl; //3
        cout << *(ret.second) << endl;  //5
    
        //count(key);  //查找key的元素个数  set只会是0或1 因为set不存在重复的key
        int num = s1.count(1);
        cout << num << endl;    //1
    
    }
    int main()
    {
        test02();
        //test01();
        system("Pause");
        return 0;
    }

    结果:

  • 相关阅读:
    Read-Copy Update Implementation For Non-Cache-Coherent Systems
    10 华电内部文档搜索系统 search04
    10 华电内部文档搜索系统 search05
    lucene4
    10 华电内部文档搜索系统 search01
    01 lucene基础 北风网项目培训 Lucene实践课程 索引
    01 lucene基础 北风网项目培训 Lucene实践课程 系统架构
    01 lucene基础 北风网项目培训 Lucene实践课程 Lucene概述
    第五章 大数据平台与技术 第13讲 NoSQL数据库
    第五章 大数据平台与技术 第12讲 大数据处理平台Spark
  • 原文地址:https://www.cnblogs.com/yifengs/p/15193754.html
Copyright © 2011-2022 走看看