第三章 演算法概述

2021-09-30 04:15:45 字數 737 閱讀 7926

3.5.1 模板語法

模板函式的模型和實現從乙個模板參數列開始。其語法包括關鍵字template,後面緊跟用角擴號括起來的形式型別的非空表在這個參數列中,每種型別前面都有關鍵字typename , 不同的型別之間用逗號隔開。

//乙個模板型別的參數列

template

//多個模板型別的參數列

template

儘管不是必須的,但c++程式設計師通常使用t表示模板引數中的型別。當程式使用模板函式時,編譯器會把t與實際的c++型別聯絡起來,如整形或字元型,或者程式設計師自定義的型別,然後,用指定的c++型別替換t 。

除了初始模板參數列之外,模板函式的宣告和實現遵循函式編碼的標準規則。程式設計師可以為函式中的函式引數、返回型別和區域性物件的宣告使用模板型別。同時,兩個重要的限制:1.函式引數表中至少乙個引數為模板型別t 。 2.函式體中的c++語句可以使用型別t物件,但只能使用對應於型別t的實際型別有效的操作。例如,某個程式可能不能對矩形使用包含

《運算子的模板函式,因為矩形沒有定義這個操作。>

template

returntype funcname(t arg,…)

//c++語句可以使用型別t,但僅用於對t有效的操作

3.5.2 執行時模板擴充套件

當編譯器發現某個語句呼叫模板函式時,就確定呼叫引數的型別,並用指定的型別生成函式**的例項。

當編譯器呼叫模板函式時,必須能夠明確地判斷型別t , 如果編譯器判斷t為兩個或多個可能的型別,則輸出錯誤資訊。

演算法第三章

單調遞增最長子序列分析 1.1 i 0時 dp 0 1 其餘情況 dp i max dp i dp j 1 0 j i 1.2填表的維度 一維 填表的範圍 dp 0 到 dp n 1 填表順序 從左向右 1.3因為要以每乙個數字終點,然後從頭遍歷到他本身,所以時間複雜度位o n 2 空間複雜度 建立...

《演算法》 第三章 查詢

在第三章裡面,並不是一開始就講的查詢,第一節中首先介紹的是符號表。符號表,其實就是儲存了鍵值對的一種資料結構,鍵值對用於將乙個鍵和乙個值聯絡起來。符號表支援兩種操作 插入 put 即將一組新的鍵值對存入表中 查詢 get 即根據給定的鍵得到對應的值。下面看一下書中關於符號表的應用以及api 書中對於...

演算法第三章總結

動態規劃演算法的理解 就是把乙個大問題變成很多個小問題,並通過求出小問題的最優解,利用他們的關係逐一求出其他問題的最優解。動態規劃應用於子問題重疊的情況 要去刻畫最優解的結構特徵 嘗試遞迴地定義最優解的值 就是我們常說的考慮從 i 1 i 1 轉移到 ii 計算最優解 利用計算出的資訊構造乙個最優解...