谓词

作者: 学习编程好少年 | 来源:发表于2017-01-10 10:49 被阅读0次

    谓词是一个可调用的表达式,其返回结果是一个能用作条件的值。标准库算法所使用的谓词分为两类:一元谓词(unary predicate,只接受单一参数)和二元谓词(binary predicate,接受两个参数)。接受谓词参数的算法对输入序列中的元素调用谓词。因此,元素类型必须能转换为谓词的参数类型。

    接受一个二元谓词参数的sort版本用这个谓词代替<来比较元素。我们提供给sort的谓词必须满足以下条件:

    1. 所提供的操作必须在关键字类型上定义一个严格弱序(strict weak ordering),可以将严格弱序看作"小于等于,虽然实际上定义的操作可能是一个复杂的函数。
    2. 两个关键字不能同时"小于等于"对方;如果k1"小于等于"k2,那么k2绝不能"小于等于"k1。
    3. 如果k1"小于等于"k2,且k2"小于等于"k3,那么k1必须"小于等于"k3。
    4. 如果存在两个关键字,任何一个都不"小于等于"另一个,那么我们称这两个关键字是"等价"的。如果k1"等价于"k2,且k2"等价于"k3,那么k1必须"等价于"k3。

    下面定义的isShorter就是一个满足这些要求的函数,因此可以将isShorter传递给short。这样做会将元素按大小重新排序。

    //比较函数,用来按长度排序单词
    bool isShorter(const string &s1, const string &s2)
    {
        return s1.size() < s2.size();
    }
    //按长度由短至长排序words
    sort(words.begin(), words.end(), isShorter);

    相关文章

      网友评论

          本文标题:谓词

          本文链接:https://www.haomeiwen.com/subject/icrkbttx.html