亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
欧美成人精品福利| 久久国产免费看| 日本在线不卡视频一二三区| 国产一区二区精品久久99| 色综合久久中文综合久久牛| 精品国产乱码久久久久久浪潮| 亚洲精选一二三| 成人国产精品免费观看视频| 欧美一级黄色片| 亚洲影视在线播放| 9人人澡人人爽人人精品| 日韩精品一区二区三区在线播放| 一区二区三区中文免费| 高清shemale亚洲人妖| 日韩一本二本av| 亚洲不卡av一区二区三区| 91视频你懂的| 国产精品久久久久久亚洲毛片| 精品亚洲欧美一区| 日韩欧美一区二区免费| 日韩精彩视频在线观看| 一本大道久久a久久综合婷婷 | 国产盗摄视频一区二区三区| 欧美日韩一区二区三区免费看| 亚洲四区在线观看| 风间由美一区二区av101| 精品理论电影在线| 麻豆成人免费电影| 日韩网站在线看片你懂的| 日本不卡免费在线视频| 日韩一区二区三区四区| 免费看欧美女人艹b| 日韩一区二区三区免费观看| 日韩av网站免费在线| 日韩精品在线网站| 国产一区久久久| 欧美国产精品中文字幕| 成人av网址在线观看| 国产精品三级视频| 99vv1com这只有精品| 一区二区在线观看av| 色综合av在线| 午夜不卡在线视频| 欧美一区二区精品久久911| 久久精品噜噜噜成人av农村| 日韩欧美一区二区免费| 国产高清亚洲一区| 中文字幕不卡在线| 91农村精品一区二区在线| 一区二区三区日韩精品视频| 欧美区一区二区三区| 卡一卡二国产精品| 国产欧美日产一区| 欧美亚洲愉拍一区二区| 麻豆专区一区二区三区四区五区| 久久综合久色欧美综合狠狠| 国产精品综合久久| 亚洲欧美日韩国产一区二区三区| 欧美日韩免费高清一区色橹橹| 天天色综合成人网| 久久久五月婷婷| 91免费观看在线| 同产精品九九九| 久久久久久久电影| 日本丶国产丶欧美色综合| 丝袜美腿亚洲色图| 国产亚洲成aⅴ人片在线观看| 色哟哟国产精品| 麻豆91免费观看| |精品福利一区二区三区| 欧美怡红院视频| 国产美女一区二区| 亚洲欧洲综合另类在线| 精品久久久久久久久久久久久久久久久 | 日韩欧美国产三级| 99久久久精品免费观看国产蜜| 日韩成人免费电影| 国产精品久久三区| 欧美一区二区人人喊爽| 日本精品视频一区二区三区| 黄页视频在线91| 亚洲成国产人片在线观看| 欧美激情综合在线| 欧美一区二区三区性视频| 色综合久久88色综合天天免费| 久久精品国产精品亚洲精品| 亚洲欧美日韩国产综合在线| 久久久久亚洲综合| 7777精品伊人久久久大香线蕉完整版 | 久久91精品久久久久久秒播| 一区二区三区在线视频免费观看| 国产午夜精品一区二区三区嫩草| 欧美另类一区二区三区| 99re免费视频精品全部| 国产精品自产自拍| 久久精品国产亚洲aⅴ| 亚洲国产精品人人做人人爽| 国产免费成人在线视频| 久久综合国产精品| 精品毛片乱码1区2区3区 | 91视频在线观看| 成人视屏免费看| 国产精品2024| 国产在线一区观看| 久久国内精品视频| 老汉av免费一区二区三区| 日本美女一区二区| 日韩黄色片在线观看| 亚洲国产美国国产综合一区二区| 亚洲免费av观看| 伊人婷婷欧美激情| 亚洲精品免费看| 一区二区三区自拍| 一区二区三区四区在线播放 | 99久久精品免费| 高清在线不卡av| 高清av一区二区| 99综合影院在线| 91一区二区三区在线播放| 成人91在线观看| 91亚洲国产成人精品一区二三 | 91精品国产色综合久久久蜜香臀| 欧美久久免费观看| 制服丝袜亚洲播放| 日韩女优电影在线观看| 2017欧美狠狠色| 国产精品丝袜91| 亚洲欧美日韩国产综合在线 | 91精品国产一区二区三区| 日韩欧美国产不卡| 久久久青草青青国产亚洲免观| 欧美高清在线一区| 一区二区三区免费观看| 天天色综合天天| 国产成人午夜精品5599| 丁香天五香天堂综合| 色哟哟国产精品免费观看| 欧美精品99久久久**| 日韩一区二区免费视频| 国产欧美日韩在线观看| 亚洲三级在线看| 日韩av高清在线观看| 国产一区二区三区精品欧美日韩一区二区三区 | 国产+成+人+亚洲欧洲自线| 91在线视频免费91| 欧美日韩久久一区二区| 精品日本一线二线三线不卡 | 国产午夜精品一区二区| 亚洲精品一二三区| 麻豆视频一区二区| 北条麻妃一区二区三区| 欧美日韩国产综合一区二区三区| 日韩欧美国产一区二区三区| 国产精品传媒在线| 日韩激情一区二区| 播五月开心婷婷综合| 欧美二区三区91| 国产欧美日本一区视频| 丝袜国产日韩另类美女| 粗大黑人巨茎大战欧美成人| 欧美区一区二区三区| 国产精品久久久久久久蜜臀 | 精品黑人一区二区三区久久| 国产亚洲人成网站| 亚洲成av人片一区二区梦乃| 岛国精品在线播放| 精品日韩99亚洲| 亚洲bdsm女犯bdsm网站| 国产精品一级二级三级| 91精品视频网| 一区二区国产视频| 成人精品gif动图一区| 欧美mv日韩mv国产| 亚洲国产视频在线| 99久久免费国产| 国产喷白浆一区二区三区| 丝袜诱惑亚洲看片| 欧美三区在线观看| 一区二区三区四区乱视频| 国产精一区二区三区| 日韩一级黄色片| 日韩电影在线免费看| 欧美性猛交一区二区三区精品| 国产精品久久久久一区二区三区共| 国内一区二区在线| 精品国精品自拍自在线| 日本成人在线电影网| 欧美日韩亚洲另类| 一区二区三区高清| 91视频国产资源| 中文字幕中文在线不卡住| 国产成人一区二区精品非洲| 精品少妇一区二区三区在线视频 | 国产精品1区2区| 日韩欧美亚洲国产精品字幕久久久| 丝袜国产日韩另类美女| 欧美精品乱码久久久久久| 午夜精品一区二区三区电影天堂| 在线影院国内精品| 一二三区精品视频|