functional_not1

functional_not1 (단항 술어 부정 헬퍼 함수)

std::not1은 단항 술어 함수의 부정을 반환하는 함수 객체를 생성하는 헬퍼 함수예요. 이 함수로 만들어진 함수 객체는 std::unary_negate<Predicate> 타입이에요. C++17에서 deprecated 되고 C++20에서 제거되었어요.

출처: cppreference

본문

헤더 <functional>에 정의됨
template < class Predicate > std :: unary_negate < Predicate > not1 ( const Predicate & pred ); (C++14까지)
template < class Predicate > constexpr std :: unary_negate < Predicate > not1 ( const Predicate & pred ); (C++14부터) (C++17에서 deprecated) (C++20에서 제거)

std::not1은 전달받은 단항 술어의 보수를 반환하는 함수 객체를 만들어요. 생성되는 함수 객체의 타입은 std::unary_negate<Predicate>예요.

단항 술어 타입은 멤버 타입 argument_type을 정의해야 하며, 이 타입은 술어의 매개변수 타입으로 변환 가능해야 해요. std::ref, std::cref, std::negate, std::logical_not, std::mem_fn, std::function, std::hash 또는 다른 std::not1 호출에서 얻은 단항 함수 객체는 이 타입을 정의하고 있어요. 또한 deprecated된 std::unary_function에서 파생된 함수 객체도 마찬가지예요.

매개변수

pred - 단항 술어

반환값

std::not1은 pred로 생성된 std::unary_negate<Predicate> 타입의 객체를 반환해요.

예제

#include <algorithm>
#include <functional>
#include <iostream>
#include <iterator>
#include <numeric>
#include <vector>

struct LessThan7 : std::unary_function<int, bool>
{
    bool operator()(int i) const { return i < 7; }
};

int main()
{
    std::vector<int> v(10);
    std::iota(std::begin(v), std::end(v), 0);
    
    std::cout << std::count_if(begin(v), end(v), std::not1(LessThan7())) << '\n';
    
    // the same as above using std::function
    std::function<bool(int)> less_than_9 = [](int x) { return x < 9; };
    std::cout << std::count_if(begin(v), end(v), std::not1(less_than_9)) << '\n';
}

출력:

3
1

같이 보기

not_fn (C++17) 보유한 함수 객체의 결과의 보수를 반환하는 함수 객체를 생성해요 (함수 템플릿)
unary_negate (C++17에서 deprecated, C++20에서 제거) 보유한 단항 술어의 보수를 반환하는 래퍼 함수 객체 (클래스 템플릿)
function (C++11) 복사 생성 가능한 호출 객체를 복사할 수 있는 래퍼 (클래스 템플릿)
move_only_function (C++23) 주어진 호출 시그니처에서 한정자를 지원하는 모든 호출 객체의 이동 전용 래퍼 (클래스 템플릿)
not2 (C++17에서 deprecated, C++20에서 제거) 사용자 정의 std::binary_negate 객체를 생성해요 (함수 템플릿)
ptr_fun (C++11에서 deprecated, C++17에서 제거) 함수 포인터에서 어댑터 호환 함수 객체 래퍼를 생성해요 (함수 템플릿)
unary_function (C++11에서 deprecated, C++17에서 제거) 어댑터 호환 단항 함수 기본 클래스 (클래스 템플릿)

더 알아보기 (Learn more)

cppreference