⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stl_function.h

📁 俄罗斯高人Mamaich的Pocket gcc编译器(运行在PocketPC上)的全部源代码。
💻 H
📖 第 1 页 / 共 2 页
字号:
#endif};/// One of the @link s20_3_6_binder binder functors@endlink.template <class _Operation, class _Tp>inline binder1st<_Operation> bind1st(const _Operation& __fn, const _Tp& __x) {  typedef typename _Operation::first_argument_type _Arg1_type;  return binder1st<_Operation>(__fn, _Arg1_type(__x));}/// One of the @link s20_3_6_binder binder functors@endlink.template <class _Operation> class binder2nd  : public unary_function<typename _Operation::first_argument_type,                          typename _Operation::result_type> {protected:  _Operation op;  typename _Operation::second_argument_type value;public:  binder2nd(const _Operation& __x,            const typename _Operation::second_argument_type& __y)       : op(__x), value(__y) {}  typename _Operation::result_type  operator()(const typename _Operation::first_argument_type& __x) const {    return op(__x, value);   }#ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS  //109.  Missing binders for non-const sequence elements  typename _Operation::result_type  operator()(typename _Operation::first_argument_type& __x) const {    return op(__x, value);   }#endif};/// One of the @link s20_3_6_binder binder functors@endlink.template <class _Operation, class _Tp>inline binder2nd<_Operation> bind2nd(const _Operation& __fn, const _Tp& __x) {  typedef typename _Operation::second_argument_type _Arg2_type;  return binder2nd<_Operation>(__fn, _Arg2_type(__x));}/** @}  */// 20.3.7 adaptors pointers functions/** @defgroup s20_3_7_adaptors Adaptors for pointers to functions *  The advantage of function objects over pointers to functions is that *  the objects in the standard library declare nested typedefs describing *  their argument and result types with uniform names (e.g., @c result_type *  from the base classes @c unary_function and @c binary_function). *  Sometimes those typedefs are required, not just optional. * *  Adaptors are provided to turn pointers to unary (single-argument) and *  binary (double-argument) functions into function objects.  The long-winded *  functor @c pointer_to_unary_function is constructed with a function *  pointer @c f, and its @c operator() called with argument @c x returns *  @c f(x).  The functor @c pointer_to_binary_function does the same thing, *  but with a double-argument @c f and @c operator(). * *  The function @c ptr_fun takes a pointer-to-function @c f and constructs *  an instance of the appropriate functor. * *  @{*//// One of the @link s20_3_7_adaptors adaptors for function pointers@endlink.template <class _Arg, class _Result>class pointer_to_unary_function : public unary_function<_Arg, _Result> {protected:  _Result (*_M_ptr)(_Arg);public:  pointer_to_unary_function() {}  explicit pointer_to_unary_function(_Result (*__x)(_Arg)) : _M_ptr(__x) {}  _Result operator()(_Arg __x) const { return _M_ptr(__x); }};/// One of the @link s20_3_7_adaptors adaptors for function pointers@endlink.template <class _Arg, class _Result>inline pointer_to_unary_function<_Arg, _Result> ptr_fun(_Result (*__x)(_Arg)){  return pointer_to_unary_function<_Arg, _Result>(__x);}/// One of the @link s20_3_7_adaptors adaptors for function pointers@endlink.template <class _Arg1, class _Arg2, class _Result>class pointer_to_binary_function :   public binary_function<_Arg1,_Arg2,_Result> {protected:    _Result (*_M_ptr)(_Arg1, _Arg2);public:    pointer_to_binary_function() {}    explicit pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2))       : _M_ptr(__x) {}    _Result operator()(_Arg1 __x, _Arg2 __y) const {      return _M_ptr(__x, __y);    }};/// One of the @link s20_3_7_adaptors adaptors for function pointers@endlink.template <class _Arg1, class _Arg2, class _Result>inline pointer_to_binary_function<_Arg1,_Arg2,_Result> ptr_fun(_Result (*__x)(_Arg1, _Arg2)) {  return pointer_to_binary_function<_Arg1,_Arg2,_Result>(__x);}/** @}  */template <class _Tp>struct _Identity : public unary_function<_Tp,_Tp> {  _Tp& operator()(_Tp& __x) const { return __x; }  const _Tp& operator()(const _Tp& __x) const { return __x; }};template <class _Pair>struct _Select1st : public unary_function<_Pair, typename _Pair::first_type> {  typename _Pair::first_type& operator()(_Pair& __x) const {    return __x.first;  }  const typename _Pair::first_type& operator()(const _Pair& __x) const {    return __x.first;  }};template <class _Pair>struct _Select2nd : public unary_function<_Pair, typename _Pair::second_type>{  typename _Pair::second_type& operator()(_Pair& __x) const {    return __x.second;  }  const typename _Pair::second_type& operator()(const _Pair& __x) const {    return __x.second;  }};// 20.3.8 adaptors pointers members/** @defgroup s20_3_8_memadaptors Adaptors for pointers to members *  There are a total of 16 = 2^4 function objects in this family. *   (1) Member functions taking no arguments vs member functions taking *        one argument. *   (2) Call through pointer vs call through reference. *   (3) Member function with void return type vs member function with *       non-void return type. *   (4) Const vs non-const member function. * *  Note that choice (3) is nothing more than a workaround: according *   to the draft, compilers should handle void and non-void the same way. *   This feature is not yet widely implemented, though.  You can only use *   member functions returning void if your compiler supports partial *   specialization. * *  All of this complexity is in the function objects themselves.  You can *   ignore it by using the helper function mem_fun and mem_fun_ref, *   which create whichever type of adaptor is appropriate. * *  @{*//// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.template <class _Ret, class _Tp>class mem_fun_t : public unary_function<_Tp*,_Ret> {public:  explicit mem_fun_t(_Ret (_Tp::*__pf)()) : _M_f(__pf) {}  _Ret operator()(_Tp* __p) const { return (__p->*_M_f)(); }private:  _Ret (_Tp::*_M_f)();};/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.template <class _Ret, class _Tp>class const_mem_fun_t : public unary_function<const _Tp*,_Ret> {public:  explicit const_mem_fun_t(_Ret (_Tp::*__pf)() const) : _M_f(__pf) {}  _Ret operator()(const _Tp* __p) const { return (__p->*_M_f)(); }private:  _Ret (_Tp::*_M_f)() const;};/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.template <class _Ret, class _Tp>class mem_fun_ref_t : public unary_function<_Tp,_Ret> {public:  explicit mem_fun_ref_t(_Ret (_Tp::*__pf)()) : _M_f(__pf) {}  _Ret operator()(_Tp& __r) const { return (__r.*_M_f)(); }private:  _Ret (_Tp::*_M_f)();};/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.template <class _Ret, class _Tp>class const_mem_fun_ref_t : public unary_function<_Tp,_Ret> {public:  explicit const_mem_fun_ref_t(_Ret (_Tp::*__pf)() const) : _M_f(__pf) {}  _Ret operator()(const _Tp& __r) const { return (__r.*_M_f)(); }private:  _Ret (_Tp::*_M_f)() const;};/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.template <class _Ret, class _Tp, class _Arg>class mem_fun1_t : public binary_function<_Tp*,_Arg,_Ret> {public:  explicit mem_fun1_t(_Ret (_Tp::*__pf)(_Arg)) : _M_f(__pf) {}  _Ret operator()(_Tp* __p, _Arg __x) const { return (__p->*_M_f)(__x); }private:  _Ret (_Tp::*_M_f)(_Arg);};/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.template <class _Ret, class _Tp, class _Arg>class const_mem_fun1_t : public binary_function<const _Tp*,_Arg,_Ret> {public:  explicit const_mem_fun1_t(_Ret (_Tp::*__pf)(_Arg) const) : _M_f(__pf) {}  _Ret operator()(const _Tp* __p, _Arg __x) const    { return (__p->*_M_f)(__x); }private:  _Ret (_Tp::*_M_f)(_Arg) const;};/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.template <class _Ret, class _Tp, class _Arg>class mem_fun1_ref_t : public binary_function<_Tp,_Arg,_Ret> {public:  explicit mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg)) : _M_f(__pf) {}  _Ret operator()(_Tp& __r, _Arg __x) const { return (__r.*_M_f)(__x); }private:  _Ret (_Tp::*_M_f)(_Arg);};/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.template <class _Ret, class _Tp, class _Arg>class const_mem_fun1_ref_t : public binary_function<_Tp,_Arg,_Ret> {public:  explicit const_mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg) const) : _M_f(__pf) {}  _Ret operator()(const _Tp& __r, _Arg __x) const { return (__r.*_M_f)(__x); }private:  _Ret (_Tp::*_M_f)(_Arg) const;};/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.template <class _Tp>class mem_fun_t<void, _Tp> : public unary_function<_Tp*,void> {public:  explicit mem_fun_t(void (_Tp::*__pf)()) : _M_f(__pf) {}  void operator()(_Tp* __p) const { (__p->*_M_f)(); }private:  void (_Tp::*_M_f)();};/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.template <class _Tp>class const_mem_fun_t<void, _Tp> : public unary_function<const _Tp*,void> {public:  explicit const_mem_fun_t(void (_Tp::*__pf)() const) : _M_f(__pf) {}  void operator()(const _Tp* __p) const { (__p->*_M_f)(); }private:  void (_Tp::*_M_f)() const;};/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.template <class _Tp>class mem_fun_ref_t<void, _Tp> : public unary_function<_Tp,void> {public:  explicit mem_fun_ref_t(void (_Tp::*__pf)()) : _M_f(__pf) {}  void operator()(_Tp& __r) const { (__r.*_M_f)(); }private:  void (_Tp::*_M_f)();};/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.template <class _Tp>class const_mem_fun_ref_t<void, _Tp> : public unary_function<_Tp,void> {public:  explicit const_mem_fun_ref_t(void (_Tp::*__pf)() const) : _M_f(__pf) {}  void operator()(const _Tp& __r) const { (__r.*_M_f)(); }private:  void (_Tp::*_M_f)() const;};/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.template <class _Tp, class _Arg>class mem_fun1_t<void, _Tp, _Arg> : public binary_function<_Tp*,_Arg,void> {public:  explicit mem_fun1_t(void (_Tp::*__pf)(_Arg)) : _M_f(__pf) {}  void operator()(_Tp* __p, _Arg __x) const { (__p->*_M_f)(__x); }private:  void (_Tp::*_M_f)(_Arg);};/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.template <class _Tp, class _Arg>class const_mem_fun1_t<void, _Tp, _Arg>   : public binary_function<const _Tp*,_Arg,void> {public:  explicit const_mem_fun1_t(void (_Tp::*__pf)(_Arg) const) : _M_f(__pf) {}  void operator()(const _Tp* __p, _Arg __x) const { (__p->*_M_f)(__x); }private:  void (_Tp::*_M_f)(_Arg) const;};/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.template <class _Tp, class _Arg>class mem_fun1_ref_t<void, _Tp, _Arg>  : public binary_function<_Tp,_Arg,void> {public:  explicit mem_fun1_ref_t(void (_Tp::*__pf)(_Arg)) : _M_f(__pf) {}  void operator()(_Tp& __r, _Arg __x) const { (__r.*_M_f)(__x); }private:  void (_Tp::*_M_f)(_Arg);};/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.template <class _Tp, class _Arg>class const_mem_fun1_ref_t<void, _Tp, _Arg>  : public binary_function<_Tp,_Arg,void> {public:  explicit const_mem_fun1_ref_t(void (_Tp::*__pf)(_Arg) const) : _M_f(__pf) {}  void operator()(const _Tp& __r, _Arg __x) const { (__r.*_M_f)(__x); }private:  void (_Tp::*_M_f)(_Arg) const;};// Mem_fun adaptor helper functions.  There are only two:// mem_fun and mem_fun_ref.template <class _Ret, class _Tp>inline mem_fun_t<_Ret,_Tp> mem_fun(_Ret (_Tp::*__f)())  { return mem_fun_t<_Ret,_Tp>(__f); }template <class _Ret, class _Tp>inline const_mem_fun_t<_Ret,_Tp> mem_fun(_Ret (_Tp::*__f)() const)  { return const_mem_fun_t<_Ret,_Tp>(__f); }template <class _Ret, class _Tp>inline mem_fun_ref_t<_Ret,_Tp> mem_fun_ref(_Ret (_Tp::*__f)())   { return mem_fun_ref_t<_Ret,_Tp>(__f); }template <class _Ret, class _Tp>inline const_mem_fun_ref_t<_Ret,_Tp> mem_fun_ref(_Ret (_Tp::*__f)() const)  { return const_mem_fun_ref_t<_Ret,_Tp>(__f); }template <class _Ret, class _Tp, class _Arg>inline mem_fun1_t<_Ret,_Tp,_Arg> mem_fun(_Ret (_Tp::*__f)(_Arg))  { return mem_fun1_t<_Ret,_Tp,_Arg>(__f); }template <class _Ret, class _Tp, class _Arg>inline const_mem_fun1_t<_Ret,_Tp,_Arg> mem_fun(_Ret (_Tp::*__f)(_Arg) const)  { return const_mem_fun1_t<_Ret,_Tp,_Arg>(__f); }template <class _Ret, class _Tp, class _Arg>inline mem_fun1_ref_t<_Ret,_Tp,_Arg> mem_fun_ref(_Ret (_Tp::*__f)(_Arg))  { return mem_fun1_ref_t<_Ret,_Tp,_Arg>(__f); }template <class _Ret, class _Tp, class _Arg>inline const_mem_fun1_ref_t<_Ret,_Tp,_Arg>mem_fun_ref(_Ret (_Tp::*__f)(_Arg) const)  { return const_mem_fun1_ref_t<_Ret,_Tp,_Arg>(__f); }/** @}  */} // namespace std#endif /* __GLIBCPP_INTERNAL_FUNCTION_H */// Local Variables:// mode:C++// End:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -