C++學習筆記--模板
The general form of a template function definition is shown here:
通用的模板函式定義如下所示:
template<class type> ret-type func-name(parameter list){// body of function}
#include <iostream> #include <vector> #include <cstdlib> #include <string> #include <stdexcept> using namespace std; template <class T> class Stack { private: vector<T> elems; //elements public: void push(T const &); // push element void pop(); // pop element T top() const; bool empty() const { return elems.empty(); } }; template <class T> void Stack<T>::push(T const & elem) { elems.push_back(elem); } template <class T> void Stack<T>::pop() { if (elems.empty()) { throw out_of_range("Stack<>::pop(): empty stack"); } elems.pop_back(); } template <class T> T Stack<T>::top() const { if (elems.empty()) { throw out_of_range("Stack<>::top(): empty stack"); } return elems.back(); } int main(void) { try { Stack<int> intStack; Stack<string> stringStack; intStack.push(7); cout << intStack.top() << endl; stringStack.push("hello"); cout << stringStack.top() << endl; stringStack.pop(); stringStack.pop(); } catch (exception const & ex) { cerr << "Exception: " << ex.what() << endl; return -1; } }
輸出:
[email protected]:~/c++$ ./a.out
7
hello
Exception: Stack<>::pop(): empty stack
相關推薦
C++學習筆記 — STL標準模板庫
STL簡介 STL是(tandard Template Library)中文名標準模板庫。從根本上說,STL是一些“容器”的集合,這些“容器”有list,vector,set,map等,STL也是演算法和其他一些元件的集合。這裡的“容器”和演算法的集合指的是世界
C++學習筆記--模板
The general form of a template function definition is shown here: 通用的模板函式定義如下所示: template<class
C學習筆記(一)-程式設計作業
C學習筆記(一)-程式設計作業 第十一週作業: [Loop]雙基迴文數 [Loop]校門外的樹 [Algorithm]約瑟夫環 [Recursion] 漢諾塔 [Algorithm]紀念郵票 [algorithm]
《C++程式設計語言》學習筆記1-容器
容器 容器名 資料結構 vector<T> 可變大小向量 list<T> 雙向連結串列 forward_list<T> 單向連結串列 deque<T> 雙端佇列 set<T&g
C學習筆記(二)-理論
C學習筆記(二)-理論 理論選擇易錯題 本部落格用來記錄理論易錯題及一些重點概念。 如存在問題,歡迎指出。 理論選擇易錯題 What is the output of this C code? #include <stdio
Objective-C基礎學習筆記(三)-面向物件的三大特性之封裝
面向物件的三大特性:封裝(成員變數)、繼承、多型; 一、 封裝 1. 封裝的理解: 在開發過程中,考慮到安全性要求,我們通常不讓外界直接修改我們類的成員變數,而讓外界使用我們提供的方法來修改,這樣類 的成員變數就 封裝起來了。 2. 封裝的目的就
算法導論學習筆記(2)-歸並排序
mar 今天 iostream 介紹 font 額外 遞歸 size dsm 今天學習了算法導論上的歸並排序算法,而且完畢了在紙上寫出偽代碼,曾經就學過歸並可是理解的不夠透徹。以 前還一直困惑:為什麽明明歸並排序比快排的時間復雜度更穩定。為什麽庫函數不用歸
北京大學MOOC C++學習筆記(七)函式模板和類模板
函式模板: 交換兩個整型變數的值的Swap函式: void Swap(int & x,int & y) { int tmp = x; x = y; y = tmp; } 交換兩個double型變數的值的Swap函式: void Swa
php學習筆記6- header dirname 以及大括號的作用
php學習筆記6 header dirname 以及大括號的作用 常用函式 header(); 用於傳送原生的http頭 <?php header("HTTP/1.0 404 Not Foun
【C++學習筆記】模板(一)
模板的概念 模板是實現程式碼複用的一種手段,是C++重要的特徵之一此前在定義函式與類時,必須明確指明其中用到的變數的資料型別。如果需要對不同型別的資料進行相同的處理,就需要重新定義函式或者類。 我們知道函式是一種程式碼複用的方式,通過定義不同的函式實現不同的操作,但是函
live555學習筆記5-RTSP服務運作
五 RTSP服務運作 基礎基本搞明白了,那麼RTSP,RTP等這些協議又是如何利用這些基礎機制運作的呢? 首先來看RTSP. RTSP首先需建立TCP偵聽socket。可見於此函式: [cpp] view plaincopyprint? DynamicRTSPServ
c++學習筆記之類模板
類是物件的抽象,類模板是類的抽象。 比較兩個數(不同型別)的大小 在類模板內定義成員函式 #include<iostream> using namespace std; template<class numtype> class compare { public
AlexNet學習筆記1-ImageNet Classification with Deep Convolutional Neural Networks
引言 最近受AlphaGo的刺激,開始從google新開源的Tensorflow庫學習DeepLearning。便匆匆忙忙的把環境搭建好,配合官網教程學習原始碼,但是由於之前沒在意機器學習這塊的知識,感覺拉下了不少功課,在Image Recognition章的
C++學習筆記 模板 包含編譯模式 分別編譯模式
看起來沒有什麼問題吧,但是你編譯一下,依然報錯。不是麼? error LNK2005: "void __cdecl Work(int)"([email protected]@@[email protected]) already defined in func.obj 又是重定義!!我們
C++學習筆記 — 模板
模板就是實現程式碼重用機制的一種工具,它可以實現型別引數化,即把型別定義為引數, 從而實現了真正的程式碼可重用性。模版可以分為兩類,一個是函式模版,另外一個是類模版。 函式模板 函式模板的一般寫法: template <class T> 返回型別 函
Live555學習筆記14-live555多執行緒論
十四:live555多執行緒論 江湖傳聞:live555如果不改為多執行緒,在多核心機器上效率會降低. 雖然我沒做過測試,但比較相信此傳聞的真實性 . 所以在我試論述一下live555如何對多核進行支援,其實就是改為多執行緒,嘿嘿. 先看此文:http://www.live555.com/liveMedia
live555學習筆記1-引子
一直想研究live555,沒有時間,終於因為專案的原因可以深入無間地研究一下了.所以在此著文以記之. 一 如何編譯live555 利用mingw環境很容易:在live555資料夾下, genMakefiles mingw make 即可. 可以用genWi
C++學習筆記 -- 迴圈佇列的模板
#include<iostream> #include<cassert> using namespace std; template<class T,int SIZE = 50> class queue { public:queue():
ES6學習筆記二--構建工具指令碼
安裝依賴包:~/es6 $ npm install gulp gulp-if gulp-concat webpack webpack-stream vinyl-named gulp-livereload gulp-plumber gulp-rename gulp-ugli
經典SQL學習筆記 (十)-學生資訊資料庫練習
學生資訊資料庫 1) 建立一張學生表,包含以下資訊,學號,姓名,年齡,性別,家庭住址,聯絡電話 ,其中id為主鍵,且設定自增長,姓名不能為空。 ---------------------------