全部代码
#pragma once
// 包含函数对象和哈希函数 functor仿函数
namespace tinySTL {
// 定义一元函数的参数类别和返回值型别
template<typename Arg, typename Result>
struct unarg_function {
using argument_type = Arg;
using result_type = Result;
};
// 二元函数
template<typename Arg1, typename Arg2, typename Result>
struct binary_function {
using first_argument_type = Arg1;
using second_argument_type = Arg2;
using result_type = Result;
};
// 函数对象:加法
template<typename T>
struct plus : public binary_function<T, T, T> {
T operator()(const T& x, const T& y) const { return x + y; }
};
template<typename T>
struct minus :public binary_function<T, T, T> {
T operator()(const T& x, const T& y) const { return x - y; }
};
// 函数对象:乘法
template <class T>
struct multiplies :public binary_function<T, T, T>
{
T operator()(const T& x, const T& y) const { retur