一、仿函数
(1)算数类(Arithmetic)
(2)逻辑运算类(Logicial)
(3)相对关系类(Relational)
1、仿函数的可适配条件
STL规定每个Adaptable Function都应该挑选适当者继承之,因为Function Adapter将会提问红色问题。例如:
Less<int>继承Binary_function,于是Less<int>便有了三个typedef,分别是
typedef int first_argument_type;
typedef int second_argument_type;
typedef bool result_type;
2、各种适配器举例
(1)函数适配器binder2nd
(2)函数适配器not1
(3)新型适配器find(Since C++11)
std::bind可以绑定:
a、functions
b、function objects
c、member functions,_1必须是某个object的地址
d、data members,_1必须是某个object的地址
返回一个function object ret。调用ret相当于调用上述a,b,c,或者相当于取出d。
二、迭代器适配器
1、迭代器适配器:reverse_iterator
reverse_iterator的关键所在,即对逆向迭代器取值,就是将对应的正向迭代器退一位取值。
2、迭代器适配器:inserter
我自己编译没有通过,查出来是Copy第三个参数,OutputIterator这个参数,不知道是否动态识别出其类型。即h36::Inserter(foo,it)的返回值的类型是否为InputIterator。
3、X适配器:ostream_iterator
4、X适配器:istream_iterator
测试用例2编译没有通过,问题点在copy函数部分。
有懂得的朋友可以帮忙看看。