複製鏈接
請複製以下鏈接發送給好友

CMP

(C++ sort函數自定義關鍵字函數)

鎖定
比較函數compare()縮寫cmp。
Binary function that accepts two elements in the range as arguments, and returns a value convertible to bool. The value returned indicates whether the element passed as first argument is considered to go before the second in the specific strict weak ordering it defines.The function shall not modify any of its arguments.This can either be a function pointer or a function object. [1] 
比較函數,以形參列表中的兩個元素作為參數,並返回可轉換為bool類型的值。 返回的值表示作為第一個參數傳遞的元素是否被認為是在它定義的特定嚴格弱順序中的第二個參數之前。
該函數不得修改其任何參數。
這可以是函數指針或函數對象。
中文名
比較函數
外文名
A comparison functor
參數原型
_Compare __comp
所屬函數
sort

目錄

CMPsort函數信息

functiontemplate<algorithm> [2] 
std::sort [1] 
default (1)
template <class RandomAccessIterator> void sort (RandomAccessIterator first, RandomAccessIterator last);
custom (2)
template <class RandomAccessIterator, class Compare> void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);

CMP實例

CMPExample

// sort algorithm example
#include <iostream>     // std::cout
#include <algorithm>    // std::sort
#include <vector>       // std::vector

bool myfunction (int i,int j) { return (i<j); }

struct myclass {
  bool operator() (int i,int j) { return (i<j);}
} myobject;

int main () {
  int myints[] = {32,71,12,45,26,80,53,33};
  std::vector<int> myvector (myints, myints+8);               // 32 71 12 45 26 80 53 33

  // using default comparison (operator <):
  std::sort (myvector.begin(), myvector.begin()+4);           //(12 32 45 71)26 80 53 33

  // using function as comp
  std::sort (myvector.begin()+4, myvector.end(), myfunction); // 12 32 45 71(26 33 53 80)

  // using object as comp
  std::sort (myvector.begin(), myvector.end(), myobject);     //(12 26 32 33 45 53 71 80)

  // print out content:
  std::cout << "myvector contains:";
  for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << '\n';

  return 0;
}

CMPOutput

myvector contains: 12 26 32 33 45 53 71 80
參考資料