• 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;
    }

    结果:

  • 相关阅读:
    强连通分量入度和出度
    Tarjan 强连通分量
    强连通是真的强~
    Yii2.0 RESTful API 基础配置教程
    微信小程序循环数组展示数据点击当前改变当前按钮状态
    初入博客园
    博客总目录
    当我们在谈论kmeans(4)
    当我们在谈论kmeans(5)
    当我们在谈论kmeans(3)
  • 原文地址:https://www.cnblogs.com/yifengs/p/15193754.html
Copyright © 2020-2023  润新知