亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? stl_function.h

?? 粗慥集成算法集合 ,并有詳細的文檔資料和測試數據處
?? H
?? 第 1 頁 / 共 2 頁
字號:
/*
 *
 * Copyright (c) 1994
 * Hewlett-Packard Company
 *
 * Copyright (c) 1996-1998
 * Silicon Graphics Computer Systems, Inc.
 *
 * Copyright (c) 1997
 * Moscow Center for SPARC Technology
 *
 * Copyright (c) 1999 
 * Boris Fomitchev
 *
 * This material is provided "as is", with absolutely no warranty expressed
 * or implied. Any use is at your own risk.
 *
 * Permission to use or copy this software for any purpose is hereby granted 
 * without fee, provided the above notices are retained on all copies.
 * Permission to modify the code and to distribute modified code is granted,
 * provided the above notices are retained, and a notice that the code was
 * modified is included with the above copyright notice.
 *
 */

/* NOTE: This is an internal header file, included by other STL headers.
 *   You should not attempt to use it directly.
 */

#ifndef __SGI_STL_INTERNAL_FUNCTION_H
#define __SGI_STL_INTERNAL_FUNCTION_H

__STL_BEGIN_NAMESPACE

template <class _Arg, class _Result>
struct unary_function {
  typedef _Arg argument_type;
  typedef _Result result_type;
};

template <class _Arg1, class _Arg2, class _Result>
struct binary_function {
  typedef _Arg1 first_argument_type;
  typedef _Arg2 second_argument_type;
  typedef _Result result_type;
};      

template <class _Tp>
struct plus : public binary_function<_Tp,_Tp,_Tp> {
  _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x + __y; }
};

template <class _Tp>
struct minus : public binary_function<_Tp,_Tp,_Tp> {
  _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x - __y; }
};

template <class _Tp>
struct multiplies : public binary_function<_Tp,_Tp,_Tp> {
  _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x * __y; }
};

template <class _Tp>
struct divides : public binary_function<_Tp,_Tp,_Tp> {
  _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x / __y; }
};

// identity_element (not part of the C++ standard).

template <class _Tp> inline _Tp identity_element(plus<_Tp>) {
  return _Tp(0);
}
template <class _Tp> inline _Tp identity_element(multiplies<_Tp>) {
  return _Tp(1);
}

template <class _Tp>
struct modulus : public binary_function<_Tp,_Tp,_Tp> 
{
  _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x % __y; }
};

template <class _Tp>
struct negate : public unary_function<_Tp,_Tp> 
{
  _Tp operator()(const _Tp& __x) const { return -__x; }
};

template <class _Tp>
struct equal_to : public binary_function<_Tp,_Tp,bool> 
{
  bool operator()(const _Tp& __x, const _Tp& __y) const { return __x == __y; }
};

template <class _Tp>
struct not_equal_to : public binary_function<_Tp,_Tp,bool> 
{
  bool operator()(const _Tp& __x, const _Tp& __y) const { return __x != __y; }
};

template <class _Tp>
struct greater : public binary_function<_Tp,_Tp,bool> 
{
  bool operator()(const _Tp& __x, const _Tp& __y) const { return __x > __y; }
};

template <class _Tp>
struct less : public binary_function<_Tp,_Tp,bool> 
{
  bool operator()(const _Tp& __x, const _Tp& __y) const { return __x < __y; }
};

template <class _Tp>
struct greater_equal : public binary_function<_Tp,_Tp,bool>
{
  bool operator()(const _Tp& __x, const _Tp& __y) const { return __x >= __y; }
};

template <class _Tp>
struct less_equal : public binary_function<_Tp,_Tp,bool> 
{
  bool operator()(const _Tp& __x, const _Tp& __y) const { return __x <= __y; }
};

template <class _Tp>
struct logical_and : public binary_function<_Tp,_Tp,bool>
{
  bool operator()(const _Tp& __x, const _Tp& __y) const { return __x && __y; }
};

template <class _Tp>
struct logical_or : public binary_function<_Tp,_Tp,bool>
{
  bool operator()(const _Tp& __x, const _Tp& __y) const { return __x || __y; }
};

template <class _Tp>
struct logical_not : public unary_function<_Tp,bool>
{
  bool operator()(const _Tp& __x) const { return !__x; }
};

#  if defined (__STL_BASE_TYPEDEF_BUG)
// this workaround is needed for SunPro 4.0.1
// suggested by "Martin Abernethy" <gma@paston.co.uk>:

