C 標準庫分析總結 九

2022-07-18 15:21:40 字數 1319 閱讀 3137

當我們在使用hash table以及由它做底層的資料結構時,我們必不可少要討論hash function,所謂的雜湊函式就是產生乙個數,這個數越亂越好,以至於達到避免碰撞或減少碰撞的目的,基本資料型別編譯器已經實現了相關的雜湊函式(比如int,char都是返回各自對應的數值)。

tuple<> 模板是 pair 模板的泛化,但允許定義 tuple 模板的例項,可以封裝不同型別的任意數量的物件,因此 tuple 例項可以有任意數量的模板型別引數。tuple 模板定義在 tuple 標頭檔案中,tuple 這個術語也適用於很多其他的場景,例如資料庫,這裡乙個 tuple 就是由一些型別的不同資料項組成的,這和 tuple 的概念相似。tuple 物件有很多用途。當需要將多個物件當作乙個物件傳給函式時,tuple 型別是很有用的。

是表示元組容器, 是不包含任何結構的,可以用於函式返回多個返回值;

tuple容器, 可以使用直接初始化, 和"make_tuple()"初始化, 訪問元素使用"get<>()"方法, 注意get裡面的位置資訊, 必須是常量表示式(const expression);

可以通過"std::tuple_size::value"獲取元素數量;"std::tuple_element<0, decltype(t)>::type"獲取元素型別;

如果tuple型別進行比較, 則需要保持元素數量相同, 型別可以比較, 如相同型別, 或可以相互轉換型別(int&double);

無法通過普通的方法遍歷tuple容器, 因為"get<>()"方法, 無法使用變數獲取值;

2.0新語法,typename... tail表示有多個型別很多個type,tail...表示有多個引數,這種新語法會自動遞迴,比如有5個引數,他會繼承4個引數的自己,就好比把5分成了1+4,然後繼續分4為1+3,一直到1+0終止(是在一直繼承)

C 標準庫總結

演算法 accumulate 在 include 中,accumulate 作用是對一對表示範圍的迭代器中的元素進行相加。如 accumulate v.begin v.end 0 表示將v中的元素以0為初始值進行相加。第三個引數表示 的型別。注意 accumulate vs.begin vs.end...

C標準庫實現分析

一 基本概念 1,核心態和使用者態 不同級別的 擁有不同的許可權,一般cpu把程序分成兩個態 使用者級和核心級。核心級的 是作業系統核心完全信任的 可以訪問系統的任何的資源。而使用者級的程序對有些系統資源的訪問是有限制的,比如 受系統保護的記憶體,和受限的埠等。使用者只有通過呼叫系統函式 核心態的函...

C 標準模板庫分析之一

一 標準模板庫 二 容器類 順序容器 關聯容器 容器介面卡 三 順序容器 vector 向量 類似於陣列,其定義在標頭檔案,可通過下標運算子 訪問。list 列表 類似於雙向鍊錶,其定義在標頭檔案,不能隨機訪問,支援的迭代器型別為雙向迭代器子。deque 雙端佇列 由雙端佇列組成,定義在中,可通過下...