Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::binary_negate

      From cppreference.com
      <cpp‎ |utility‎ |functional
       
       
      Utilities library
       
      Function objects
      Function invocation
      (C++17)(C++23)
      Identity function object
      (C++20)
      Old binders and adaptors
      (until C++17*)
      (until C++17*)
      (until C++17*)
      (until C++17*)  
      (until C++17*)
      (until C++17*)(until C++17*)(until C++17*)(until C++17*)
      (until C++20*)
      (until C++20*)
      (until C++17*)(until C++17*)
      (until C++17*)(until C++17*)

      (until C++17*)
      (until C++17*)(until C++17*)(until C++17*)(until C++17*)
      (until C++20*)
      binary_negate
      (until C++20*)
       
      Defined in header<functional>
      template<class Predicate>

      struct binary_negate
         :publicstd::binary_function<
              Predicate::first_argument_type,
              Predicate::second_argument_type,
             bool

         >;
      (until C++11)
      template<class Predicate>
      struct binary_negate;
      (since C++11)
      (deprecated in C++17)
      (removed in C++20)

      std::binary_negate is a wrapper function object returning the complement of the binary predicate it holds.

      The binary predicate type must define two member types,first_argument_type andsecond_argument_type, that are convertible to the predicate's parameter types. The function objects obtained fromstd::owner_less,std::ref,std::cref,std::plus,std::minus,std::multiplies,std::divides,std::modulus,std::equal_to,std::not_equal_to,std::greater,std::less,std::greater_equal,std::less_equal,std::logical_not,std::logical_or,std::bit_and,std::bit_or,std::bit_xor,std::mem_fn,std::map::value_comp,std::multimap::value_comp,std::function, or from a call tostd::not2 have these types defined, as are function objects derived from the deprecatedstd::binary_function.

      std::binary_negate objects are easily constructed with helper functionstd::not2.

      Contents

      [edit]Member types

      Type Definition
      first_argument_typePredicate::first_argument_type
      second_argument_typePredicate::second_argument_type
      result_typebool

      [edit]Member functions

      (constructor)
      constructs a new binary_negate object with the supplied predicate
      (public member function)
      operator()
      returns the logical complement of the result of a call to the stored predicate
      (public member function)

      std::binary_negate::binary_negate

      explicit binary_negate( Predicateconst& pred);
      (until C++14)
      constexprexplicit binary_negate( Predicateconst& pred);
      (since C++14)

      Constructs astd::binary_negate function object with the stored predicatepred.

      Parameters

      pred - predicate function object

      std::binary_negate::operator()

      bool operator()( first_argument_typeconst& x,
                       second_argument_typeconst& y)const;
      (until C++14)
      constexprbool operator()( first_argument_typeconst& x,
                                 second_argument_typeconst& y)const;
      (since C++14)

      Returns the logical complement of the result of callingpred(x, y).

      Parameters

      x - first argument to pass through to predicate
      y - second argument to pass through to predicate

      Return value

      The logical complement of the result of callingpred(x, y).

      [edit]Example

      Run this code
      #include <algorithm>#include <cstddef>#include <functional>#include <iostream>#include <vector> struct same:std::binary_function<int,int,bool>{bool operator()(int a,int b)const{return a== b;}}; int main(){std::vector<int> v1;for(int i=0; i<7;++i)        v1.push_back(i); std::vector<int> v2(v1.size());std::reverse_copy(v1.begin(), v1.end(), v2.begin()); std::vector<bool> v3(v1.size());     std::binary_negate<same> not_same((same())); // C++11 solution:// std::function<bool (int, int)> not_same =//     [](int x, int y) -> bool { return !same()(x, y); }; std::transform(v1.begin(), v1.end(), v2.begin(), v3.begin(), not_same); std::cout.setf(std::ios_base::boolalpha);for(std::size_t i=0; i!= v1.size();++i)std::cout<< v1[i]<<" != "<< v2[i]<<" : "<< v3[i]<<'\n';}

      Output:

      0 != 6 : true1 != 5 : true2 != 4 : true3 != 3 : false4 != 2 : true5 != 1 : true6 != 0 : true

      [edit]See also

      (deprecated in C++11)(removed in C++17)
      adaptor-compatible binary function base class
      (class template)[edit]
      (C++11)
      copyable wrapper of any copy constructible callable object
      (class template)[edit]
      move-only wrapper of any callable object that supports qualifiers in a given call signature
      (class template)[edit]
      (deprecated in C++17)(removed in C++20)
      constructs customstd::binary_negate object
      (function template)[edit]
      (deprecated in C++11)(removed in C++17)
      creates an adaptor-compatible function object wrapper from a pointer to function
      (function template)[edit]
      (deprecated in C++17)(removed in C++20)
      wrapper function object returning the complement of the unary predicate it holds
      (class template)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/utility/functional/binary_negate&oldid=161374"

      [8]ページ先頭

      ©2009-2025 Movatter.jp