// We have to introduce the XXary_predicate_aux structures in order to
// access the argument and return types of predicate functions supplied
// as type parameters. SUN C++ 4.0.1 compiler gives errors for template type parameters
// of the form 'name1::name2', where name1 is itself a type parameter.
template <class _Pair>
struct __pair_aux : private _Pair
{
	typedef typename _Pair::first_type first_type;
	typedef typename _Pair::second_type second_type;
};

template <class _Operation>
struct __unary_fun_aux : private _Operation
{
	typedef typename _Operation::argument_type argument_type;
	typedef typename _Operation::result_type result_type;
};

template <class _Operation>
struct __binary_fun_aux  : private _Operation
{
	typedef typename _Operation::first_argument_type first_argument_type;
	typedef typename _Operation::second_argument_type second_argument_type;
	typedef typename _Operation::result_type result_type;
};

#  define __UNARY_ARG(__Operation,__type)  __unary_fun_aux<__Operation>::__type
#  define __BINARY_ARG(__Operation,__type)  __binary_fun_aux<__Operation>::__type
#  define __PAIR_ARG(__Pair,__type)  __pair_aux<__Pair>::__type
# else
#  define __UNARY_ARG(__Operation,__type)  __Operation::__type
#  define __BINARY_ARG(__Operation,__type) __Operation::__type
#  define __PAIR_ARG(__Pair,__type) __Pair::__type
# endif

template <class _Predicate>
class unary_negate : 
    public unary_function<typename __UNARY_ARG(_Predicate,argument_type), bool> {
protected:
  _Predicate _M_pred;
public:
  explicit unary_negate(const _Predicate& __x) : _M_pred(__x) {}
  bool operator()(const typename _Predicate::argument_type& __x) const {
    return !_M_pred(__x);
  }
};

template <class _Predicate>
inline unary_negate<_Predicate> 
not1(const _Predicate& __pred)
{
  return unary_negate<_Predicate>(__pred);
}

template <class _Predicate> 
class binary_negate 
    : public binary_function<typename __BINARY_ARG(_Predicate,first_argument_type),
			     typename __BINARY_ARG(_Predicate,second_argument_type), 
                             bool> {
protected:
  _Predicate _M_pred;
public:
  explicit binary_negate(const _Predicate& __x) : _M_pred(__x) {}
  bool operator()(const typename _Predicate::first_argument_type& __x, 
                  const typename _Predicate::second_argument_type& __y) const
  {
    return !_M_pred(__x, __y); 
  }
};

template <class _Predicate>
inline binary_negate<_Predicate> 
not2(const _Predicate& __pred)
{
  return binary_negate<_Predicate>(__pred);
}

template <class _Operation> 
class binder1st : 
    public unary_function<typename __BINARY_ARG(_Operation,second_argument_type),
                          typename __BINARY_ARG(_Operation,result_type) > {
protected:
  _Operation _M_op;
  typename _Operation::first_argument_type _M_value;
public:
  binder1st(const _Operation& __x,
            const typename _Operation::first_argument_type& __y)
      : _M_op(__x), _M_value(__y) {}
  typename _Operation::result_type
  operator()(const typename _Operation::second_argument_type& __x) const {
    return _M_op(_M_value, __x); 
  }
};

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));
}

template <class _Operation> 
class binder2nd
  : public unary_function<typename __BINARY_ARG(_Operation,first_argument_type),
                          typename __BINARY_ARG(_Operation,result_type)> {
protected:
  _Operation _M_op;
  typename _Operation::second_argument_type value;
public:
  binder2nd(const _Operation& __x,
            const typename _Operation::second_argument_type& __y) 
      : _M_op(__x), value(__y) {}
  typename _Operation::result_type
  operator()(const typename _Operation::first_argument_type& __x) const {
    return _M_op(__x, value); 
  }
};

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));
}

// unary_compose and binary_compose (extensions, not part of the standard).

template <class _Operation1, class _Operation2>
class unary_compose : 
  public unary_function<typename __UNARY_ARG(_Operation2,argument_type),
                        typename __UNARY_ARG(_Operation1,result_type)> {
protected:
  _Operation1 _M_fn1;
  _Operation2 _M_fn2;
public:
  unary_compose(const _Operation1& __x, const _Operation2& __y) 
    : _M_fn1(__x), _M_fn2(__y) {}
  typename _Operation1::result_type
  operator()(const typename _Operation2::argument_type& __x) const {
    return _M_fn1(_M_fn2(__x));
  }
};

