原创 selec檢測標準輸入

我們先看一下select的參數列表 參數解釋 參數nfds是需要監視的最⼤大的⽂文件描述符值+1; rdset,wrset,exset分別對應於需要檢測的可讀⽂文件描述符的集合,可寫⽂文件描述符的集 合及異常⽂文 件描述符的

原创 菱形虛擬繼承

先定義兩個概念 單繼承:一個子類只有一個直接父類時候稱之爲單繼承 多繼承:一個子類有兩個或者兩個以上的父類時候稱之爲多繼承 顯然易見,菱形繼承顧名思義當然是在繼承上有一個菱形的傳遞關係。 菱形繼承的問題:從上面對象中可以發現他的

原创 模板之類型萃取

函數類模板萃取主要針對的是含有自定義類型的函數 ***我們的類型函數如果需要拷貝往往可以通過給定庫函數經行萃取,但是尼?***我們的類型函數類型中每一個變量中含有的成員個數都是不知道的,我們就需要另外一種拷貝深拷貝的方式,對我們的自定

原创 priority_queue自定義類型重載

**prioroty_queue我們可以認爲就是一個堆,我們堆的性質和std裏面的這個容器其實定義性質都是差不多的。 在默認情況了,qriority_queue堆頂元素是最大的,也就是大堆,但是我們往往知道如果是內置類型我們想換成小堆

原创 vector的模擬實現

vector和數組看起來的卻別在於一個是靜態的,另外一個是動態的。而vector擴容時候,現要數據搬移到新的空間然後在釋放掉以前的空間。 我們模擬實現我們感覺最需要注意的還是擴容問題什麼時候擴容什麼時候不用擴容。 已經一個檢查vect

原创 迭代器的失效

我們現要簡單的理解一下std裏面的迭代器,我們應該如何理解了。憑我自己最簡單淺顯目前的理解是迭代器就是提供遍歷std容器的一個指針 在訪問vector時候迭代器就像是一個連續的有地址的空間 假設末尾迭代器上我們在vector迭代器上

原创 只能在堆上創建對象or只能在棧上創建對象

在棧上常見對象特點最顯著的就是最後系統調用完以後銷燬對象 在堆上創建對象了,即是自己申請對象資源空間自己銷燬。 好吧,看一下在棧上創建對象吧。 class StackOnly { public: stat

原创 new和delete,new[],delete[]的簡單模擬實現

我們清楚new,delete在底層通過調用operator new,operator delete來申請空間,和釋放空間,operator new, operator delete則在頂層也是調用malloc來申請空間,free來釋放

原创 友元類和類中類的一些淺顯理解與對比

友元了,不管是友元類還是友元函數有應該特點是 比較鮮明的,這個特點就是不管是友元類還是友元函數他們具有一個單向的關係 你可以說a是b的友元,但是你無法說b是a的友元 看一個時間日期類來理解一下吧 class date; class t

原创 指針與引用的性能比較

我們先來看一下傳指針與傳引用的效率方面的對比吧 本質上來說了,傳引用是一個變量的別名而已。並沒有開闢新的空間。而指針了是指向一個空間對應一個空間的地址 好吧,我們分別通過兩者效率,和本質方面看一下兩者之間的區別吧。 -首先看一下兩者

原创 迷宮小遊戲最短路徑的選擇

我們主要通過一個棧來實現一個迷宮,用壓棧來記錄路徑 迷宮我們定義66大小的迷宮這個走法原則上是可以無限的,但是我們定義的我們必須需要考錄這個我們用棧實現這個迷宮需要考慮的問題,首先來說棧是有大小的啊,所以在沒有回溯的前提下,這個迷宮

原创 環形隊列的創建以及一些基本的操作

我們的環形隊列長什麼樣子的尼,那幾句話也描述不出來概括不了他的樣子,還是拿一張圖看一下吧 在沒有插入數據時候他也就是長這個樣子了,首位隊外首位指針相交,都在這個初始隊列塊子的位置。 唯一需要注意的一點是我們這裏定義的這個環形隊列的

原创 string的模擬實現

我們來模擬實現一下string類的常用接口啊,不是常用類的就不模擬實現了哦,沒有見過,估計也半天想不出來啊。 我們看一下string類的常見接口吧 函數名稱 | 功能說明 string() | 構造string類空

原创 生產者消費者模型

我們在這裏定義一個生產者消費這模型,及供求關係 生產者在沒有貨時候,買家是不能買到東西的 消費者之間存在原子性操作 總的條件因素應該就是這樣了,抱着這個操作,我們完成一個試着完成一個模型。 #include <stdio.h> #

原创 通過棧實現括號的匹配

我們通過順序表創建一個棧 如果我們需要實現一組括號的匹配,我們首先必須知道這個括號數組當中所有的括號符號。 常見的括號符號也就 ‘[]’ ‘{}’ ‘()’,還有的一些奇奇怪怪的括號就不說了啊。 我們首先需要按思維邏輯思考,需