1. 程式人生 > >c++ 原始碼 之 標準庫min與max

c++ 原始碼 之 標準庫min與max

我覺得學習是需要正反饋了

如果覺得標準庫原始碼很難讀懂的話

是時候出現一些給予自己正反饋的內容

來看在 < bits/stl_algobase.h >裡的min與max

  /**
  //作者的註釋說了,這裡就是做了 你覺得的哪些東西
   *  @brief This does what you think it does.
   *  @ingroup sorting_algorithms
   *  @param  __a  A thing of arbitrary type.
   *  @param  __b  Another thing of arbitrary type.
   *  @return
The lesser of the parameters. template<typename _Tp> _GLIBCXX14_CONSTEXPR inline const _Tp& min(const _Tp& __a, const _Tp& __b) { // concept requirements __glibcxx_function_requires(_LessThanComparableConcept<_Tp>) //return __b < __a ? __b : __a; if (__b < __a) return
__b; return __a; } template<typename _Tp> _GLIBCXX14_CONSTEXPR inline const _Tp& max(const _Tp& __a, const _Tp& __b) { // concept requirements __glibcxx_function_requires(_LessThanComparableConcept<_Tp>) //return __a < __b ? __b : __a; if (__a < __b) return __b; return
__a; } 毫無疑問的主體就是 if的內容 至於巨集則可以先不去管他

我們自己提煉一下


namespace lthstd {
  template< typename _Tp>
  inline const _Tp&
  min (const  _Tp &__a , const _Tp& __b ){
    if( __a < __b )
      return __a;
    return __b ;
  }

  template < typename _Tp >
  inline const _Tp&
  max ( const _Tp& __a , const _Tp & __b ){
    if( __a > __b )
      return __a ;
    return __b ;
  }
}

是不是得到了正反饋 :)

相關推薦

c++ 原始碼 標準minmax

我覺得學習是需要正反饋了 如果覺得標準庫原始碼很難讀懂的話 是時候出現一些給予自己正反饋的內容 來看在 < bits/stl_algobase.h >裡的min與max

c++標準數字字元相互轉換

1.字串轉數字 使用C++11引入的C++庫函式將string轉換為數值型別,相應的庫函式申明於標頭檔案<string>中。 名稱    原型    說明 stoi    int stoi

c++標準型別string

標準庫型別string 表示可變長的字元序列,使用string型別必須首先包含string標頭檔案。 #include <string> using namesapce std; 讀取未知數量的物件 int main() {

c++ 原始碼 辨準swap

寫這篇文章的原因,希望自己能在技術的道路上越走越遠,在一年前使用c語言寫了些資料結構後,學會了使用工具的stl,但是希望自己能在原始碼上對自己使用的stl更加的深入瞭解,由於本人的學識淺薄,如有錯誤,還望摘正 首先我們要有stl source code 使

C++的iostream標準介紹以及對左移右移運算子的過載

   我們從一開始就一直在利用C++的輸入輸出在做著各種練習,輸入輸出是由iostream庫提供的,所以討論此標準庫是有必要的,它與C語言的 stdio庫不同,它從一開始就是用多重繼承與虛擬繼承實現的面向物件的層次結構,作為一個c++的標準庫元件提供給程式設計師使用。   iostr

C++中malloc/free , new/delete標準函式運算子區別

malloc/free是標準庫函式,new/delete是運算子。他們都可以用來申請動態記憶體和釋放記憶體。下面來看他們的區別。 標準庫函式:庫函式是依賴於庫的,沒有庫就沒有它,也就是一定程度上獨立於語言的。理論上,編譯器不知道也不關心函式的作用,編譯器只保證

C語言檔案操作標準函式Linux系統函式效率比較

我們都知道,C語言在UNIX/Linux系統下有一套系統呼叫(系統函式),比如檔案操作open()、close()、write()、read()等,而標準C語言的庫函式中也有一套對檔案的操作函式fopen()、fclose()、fwrite()、fread()等

Python 基礎 - Day 5 Learning Note - 模塊 標準:datetime (2)

基礎 格式 時間 日期和時間 bin att class ext one 介紹 Datetime 模塊是time模塊的再次封裝,提供了更多的接口。主要是日期和時間的解析,格式化及運算。 其他關於時間的模塊: time - basic calendar - basic

學習筆記-模塊標準shutil

als code 遞歸 .com path rmp 包名 文件內容 pre shutil是高級的 文件、文件夾、壓縮包 處理模塊 1.shutil.copyfileobj(fsrc, fdst[, length]) 1 f1=open(‘D:\\Test\day5\\te

C++11右值引用移動構造

添加 oooo 返回對象 oat 值引用 apc 定義 tco pri ----------------------------右值引用--------------------------------- 右值定義:   通俗來講,賦值號左邊的就是左值,賦值號右邊的就

Python 3 學習筆記——標準概述

sun 教程 glob 更改 birt 同時 sys 系統命令 www 1. 操作系統接口 os 模塊提供了一些與操作系統相關聯的函數。 >>> os.getcwd() # 獲取當前工作目錄 ‘/home/senius‘ >

《Python程式設計從入門到實踐》記錄range、minmax、sum函式

目錄 1、range()函式 2、min、max、sum函式 ​​​​​​1、range()函式 range(num1,num2,steps)函式:可以生成一個一系列數字。 num1引數:表示起始範圍 num2引數:表示終止範圍,但不包含此數字。 steps

《隨筆十八》—— C++中的 “ 標準型別string ”

  目錄 初始化 string 物件的方式 string 物件的操作 cin 和 getline  讀寫 string物件 string 的 size ()操作 和  string::size_type 型別 比較string物件

C#】 封裝、繼承多型

我們知道封裝、繼承和多型是面向物件方法設計中的三大基本特性,下面將具體講解這三個特性的具體表現及意義。 #一、封裝 ##1、說明   從字面意思上看,封裝就是打包的意思,將什麼包裝起來,專業一點就是資訊的隱藏,將物件的屬性和方法打包成一個相對獨立的單位,儘可能隱蔽物件的內部細

python標準--時間日期

日期和時間(https://docs.python.org/3/library/datetime.html) datetime模組 date類-例項屬性: year  month day

c/c++ 過載運算子 標準function的用法

過載運算子 標準庫function的用法 問題:int(int, int)算不算一種比較通用的型別?? 比如函式: int add(int a, int b); 比如lambda:auto mod = [](int a, int b){return a % b}; 比如函式物件類:int operat

深入學習jquery原始碼prev()和prevAll()prevUntil()

深入學習jquery原始碼之prev()和prevAll()與prevUntil() prev([expr]) 概述 取得一個包含匹配的元素集合中每一個元素緊鄰的前一個同輩元素的元素集合。 可以用一個可選的表示式進行篩選。只有緊鄰的同輩元素會被匹配到,而不是前面所有的同輩元素。

深入學習jquery原始碼parent()和parents()parentsUntil()

深入學習jquery原始碼之parent()和parents()與parentsUntil() parent([expr]) 概述 取得一個包含著所有匹配元素的唯一父元素的元素集合。 你可以使用可選的表示式來篩選。 引數 expr String 用來篩選的表示式

深入學習jquery原始碼next()和nextAll()nextUntil()

深入學習jquery原始碼之next()和nextAll()與nextUntil() next([expr]) 概述 取得一個包含匹配的元素集合中每一個元素緊鄰的後面同輩元素的元素集合。 這個函式只返回後面那個緊鄰的同輩元素,而不是後面所有的同輩元素(可以使用nextAll)。可以用

深入學習jquery原始碼siblings()和children()contents()

深入學習jquery原始碼之siblings()和children()與contents() siblings([expr]) 概述 取得一個包含匹配的元素集合中每一個元素的所有唯一同輩元素的元素集合。可以用可選的表示式進行篩選。 引數 expr String 用於