template <class _Operation1, class _Operation2>
inline unary_compose<_Operation1,_Operation2> 
compose1(const _Operation1& __fn1, const _Operation2& __fn2)
{
  return unary_compose<_Operation1,_Operation2>(__fn1, __fn2);
}

template <class _Operation1, class _Operation2, class _Operation3>
class binary_compose : 
    public unary_function<typename __UNARY_ARG(_Operation2,argument_type),
                          typename __BINARY_ARG(_Operation1,result_type)> {
protected:
  _Operation1 _M_fn1;
  _Operation2 _M_fn2;
  _Operation3 _M_fn3;
public:
  binary_compose(const _Operation1& __x, const _Operation2& __y, 
                 const _Operation3& __z) 
    : _M_fn1(__x), _M_fn2(__y), _M_fn3(__z) { }
  typename _Operation1::result_type
  operator()(const typename _Operation2::argument_type& __x) const {
    return _M_fn1(_M_fn2(__x), _M_fn3(__x));
  }
};

template <class _Operation1, class _Operation2, class _Operation3>
inline binary_compose<_Operation1, _Operation2, _Operation3> 
compose2(const _Operation1& __fn1, const _Operation2& __fn2, 
         const _Operation3& __fn3)
{
  return binary_compose<_Operation1,_Operation2,_Operation3>
    (__fn1, __fn2, __fn3);
}

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); }
};

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);
}

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);
    }
};

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);
}

// identity is an extension: it is not part of the standard.
template <class _Tp>
struct _Identity : public unary_function<_Tp,_Tp> {
  const _Tp& operator()(const _Tp& __x) const { return __x; }
};

template <class _Tp> struct identity : public _Identity<_Tp> {};

# ifdef __STL_USE_ABBREVS
#  define _Select1st _S1st
#  define _Select2nd _S2nd
# endif

