C++之STL整理(4)之set 用法(创建、赋值、增删查改)详解

2024-05-10 1558阅读

C++之STL整理(4)之set 用法(创建、赋值、增删查改)详解

注:整理一些突然学到的C++知识,随时mark一下

C++之STL整理(4)之set 用法(创建、赋值、增删查改)详解
(图片来源网络,侵删)

例如:忘记的关键字用法,新关键字,新数据结构


C++ 的map用法整理

  • C++之STL整理(4)之set 用法(创建、赋值、增删查改)详解
  • 一、set的初始化
    • 1、set初始化
      • (1)构造函数初始化
      • (2)赋值操作
      • (3)swap函数;
      • 3、大小操作
      • 二、set的增删查改
        • 1、插入操作insert
        • 2、删操作erase、clear
        • 3、查找操作 find
        • 4、统计count
        • 三、指定排序规则
          • 1、指定set容器的排序规则
          • 2、 对于自定义数据类型,set 必须指定排序规则
          • 总结

            提示:本文为 C++ 中 set构造、赋值、接口 的写法和举例


            一、set的初始化

              STL 中的set是一个关联容器,它存储的元素都是键值一体的(key-value pair),并且也会根据键(key)自动排序。set存储的元素(键)是唯一的,不允许键重复,并且默认按照从小到大的顺序进行排序(和map一样也可以通过提供一个自定义的比较函数或对象来改变排序方式,自定义类型必须增加)。std::set 的元素通过其键或迭代器进行访问,并且在这个容器中,键也是值(key is value),也就是说set相当于键值一体的map。

            set的基本操作

            插入元素:使用 insert 成员函数向 set 中插入元素。如果元素已经存在,则不会插入重复的元素。.insert()的返回值是个pair结构的对组 pair bool代表插入是否成功。

            查找元素:使用 find 成员函数来查找元素。如果找到元素,则返回指向该元素的迭代器;否则返回 end() 迭代器。

            删除元素:使用 erase 成员函数来删除元素。你可以通过迭代器或键来删除元素。

            遍历元素:使用迭代器iterator来遍历 set 中的元素。由于 set 是有序的,所以遍历将按照元素的排序顺序进行。

            示例

            下面是一个简单的 std::set 使用示例:

            #include   
            #include   
              
            int main() {  
                std::set mySet;  
              
                // 插入元素  
                mySet.insert(3);  
                mySet.insert(1);  
                mySet.insert(4);  
                mySet.insert(1); // 不会插入重复的元素  
              
                // 遍历并打印元素  
                for (int num : mySet) {  
                    std::cout   
                    std::cout   
                    std::cout 1, 2, 3};  
            std::set1, 2, 3};  
            std::set1, 2, 3};  
            std::set4, 5, 6};  
            mySet.swap(anotherSet);  // 交换两个set的内容
            1, 2, 3, 4, 5};  
            std::cout   
                std::cout   
                std::cout 1, 2, 3, 4, 5};  
            auto it = mySet.find(3); // 查找元素3的迭代器  
            if (it != mySet.end()) {  
                it = mySet.erase(it); // 删除元素3,it现在指向4  
            }
            mySet.clear(); // 清空set,现在mySet是空的
            1, 2, 3, 4, 5};  
            auto it = mySet.find(3); // 查找元素3的迭代器  
            if (it != mySet.end()) {  
                mySet.erase(it, std::next(it)); // 删除元素3(包括3)之后的所有元素  
            }
            1, 2, 2, 3, 4, 4, 4};  
            myMultiSet.erase(2); // 删除一个值为2的元素  
            myMultiSet.erase(4); // 删除一个值为4的元素,现在myMultiSet中还有两个4
            1, 2, 3, 4, 5};  
            auto it = mySet.find(3); // 查找元素3  
            if (it != mySet.end()) {  
                std::cout   
                std::cout 1, 2, 2, 3, 4, 4, 4};  
            size_t countOfTwo = myMultiSet.count(2); // 查找元素2出现的次数  
            std::cout   
                bool operator()(const std::string& a, const std::string& b) const {  
                    // 这里我们按照字符串的长度进行排序,而不是默认的字典序  
                    return a.size() 
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]