zoukankan      html  css  js  c++  java
  • multiset中元素排序比较函数的使用

      在《C++ Primer》关联容器的相关章节并没有介绍到multiset的多个构造函数的使用,在后来的章节中,涉及到一个问题的解决:如果multiset的元素类型是类类型,在不能使用默认的“<”操作符进行元素比较的时候,需要用到自定义的元素比较函数,将这个函数在multiset本身提供的构造函数中使用可以避免一些问题,具体详见《C++ Primer》第754页。但作为一个例子记下,作为一个使用模式的提醒:

      首先,定义一个函数用于比较 Sales_item 对象:

         // compare defines item ordering for the multiset in Basket 
    
         inline bool 
         compare(const Sales_item &lhs, const Sales_item &rhs) 
         { 
             return lhs->book() < rhs->book(); 
         } 

    用下面代码将Comp 定义为函数类型指针的同义词,该函数类型与我们希望用来比较 Sales_item 对象的比较函数相匹配。

         // type of the comparison function used to order the multiset 
         typedef bool (*Comp)(const Sales_item&, const Sales_item&); 

    于是,就有了如下的定义multiset对象的形式:

        std::multiset<Sales_item, Comp> items(compare); 

    “这个定义是说,items 是一个 multiset,它保存 Sales_item 对象并使用 Comp 类型的对象比较它们。multiset 是空的——我们没有提供任何元素,但我们的确提供了一个名为 compare 的比较函数。当在 items 中增加或查找元素时,将用 compare 函数对 multiset 进行排序。”

      这个例题还有其它一点需要思考:MSDN中multiset的构造函数并没有看到这种形式。

  • 相关阅读:
    调用API接口,查询手机号码归属地(2)
    调用API接口,查询手机号码归属地(1)
    F
    Icebound and Sequence(非互质逆元 快速乘法)or(矩阵快速幂)
    ProblemC、小花梨判连通(dfs)+想法stl
    cwb个人练习
    Fire Net (二分图匹配 匈牙利算法模板)
    Fire Net HDU
    Going Home POJ
    Two Sequences (二分+二进制) (好题)
  • 原文地址:https://www.cnblogs.com/tingshuixuan2012/p/3087245.html
Copyright © 2011-2022 走看看