// select1st and select2nd are extensions: they are not part of the standard.
template <class _Pair>
struct _Select1st : public unary_function<_Pair, typename _Pair::first_type> {
  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>
{
  const typename _Pair::second_type& operator()(const _Pair& __x) const {
    return __x.second;
  }
};

#ifdef __STL_MULTI_CONST_TEMPLATE_ARG_BUG
// fbp : sort of select1st just for maps
template <class _Pair, class _U>		
// JDJ (CW Pro1 doesn't like const when first_type is also const)
struct __Select1st_hint : public unary_function<_Pair, _U> {
    const _U& operator () (const _Pair& __x) const { return __x.first; }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产精品一区二区| 成人一区二区三区在线观看 | 日韩中文字幕区一区有砖一区 | 欧美日韩国产另类一区| 久久精品视频免费观看| 亚洲午夜免费视频| 国产一区二区在线电影| 欧美日韩视频专区在线播放| 中文字幕国产一区| 蜜桃视频在线一区| 欧美在线视频不卡| 亚洲国产精品t66y| 国内外成人在线| 欧美日韩精品一区二区三区四区 | 粉嫩av亚洲一区二区图片| 欧美日韩aaaaaa| 亚洲免费色视频| 国产suv精品一区二区三区| 日韩一区二区三区免费观看| 亚洲gay无套男同| 91天堂素人约啪| 国产精品免费丝袜| 国产精品一区二区久久精品爱涩| 欧美精品123区| 亚洲一区二区三区中文字幕在线| 91尤物视频在线观看| 欧美国产97人人爽人人喊| 国产精品一级片在线观看| 欧美一区二区三区免费在线看| 亚洲精品日韩综合观看成人91| 成人av网站免费观看| 国产欧美精品一区二区色综合| 精品一区二区国语对白| 日韩女优av电影| 狠狠色狠狠色综合日日91app| 日韩三级免费观看| 美女高潮久久久| 欧美电视剧在线看免费| 精品在线播放午夜| 欧美一级二级三级蜜桃| 一区二区激情视频| 欧美日韩在线三区| 蜜臀av亚洲一区中文字幕| 精品久久久久久久久久久久久久久| 日本网站在线观看一区二区三区| 777午夜精品免费视频| 免费看欧美女人艹b| 精品国产乱码久久| 丁香五精品蜜臀久久久久99网站| 国产精品久久久久aaaa樱花| 一本色道a无线码一区v| 亚洲成人手机在线| 精品剧情v国产在线观看在线| 国产一区二区三区| 国产精品久久久久国产精品日日| 91在线高清观看| 天堂蜜桃91精品| 2020日本不卡一区二区视频| 99视频国产精品| 婷婷国产v国产偷v亚洲高清| 亚洲精品一区二区三区在线观看| 丁香另类激情小说| 亚洲综合在线第一页| 日韩一级黄色大片| 成人av免费在线观看| 亚洲一级二级三级在线免费观看| 欧美一级二级三级蜜桃| 99久久综合色| 免费久久99精品国产| 欧美激情资源网| 欧美老肥妇做.爰bbww| 国产激情视频一区二区三区欧美 | 久久精品亚洲精品国产欧美 | 国产精品羞羞答答xxdd | 久久亚洲一区二区三区四区| 99久久精品情趣| 日本在线不卡一区| 中文字幕一区二区三区四区不卡 | 一区二区三区成人| 精品av久久707| 91电影在线观看| 国产福利一区二区| 日一区二区三区| 亚洲人成7777| 久久免费午夜影院| 在线不卡欧美精品一区二区三区| 成人爽a毛片一区二区免费| 午夜电影一区二区三区| 国产日韩欧美精品一区| 欧美一区二区日韩| 色婷婷精品久久二区二区蜜臂av| 国产精品一区二区无线| 免播放器亚洲一区| 亚洲永久免费视频| 亚洲免费大片在线观看| 国产欧美日韩麻豆91| 精品少妇一区二区三区在线播放| 欧美这里有精品| 北条麻妃一区二区三区| 国产在线观看一区二区 | 亚洲欧洲日韩女同| 日韩久久免费av| 欧美一级艳片视频免费观看| 欧美视频你懂的| 日本久久精品电影| 99视频精品全部免费在线| 国产成人在线影院| 国产盗摄视频一区二区三区| 国产尤物一区二区在线| 捆绑紧缚一区二区三区视频| 日日摸夜夜添夜夜添国产精品| 亚洲一区日韩精品中文字幕| 亚洲三级视频在线观看| 1024国产精品| 亚洲视频1区2区| 一区二区三区中文免费| 夜夜爽夜夜爽精品视频| 亚洲韩国精品一区| 亚洲成人激情av| 日韩成人伦理电影在线观看| 日av在线不卡| 毛片不卡一区二区| 激情综合色综合久久| 久久 天天综合| 激情欧美一区二区| 国产黄色成人av| 99久久婷婷国产综合精品电影| 成人动漫视频在线| 一本色道久久综合精品竹菊| 欧美主播一区二区三区| 欧美一区午夜视频在线观看| 欧美电影免费提供在线观看| 26uuu亚洲婷婷狠狠天堂| 国产日产欧美一区| 中文字幕一区日韩精品欧美| 亚洲自拍另类综合| 久久国产欧美日韩精品| 国产精品一卡二卡| 色屁屁一区二区| 欧美一区二区三区在线视频| 久久综合色之久久综合| 国产精品欧美一区喷水| 亚洲一二三四区不卡| 蜜臀99久久精品久久久久久软件| 国产一区二区三区在线观看免费 | 极品少妇xxxx偷拍精品少妇| 国精产品一区一区三区mba视频| 国产91丝袜在线观看| 色综合天天综合狠狠| 3d动漫精品啪啪一区二区竹菊 | 精品一区二区三区av| av一区二区久久| 欧美日韩激情一区| 亚洲精品在线电影| 亚洲另类中文字| 久久电影国产免费久久电影| 成人av一区二区三区| 在线不卡一区二区| 国产精品美女久久久久久 | 免费欧美在线视频| 丰满白嫩尤物一区二区| 欧美日韩在线播放三区四区| 久久一日本道色综合| 亚洲久草在线视频| 韩国毛片一区二区三区| 91丨porny丨中文| 精品免费日韩av| 亚洲精品美国一| 国产一区二区三区综合| 欧美日韩一区二区电影| 国产精品午夜电影| 久久精品国产久精国产爱| 99精品视频免费在线观看| 精品欧美一区二区三区精品久久 | 日本人妖一区二区| 97精品超碰一区二区三区| 亚洲精品在线网站| 午夜久久福利影院| youjizz久久| 久久久.com| 日本不卡视频在线| 在线观看免费成人| 亚洲图片另类小说| 国产黑丝在线一区二区三区| 欧美一二区视频| 亚洲一卡二卡三卡四卡 | 欧美日韩三级一区二区| 国产精品久久午夜| 国内精品写真在线观看| 911国产精品| 午夜视频在线观看一区二区三区 | 国产精品久久久久影视| 国产精品一区二区久久精品爱涩| 欧美成人精精品一区二区频| 亚洲第一久久影院| 欧美在线免费播放| 亚洲第一久久影院| 欧美日韩精品欧美日韩精品一| 亚洲免费观看在线视频| 91视频免费看|