• 第12章 multiset多重集合容器


    /*
    
      第12章 multiset多重集合容器
       12.1 multiset技术原理
       12.2 multiset应用基础
       12.3 本章小结
    
    */
    
    
    //  第12章 multiset多重集合容器
    //   12.1 multiset技术原理 ----------------------------------------------------------------------------
    
    //   12.2 multiset应用基础 ----------------------------------------------------------------------------
    
    
    // 192 遍历
    #include <set>
    #include <iostream>
    int main(void)
    {
      using namespace std;
      multiset < int > ms;
      ms.insert(10);
      ms.insert(13);
      ms.insert(11);
      ms.insert(19);
      ms.insert(13);
      ms.insert(19);
      ms.insert(19);
      //打印数据
      multiset < int > ::iterator i, iend;
      iend = ms.end();
      for(i = ms.begin(); i != iend; i++)
      //打印出10 11 13 13 19 19 19
        cout <<  *i << ' ';
      cout << endl;
      return 0;
    }
    
    
    // 193, 反向遍历
    #include <set>
    #include <iostream>
    int main(void)
    {
      using namespace std;
      multiset < int > ms;
      ms.insert(10);
      ms.insert(13);
      ms.insert(11);
      ms.insert(19);
      ms.insert(13);
      ms.insert(19);
      ms.insert(19);
      //反向遍历打印
      multiset < int > ::reverse_iterator ri, riend;
      riend = ms.rend();
      for(ri = ms.rbegin(); ri != riend; ri++)
      //打印出10 11 13 13 19 19 19
        cout <<  *ri << ' ';
      cout << endl;
      return 0;
    }
    
    
    // 194 , 要从树的角度去看,相同值的元素在一起的,所以范围容易找
    #include <set>
    #include <iostream>
    int main(void)
    {
      using namespace std;
      multiset < int > ms;
      ms.insert(10);
      ms.insert(13); //
      ms.insert(11);
      ms.insert(19);
      ms.insert(13); //
      ms.insert(16);
      ms.insert(13); //
      ms.insert(17);
      //find搜索元素13
      int v = 19;
      multiset < int > ::iterator i_v = ms.find(v);
      cout <<  *i_v << endl;
      //equal_range搜索元素13
      v = 13;
      pair < multiset < int > ::iterator, multiset < int > ::iterator > p =
        ms.equal_range(v);
      cout << "大于等于" << v << "的第一个元素为(x≥k)为 " <<  *p.first << endl;
      cout << "大于" << v << "的第一个元素(x>k)为 " <<  *p.second << endl;
      //打印重复键值元素13
      multiset < int > ::iterator i;
      cout << "键值为" << v << "的所有元素为 ";
      for(i = p.first; i != p.second; i++)
      //打印出13 13 13
        cout <<  *i << ' ';
      cout << "
    
    
    ";
      return 0;
    }
    
    
    //196
    #include <set>
    #include <iostream>
    //学生结构体    
    struct Student
    {
      char *name;
      int year;
      char *addr;
    };
    //比较函数
    struct StudentLess
    {
      bool operator()(const Student &s1, const Student &s2)const
      {
        return s1.year < s2.year; //比较学生年龄
      }
    };
    int main(void)
    {
      using namespace std;
      //学生数据
        Student stuArray[] = {
            { "李强", 21, "北京" },
            { "王文", 22, "浙江" },
            { "张天", 21, "上海" },
            { "丁宏", 23, "深圳" },
            { "赵庆", 30, "天津" }
        };
      //创建multiset对象ms
      multiset < Student, StudentLess > ms(stuArray, stuArray + 5, StudentLess());
      //统计
      cout << "学生人数: " << ms.size() << endl << endl;
      cout << "年龄为21岁的学生人数: " << ms.count(stuArray[0]) << endl << endl;
      //打印元素
      multiset < Student > ::iterator i, iend;
      iend = ms.end();
      cout << "姓名    " << "年龄    " << "地址
    ";
      for(i = ms.begin(); i != iend; i++)
        cout << (*i).name << '    ' << (*i).year << '    ' << (*i).addr << endl;
      cout << endl;
      return 0;
    }
    
    
    
    //   12.3 本章小结 ----------------------------------------------------------------------------

    TOP

  • 相关阅读:
    SQL 函数、存储过程、游标与事务模板
    JS给Element添加方法
    检测当前浏览器是否启用JS,Cookie
    Android 电量测试以及电量优化
    [转载]百度免费的文本编辑器Ueditor的使用说明
    sql 常用信息
    vs2010智能提示消失的解决办法
    IIS未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项
    智能的产生
    C#日期格式化
  • 原文地址:https://www.cnblogs.com/xin-le/p/4111358.html
Copyright © 2020-2023  润新知