bind2nd的用法:
int a[] = {1, 2, 3, 4};
std::vector< int> arr(a, a + 4);
// 移除所有小于3的元素
arr.erase( std::remove_if( arr.begin(), arr.end(),
std::bind2nd( std::less< int>(), 3)), arr.end());
其中remove_if函数是将arr数组中的元素重新排列,遍历数组,将满足第三个参数(返回类型bool的函数指针)返回为true的数组元素放置在数组的尾部,并返回一个指向尾部重排元素的迭代器。
bind的用法:
arr.erase(std::remove_if(arr.begin(), arr.end(),
std::bind(std::less<int>(),placeholders::_1,100)), arr.end());
总之,第三个参数要搞成只有一个参数的类型。