zoukankan      html  css  js  c++  java
  • C++中set的使用

    何为set

    setSTL中的一种关联容器,里面的元素根据关键字存储。set的元素都是唯一的,没有重复元素,我们可以利用这个特点进行去重的操作;

    set中常用的方法

    函数名 作用
    clear 清除内容
    insert 插入元素或节点
    emplace 原位构造元素
    erase 移除元素
    swap 交换内容
    count 返回匹配特定键的数量,可以用于判断元素是否存在
    find 查找特定元素
    contains 检查是否包含特定元素,C++20才有
    lower_bound 返回第一个不小于给定键的元素的迭代器
    upper_bound 返回第一个大于给定键的元素的迭代器

    示例程序

    void TestSet()
    {
        // use constructor
        std::set<std::string> name;
        name.insert("Alex");
        name.insert("Alice");
        // delete duplicate element
        name.insert("Alex");
        std::cout << "size of name is " << name.size() << std::endl;
    
        for (std::string val : name)
            std::cout << val << "	";
        std::cout << std::endl;
    
        // use erase to remove some element
        std::set<int> nums = { 1,2,3,4,5,6,7,8,9,10 };
        std::set<int> copynums(nums.find(4), nums.end());
    
        for (auto itr = nums.begin(); itr != nums.end(); )
        {
            if (*itr % 2 == 0)
            {
                itr = nums.erase(itr);
            }
            else
            {
                ++itr;
            }
        }
    
        for (const auto& val : nums)
        {
            std::cout << val << "	";
        }
        std::cout << std::endl;
    
        copynums.erase(copynums.find(7), copynums.end());
        for (const auto& val : copynums)
        {
            std::cout << val << "	";
        }
        std::cout << std::endl;
        
        std::cout << copynums.count(4) << std::endl;
    
        // checks if there is an element in the container and contains func exist in C++20 version
        /*if (money.contains(100))
        {
            std::cout << "100 is in this container" << std::endl;
        }
        else
        {
            std::cout << "100 is not in this container" << std::endl;
        }*/
    }
    

    程序输出结果

    size of name is 2
    Alex    Alice
    1       3       5       7       9
    4       5       6
    1
    
  • 相关阅读:
    【bzoj1901】dynamic ranking(带修改主席树)
    一堆乱七八糟绝不正经的排序算法
    bzoj2588 Spoj10628. count on a tree
    poj2104 K-th Number
    【bzoj 3595】: [Scoi2014]方伯伯的Oj
    bzoj1926: [Sdoi2010]粟粟的书架
    P3168 [CQOI2015]任务查询系统
    进程和线程
    History of AI
    es6
  • 原文地址:https://www.cnblogs.com/zuixime0515/p/13215644.html
Copyright © 2011-2022 走看看