原创 面向對象程序設計的三大特性(三):C++中的多態

前言 在我們系統的學習了封裝和繼承之後,那自然少不了面向對象程序設計的另一大特性——多態,C++中的多態又是怎樣的呢?下面帶大家來一起梳理C++中多態的相關知識。 1. 多態的概念 顧名思義,多態就是多種形態。比如,買票這個行爲,

原创 IPC:進程間的通信方式

前言 由於進程的獨立性,當我們要使兩個進程間進行數據交互的時候就得通過介質來實現。 進程間進行通信的介質我們把它們稱之爲進程間通信方式(IPC) 根據進程間通信場景的不同,操作系統爲用戶提供了幾種不同的進程間通信方式:管道、共享

原创 Linux網絡套接字編程(socket詳解)

前言 套接字編程其實就是網絡編程,套接字實際就是一套網絡通信程序編寫的接口,通過這些接口,並且提供相關信息,就可以實現傳輸層以下幾層的操作。 網絡通信中涉及兩臺主機之間的通信:客戶端(主動發送請求)、服務端(被動接收請求)。 一:

原创 面向對象程序設計的三大特性(二):C++中的繼承

前言 衆所周知,面向對象程序設計有三大特性:封裝、繼承、多態。在之前的學習中我們對C++中的封裝有了一定層次的認知,那麼C++中的繼承是怎樣實現的呢?今天就帶大家來簡單梳理一下C++中的繼承。 1. 繼承的概念 繼承機制是面向對象

原创 STL容器_string類以及string類的模擬實現

前言 STL(Standard Template Library-標準模板庫),是C++標準庫的重要組成部分,STL是C++中的優秀作品,有了它的陪伴,許多底層的數據結構以及算法都不需要自己重新造輪子,站在前人的肩膀上,健步如飛的

原创 STL容器_vector類以及vector類的模擬實現

前言 vector類是STL中的另一大容器,經過封裝,vector是一個可變長度並且擁有各種功能的順序表,在其內部可以利用數組實現。vector和string在物理與邏輯結構上十分相似,不過vector是一個模板類,我們可以在其中

原创 STL容器適配器:stack、queue、priority_queue

前言 容器適配器是一個封裝了序列容器的類模板,它在一般序列容器的基礎上提供了一些不同的功能,之所以稱之爲容器適配器,是因爲它可以通過適配容器的現有接口來提供不同的功能。 簡單的理解容器適配器,其就是將不適用的序列式容器(包括 ve

原创 STL容器_list類以及list類的模擬實現

前言 list類是STL中封裝的鏈表模板類,並且底層實現是以帶頭雙向鏈表作爲基礎進行封裝的,甚至一些 STL 版本中(比如 SGI STL),list容器的底層實現使用的是帶頭雙向循環鏈表 list 容器中各個元素的前後順序是靠指

原创 Linux網絡通信:網絡通信基礎

前言 網絡就是利用物理鏈路將各個孤立的工作站或主機連接在一起組成的數據鏈路。 通信就是人與人之間通過某種介質實現信息的交互。 網絡通信在Linux下簡單理解其實就是不同主機的進程間通信。 一:IP地址 概念: IP地址(Int

原创 排序算法(四):歸併排序(遞歸寫法與非遞歸寫法)

歸併排序 基本思想: 歸併排序是一種採用分治策略,將待排序序列分成若干個不可再分的子序列,先使每個子序列有序,再使子序列段間有序的高效排序算法。 排序過程(分治算法): 分的過程 這種結構和完全二叉樹非常相似,分就是遞歸拆

原创 STL容器_vector類

前言 vector類是STL中的另一大容器,經過封裝,vector是一個可變長度並且擁有各種功能的順序表,在其內部可以利用數組實現。vector和string在物理與邏輯結構上十分相似,不過vector是一個模板類,我們可以在其中

原创 排序算法(三):交換排序(冒泡排序、快速排序的遞歸與非遞歸)

交換排序 基本思想: 所謂交換,就是根據序列中兩個元素鍵值的比較結果來交換這兩個元素在序列中的位置,將鍵值較大的元素向序列的尾部移動,鍵值較小的元素向序列的前部移動。 排序分類: 交換排序分爲冒泡排序和快速排序 一:冒泡排

原创 C語言中常用的自定義數據類型(結構體、枚舉、聯合)

前言 在程序編寫的過程中,我們難免會遇到一些複雜的元素(例如學生:姓名、性別、學號)無法用單一的內置數據類型表示,於是就引入了自定義數據類型來描述這些複雜的元素。 C語言中常見的自定義數據類型主要有:結構體、枚舉、聯合(結構體中主

原创 C語言中宏定義和函數的區別

前言 在C語言中,對於一些常用或通用的代碼段的封裝可以有兩種方式:函數和宏定義。 這篇博客就來帶大家梳理一下對於這兩種方式我們在使用時應該如何抉擇,以及它們的區別和優缺點。 宏定義和函數的區別 從程序的執行來看: 函數調用需要

原创 排序算法(二):選擇排序(直接選排、堆排序)

選擇排序 基本思想: 選擇排序將序列分爲已經有序和暫時無序兩部分,遍歷暫時無序的部分,將其中最小的元素放到有序序列的末尾,直到全部待排序的元素排完爲止。 排序分類: 選擇排序分爲直接選擇排序和堆排序 一:直接選擇排序 排