例子需要包含头文件 #include <vector>
来源:互联网 发布:yum安装的mysql在哪里 编辑:程序博客网 时间:2024/06/05 11:10
bind1st和bind2nd函数用于将一个二元算子(binary functor,bf)转换成一元算子(unary functor,uf)。为了达到这个目的,它们需要两个参数:要转换的bf和一个值(v)。
可能这么解释以后大家还不是很清楚,那么就说点白话吧。我们在做比较的时候所写的表达式像 x > k ,x < k,这里的k是一个参数表示你程序里面的表达式要和k值去比较。上面这两个表达式对应的应该是bind2nd ,简单的理解就是把k作为比较表达式的第二个参数。如果使用bind1st则对应的表达式是 k > x,k < x,也就是把k作为比较表达式的第一个参数。大家可能会注意到这里面没有=的比较,先别着急,后面将会说道如何实现=的比较。先举两个例子看看bind1st和bind2nd的用法。
int a[] = {1, 2, 100, 200};
std::vector< int> arr(a, a + 4);
// 移除所有小于100的元素
arr.erase( std::remove_if( arr.begin(), arr.end(),
std::bind2nd( std::less< int>(), 100)), arr.end());
这里的比较表达式相当于arr.value < 100
如果用bind1st则表达的意思就恰恰相反
// 移除所有大于100的元素
arr.erase( std::remove_if( arr.begin(), arr.end(),
std::bind1st( std::less< int>(), 100)), arr.end());
这里的表达式相当于100 < arr.value
当然为了实现删除大于100的元素你同样可以使用bind2nd
// 移除所有大于100的元素
arr.erase( std::remove_if( arr.begin(), arr.end(),
std::bind2nd( std::greater< int>(), 100)), arr.end());
前面说道=的比较,比如说x <= k怎么实现呢,std又提供了一个好东西not1,我们可以说 !(x > k) 和 x <= k是等价的,那么我们看看下面的表达式:
// 移除所有小于等于100的元素
arr.erase( std::remove_if( arr.begin(), arr.end(),
std::not1(std::bind2nd( std::greater< int>(), 100))), arr.end());
说明:not1是否定返回值是单目的函数,std中还有not2它是否定返回值是双目的函数
//头文件
#include <algorithm>
#include <functional>
- 例子需要包含头文件 #include <vector>
- include包含头文件
- c++ 头文件包含问题-include&class
- opencv 头文件 包含 include 的问题
- 关于C头文件包含include "**.h"
- 转:include 包含头文件的设置
- C++头文件包含 include 和 class
- c++ 头文件包含问题-include&class
- opencv 头文件 包含 include 的问题
- 头文件需要互相包含怎么办?
- CString类型需要包含的头文件
- JNI调用需要包含的头文件
- C++头文件包含问题-Include和class **
- C++头文件包含问题-Include和class **
- C++头文件包含问题-Include和class **
- #include<bits/stdc++.h>包含C++的所有头文件
- #include<bits/stdc++.h>包含C++的全部头文件
- #include<bits/stdc++.h>包含C++的所有头文件
- C语言位域精解
- HDU 1222 Wolf and Rabbit(公约数)
- 算法的变种应用-(php约瑟夫环)(array_shift&&array_push)
- 安装与初始配置
- python正则表达式
- 例子需要包含头文件 #include <vector>
- 算法学习 - 最长公共子序列(LCS)C++实现
- FZU-2150 Fire Game
- UVA - 1459 Flowers Placement(二分图+dfs)
- 优化Markdown在Notepad++中的使用体验
- Hadoop(最新版ChainMapper链接MapReduce作业带原理分析)
- 使用NSURLConnection实现大文件断点下载
- Gulp帮你自动搞定coffee和scss的compile
- HDU 4415 Assassin's Creed(贪心)