zoukankan      html  css  js  c++  java
  • 第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

  • 相关阅读:
    poj 3243 Clever Y(BabyStep GiantStep)
    poj 2417 Discrete Logging
    poj 3481 Double Queue
    hdu 4046 Panda
    hdu 2896 病毒侵袭
    poj 1442 Black Box
    hdu 2815 Mod Tree
    hdu 3065 病毒侵袭持续中
    hdu 1576 A/B
    所有控件
  • 原文地址:https://www.cnblogs.com/xin-le/p/4111358.html
Copyright © 2011-2022 走看看