Essential C++第三章主要介绍的是泛型编程风格。
在讲“如何设计泛型算法”时,给出了一个filter的template例子。为了更好的理解和运用泛型算法以及template。将P89(中文版)页给出的sub_vec函数写成template版本。
其原版non-template函数如下:
vector<int> sub_vec( const vector<int> &vec, int val )
{
vector<int> local_vec( vec );
sort ( local_vec.begin(), local_vec.end() );
vector<int>::iterator iter =
find_if ( local_vec.begin(),
local_vec.end(),
bind2nd( greater<int>(), val ));
local_vec.erase ( iter, local_vec.end() );
return local_vec;
}
将其改为template格式后,函数返回一个iterator指针,指针指向find_if找到的第一个大于指定值的元素,函数为: