1. 程式人生 > 其它 >C++ 的not1與not2

C++ 的not1與not2

技術標籤:C++

一、介紹

not1是構造一個與謂詞結果相反的一元函式物件。
not2是構造一個與謂詞結果相反的二元函式物件。

二、用法

not1

// not1 example
#include <iostream>     // std::cout
#include <functional>   // std::not1
#include <algorithm>    // std::count_if

struct IsOdd {//是否為奇數
  bool operator() (const int& x) const {return x%2==1;}
  typedef int argument_type;
};

int main () {
  int values[] = {1,2,3,4,5};
  int cx = std::count_if (values, values+5, std::not1(IsOdd()));//計算不為奇數的個數
  std::cout << "There are " << cx << " elements with even values.\n";
  return 0;
}

not2

#include <iostream>
#include <algorithm>
#include <functional>

using namespace std;

int main()
{

	std::vector<int> nums = { 5, 3, 4, 9, 1, 7, 6, 2, 8 };

	//升序
	std::function<bool(int, int)> ascendingOrder = [](int a, int b) { return a < b; };

	// 排序,不是按升序,而是按降序
	std::sort(nums.begin(), nums.end(), std::not2(ascendingOrder));

	for (int i : nums) {
		std::cout << i << " ";
	}
    return 0 ;

}

參考:

https://www.cnblogs.com/MrLiuZF/p/14078499.html

https://www.jianshu.com/p/c7f3a04f88b7