freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

面向?qū)ο蟪绦蛟O(shè)計(c++語言)四ppt-文庫吧

2025-01-05 12:55 本頁面


【正文】 private: T *pstk。 //堆棧數(shù)據(jù)存儲區(qū)指針變量 int capacity。 //堆棧容量 int top。 //棧頂指針計數(shù)器 public: Stack(int num)。 //構(gòu)造函數(shù) bool Push(T amp。t)。 //入棧 T* Pop()。 //出棧 ~Stack() //析構(gòu)函數(shù) , 釋放動態(tài)生成的存儲空間 { delete[] pstk。} }。 30 templatetypename T StackT::Stack(int num) //構(gòu)造函數(shù) { pstk=new T[num]。 //根據(jù)形參動態(tài)生成的存儲空間 size=num。 top=0。 } templatetypename T bool StackT::Push(T amp。t)// 入棧操作 { if(top=size) //判斷是否棧已滿 { cout”Stack is full.”endl。 return false。 //返回操作失敗 } pstk[top++]=t。 //元素賦值 , 棧頂指針加 1 return true。 //返回成功 } 31 templatetypename T T* StackT::Pop() //出棧操作 { if(top=0) //判斷??? { cout”Stack is empty.”endl。 return NULL。 //返回空值表示棧空 ,操作失敗 } return amp。pstk[top]。 //返回棧內(nèi)元素地址 , 棧頂指針減 1 } int main() { int a=10,b=12,*pa=NULL。 Stackint stk。 //定義用來存儲整型數(shù)的堆棧對象 stk (a)。 coutaendl。 (b)。 coutbendl。 pa=()。 if(pa!=NULL)cout*paendl。//返回非空表示成功 pa=()。 if(pa!=NULL)cout*paendl。 pa=()。 if(pa!=NULL)cout*paendl。 return 0。 } 32 10 12 12 10 Stack is empty. 程序的運行結(jié)果為: 33 本章小結(jié) ? 使用模版可以設(shè)計出與數(shù)據(jù)類型無關(guān)的程序框架 ,可以建立具有通用類型的類庫和函數(shù)庫 。 ? 模板體現(xiàn)了 C++軟件重用機制的又一特點 , 時參數(shù)化多態(tài)性的表現(xiàn) , 使得一段程序可以用于多種不同類型的對象 。 ? 本章介紹了函數(shù)模板與模板函數(shù) 、 類模板與模板類的概念 。 ? 通過使用模板可增加程序的通用性和可重用性 ,應(yīng)掌握如何定義和使用函數(shù)模版和類模板 , 利用函數(shù)模版和類模版解決實際問題 , 使編制的程序更加精煉 。 34 第二部分 面向?qū)ο蟮某绦蛟O(shè)計 第 3章 類和對象 (一 ) 第 4章 類和對象 (二 ) 第 5章 繼承和派生 第 6章 虛函數(shù)與多態(tài)性 第 7章 運算符重載 第 8章 模板 第 9章 標(biāo)準(zhǔn)模板庫 STL 第 10章 C++語言的輸入和輸出 35 第 9章 標(biāo)準(zhǔn)模板庫 STL 本章重點: ? STL概述 ? 容器 ? 迭代器 ? 算法與函數(shù)對象 36 ? 在 C++中,庫 (library)表示的是一系列程序組件的集合,它的主要用途就是在不同的程序中被重復(fù)使用。 ? STL標(biāo)準(zhǔn)模板庫 ( Standard Template Library)其主要思想是結(jié)合 C++的模板機制,設(shè)計出一系列的針對數(shù)據(jù)結(jié)構(gòu)中具體問題的類模板和函數(shù)模板,并不針對具體的數(shù)據(jù)類型,形成了具有優(yōu)秀、高效編碼的模板庫,成為了標(biāo)準(zhǔn) C++體系的一部分。 37 STL概述 ? STL( Standard Template Library, 標(biāo)準(zhǔn)模板庫 )是一個 C++的通用庫 , 是美國加州的惠普實驗室開發(fā)的一系列軟件的統(tǒng)稱 , 開發(fā)者主要是Alexander Stepanov, Meng Lee, David R Musser三位 。 ? STL中的代碼主要采用模板類和函數(shù)模板的方式 , 極大地提高了編程效率 。 STL倡導(dǎo)泛型編程 , 即以通用的方式來寫數(shù)據(jù)結(jié)構(gòu)和算法 。 38 STL主要由 : ? 容器 (Containers) ? 迭代器 (Iterators) ? 算法 (Algorithms) ? 函數(shù)對象 (Function objects) ? 內(nèi)存分配器 (Allocators) ? 適配器 (Adapter) 等六大部分組成,每一部分又有多個組件構(gòu)成。 39 ? 容器 用來表示各種數(shù)據(jù)結(jié)構(gòu)對象,如 vector、 list、deque、 set、 map等,主要用于存放數(shù)據(jù),每個容器表現(xiàn)為類模版; ? 迭代器 用來把容器和算法聯(lián)系起來,是一種智能指針,通過運算符重載,一般化了 C++中指針的概念; ? 算法 包括對數(shù)據(jù)集合的查找、排序、復(fù)制等操作,都以函數(shù)模版的形式出現(xiàn); ? 函數(shù)對象 ,就是一個行為類似于函數(shù)的對象,重載了運算符函數(shù) operator(); ? 內(nèi)存分配器 ,主要用來為各種容器配置并管理內(nèi)存空間,以類模板形式出現(xiàn); ? 適配器 ,用來修飾接口,分為容器配接器、迭代器配接器和函數(shù)對象配接器等。 40 為了更好的理解和使用 STL, 還需要了解它以下幾個概念 : ? namespace 命名空間 命名空間也叫名字空間 , 它的本質(zhì)就是在類的作用域之外定義更大的作用范疇 , 換句話說就是為類定義容器 , 其作用是對類進行層次分類 ,可以避免了不同模塊內(nèi)標(biāo)識符同名沖突問題 。 41 可以用如下方式定義命名空間: namespace Math //Math命名空間 { class Matrix //矩陣類 { 關(guān)于 Matrix類的定義 }。 class Complex //復(fù)數(shù)類 { 關(guān)于 Complex類的定義 }。 const double PI= //常數(shù) PI double Sin(double rad)。 //正弦函數(shù)聲明 其他的定義 ... }。 42 ? 如下語句用完整類名定義了一個對象并調(diào)用了空間內(nèi)的函數(shù) Math::Complex c1。 //定義對象 c1 f1=Math::Sin(Math::PI*)。//調(diào)用函數(shù) Sin求值 ? 為了避免每次定義都使用命名空間作前綴 , 還可以用 using關(guān)鍵字來指定命名空間 , 如經(jīng)過如下聲明后: using Math::Matrix。 43 ? 在當(dāng)前的程序范圍內(nèi)就可以直接引用標(biāo)識符 Matrix,來定義一個新的對象: Matrix mat。 或者可以做如下聲明: using namespace Math。 ? 這樣 , Math命名空間內(nèi)的所有標(biāo)識符就可以在當(dāng)前程序范圍內(nèi)直接使用了 , 不需要加任何前綴 , 但是要注意的是 , 不要和同作用域內(nèi)的標(biāo)識符發(fā)生同名沖突 。 44 (2) C++標(biāo)準(zhǔn)頭文件 ? 在本書前面內(nèi)容的大部分例子程序中 , 都用到了 std 命 名 空 間 , 一 般 的 形 式 都 是 先 用include指令包含一個頭文件 , 然后使用using namespace std; 這樣就可以在后面的程序中使用 std命名空間所包含的標(biāo)識符了 。 ? 需要說明的是 , 在新的 C++的標(biāo)準(zhǔn)頭庫中 , 頭文件不再使用擴展名 , 在這些頭文件里聲明了所有的標(biāo)識符 , 例如 ” iostream”頭文件其包含的形式如下: include iostream 45 ? 我們可以打開這 iosteam這個頭文件 , 可以看到如下內(nèi)容: ...... _STD_BEGIN //宏定義等價于 “ namespace std {“ // OBJECTS static ios_base::Init _Ios_init。 extern _CRTIMP istream cin。 //輸入對象 extern _CRTIMP ostream cout。 //輸出對象 extern _CRTIMP ostream cerr, clog。 //錯誤和記錄對象 ...... _STD_END //宏定義等價于 “ }” ? 而關(guān)于 _STD_BEGIN和 _STD_END兩個宏的具體定義如下: define _STD_BEGIN namespace std { define _STD_END } 46 在 C++標(biāo)準(zhǔn)頭文件主要分為三類: ? C 標(biāo)準(zhǔn)頭文件 , 原 來 的 、 等在用于 C++時 , 要把擴展名去掉 , 同時還在名稱前加字母 “ c”,如 cstdlib、 cmath、 cstring等 ,這其實就是對于原來頭文件的一個兼容形式 。 ? C++標(biāo)準(zhǔn)頭文件 , iostream、 iomanip、limits、 stdexecept等 , 包含了一些C++常用的類和對象的定義與聲明 。 47 ? STL常用的組件頭文件 , 包括容器 、 迭代器 、 算法 、 函數(shù)對象等 , 其中 : ? 順序容器類的頭文件有 vector、 list、deque ? 關(guān)聯(lián)容器有 set、 map ? 適配器容器有 stack、 queue、 string等 。 ? 算法位于 algorithm中 ? 通用的數(shù)值方法在 numeric中 ? 迭代器類在 iterator中 ? 函數(shù)對象在 functional中 。 48 容器 ? STL 容器可用用來存放、容納各種不同類型的數(shù)據(jù),它們都是類模板。 ? 實例化為類型 T 的容器類能夠存放 T 類型的對象。 ? STL 提供七種容器:向量 vector 、 鏈表 list 、 雙端隊列 deque。 集合 set 多重集合 multiset映射map、 多重映射 multimap。 49 這些容器分為兩種類型: ? 順序容器( Sequence Containers), 包括 vector,list, deque。 ? 關(guān)聯(lián)容器( Associative Containers ), 包括 set、multiset、 map、 multimap。 50 ? 順序容器以線性方式存儲序列元素 , 并且這些序列元素有頭有尾 , 依次存放 。 ? 序列的 “ 頭 ” 是序列的首元素 。 ? 序列的 “ 尾 ” 是序列的末元素 。 ? 對于這些元素的訪問 , 總可以從首元素出發(fā) ,逐個訪問每個中間元素 , 然后到達最后一個元素 。 ? 向量 vector、 鏈表 list、 雙端隊列 deque都是典型的順序容器 。 51 ? 順序容器中元素可采用兩種方式進行訪問: ? 順序訪問 :順序訪問則必須從首元素開始逐漸遞增到目標(biāo)元素 , 向量 vector 和雙端隊列 deque也可以使用該種方式 , 而鏈表 list只能使用該方式訪問內(nèi)部的元素 。 ? 隨機訪問 :隨機訪問類似于對傳統(tǒng)數(shù)組的訪問 , 如對于向量 vector 和雙端隊列 deque , 給定下標(biāo)就可以直接找到對應(yīng)的元素的引用 。 ? 關(guān)聯(lián)容器中的元素沒有嚴(yán)格線性關(guān)系 , 所以其中的元素沒有首元素和末元素的區(qū)別 。 對于關(guān)聯(lián)容器中的元素一般采用索引方式進行訪問 。 52 1 容器對象的構(gòu)造和析構(gòu) ? 所有容器類都提供了 不帶參數(shù)的默認構(gòu)造函數(shù) ,可用這種方式構(gòu)造出空的容器對象,然后向容器內(nèi)插入元素。 ? 所有容器類還提供了 構(gòu)造函數(shù) 利用一個給定的數(shù)據(jù)區(qū)間來構(gòu)造容器。 ? 所有容器類還提供了一個 拷貝構(gòu)造函數(shù) 能以現(xiàn)有容器對象為樣本復(fù)制生成內(nèi)容相同的另一個容器。 ? 所有容器都提供了一個 析構(gòu)函數(shù) 來釋放容器元素所占用的存儲空間。如表 所示。 53 表 語句 說明 ContainersT c。 定義指定類型 T的容器對象 , 利用默認構(gòu)造函數(shù) ContainersT c(begin,begin+N)。 利用一個給定的數(shù)據(jù)區(qū)間 [beg, beg+N) 來構(gòu)造容器對象 , 注意:包含 beg位置的元素 , 不包含 beg+N位置的元素
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1