理解bind1st和bind2nd函数

php中文网
发布: 2016-06-07 15:30:31
原创
1859人浏览过

值(v)是一个固定的参数。换言之,uf(x)等价于: bf( x, v) 当使用bind2nd时 bf( v, x) 当使用bind1st时 bind1st 和 bind2nd 函数在处理谓词时非常有用。它们使得二元谓词能够转换成一元谓词;这常用于将一个范围内的所有值与一个特定的值比较: std::vecto

@@##@@

值(v)是一个固定的参数。换言之,uf(x)等价于:

  • bf( x, v) – 当使用bind2nd时
  • bf( v, x) – 当使用bind1st时

bind1stbind2nd函数在处理谓词时非常有用。它们使得二元谓词能够转换成一元谓词;这常用于将一个范围内的所有值与一个特定的值比较:

std::vector a;
// ……填充a

// 移除所有小于30的元素
a.erase( std::remove_if( a.begin(), a.end(),
    std::bind2nd( std::less(), 30)), a.end());

在大多数时候,bind2nd就足够了,像上面的例子。不管怎样,在进行泛型编程时,你会实现一些处理谓词的函数。谓词指定了范围内的排序准则,通常是“)。记住你可以仅用一个给定的“”运算符。这时你会发现bind1stbind2nd都能用上。

#include
#include
#include

template
    void for_each_if( iterator itFirst, iterator itLast, predicate pred, doer do_it)
{
    while ( itFirst != itLast)
    {
        if ( pred( *itFirst)) do_it( *itFirst);
        ++itFirst;
    }
}

void print( int i) { std::cout
int main(int argc, char* argv[])
{
    int aNumbers[] = { 10, 5, 89, 9, 30, -2, -8, 7, 33, 25, 30, 76, 0, 2};
    int nCount = sizeof( aNumbers) / sizeof( aNumbers[ 0]);

    // a     std::cout     for_each_if( aNumbers, aNumbers + nCount,
        std::bind2nd( std::less(), 30), print);
    std::cout     // a > b
    for_each_if( aNumbers, aNumbers + nCount,
        std::bind1st( std::less(), 30), print);
    std::cout     // a      !(a > b)
    for_each_if( aNumbers, aNumbers + nCount,
        std::not1( std::bind1st( std::less(), 30)), print);
    std::cout     // a >= b           !(a     for_each_if( aNumbers, aNumbers + nCount,
        std::not1( std::bind2nd( std::less(), 30)), print);
    return 0;
}

理解bind1st和bind2nd函数
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号