原创 list自我實現

list實現 #include <iostream> using namespace std; //List: 雙向帶頭循環鏈表 template < class T> struct ListNode { T _value;

原创 一個簡單的C語言程序——通訊錄

結合目前所學的一些C語言知識,我寫了如下的一個通訊錄程序,可以實現新建聯繫人,刪除聯繫人,查找聯繫人,修改聯繫人,打印全部聯繫人,清空全部聯繫人以及聯繫人排序。話不多說,我們來看代碼 重要模塊 #include<stdio.h>

原创 面試經典題之C語言

問題一 int a[5] = { 1, 2, 3, 4, 5 }; int* ptr = (int*)(&a + 1); printf("%d,%d", *(a + 1), *(ptr - 1)); 不難看出,&a 得到

原创 動態內存中常用的三大函數

malloc malloc函數包含在頭文件#include<stdlib.h>中,這個函數在編寫代碼過程中是經常用到的常與結構體一起用。我們知道malloc參數的單位爲字節,並且他的返回值爲void*,如果它申請內存失敗,則會返回

原创 String的自我實現(常用接口)

String類自我實現 函數的實現方式以及必要解釋都在下述代碼中註釋 class String { public: String()//無參構造 //初始化 :_str(new char[16]),//對_str開空間

原创 vector自我實現(部分接口)

vector自我實現 在庫中的vector中,底層實現是由三個指針實現的,在這裏我就用_start,_finish和_eos實現 必要解釋都在代碼中加以註釋 //運用模板,以便vector中實現各種數據類型 template <c

原创 C++初始模板

模板 我們知道,如果要用一個交換函數,那麼要交換int型的兩個數,就需要寫一個int類型的交換函數,如果交換char類型的兩個字符,就需要寫一個char類型的交換函數。這樣會造成代碼的複用率低,雖然函數重載可以實現,但是函數的複用

原创 類與對象4

構造函數體賦值 之前學習瞭解到,在創建對象的時候,編譯器會通過調用構造函數,給對象中的各個成員變量賦一個合適的初始值。 class d { pubilc: d(int a,int b,int c) { _a = a;

原创 數據結構——鏈表(帶雙向循環鏈表)

鏈表 鏈表是一種物理存儲單元上非連續、非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。鏈表由一系列結點(鏈表中每一個元素稱爲結點)組成,結點可以在運行時動態生成。每個結點包括兩個部分:一個是存儲數據元素的數據

原创 vector的介紹及使用

vector的介紹 vector是表示可變大小數組的序列容器。 就像數組一樣,vector也採用的連續存儲空間來存儲元素。也就是意味着可以採用下標對vector的元素 進行訪問,和數組一樣高效。但是又不像數組,它的大小是可以動態

原创 C++類與對象3(下)

目錄 1const修飾的成員函數 2.取地址及const取地址操作符重載 本篇講述以上內容 const修飾的成員函數 首先,我們看一下下面這個類 class A { public: A(int a = 1,double b =

原创 C++類與對象3(上)

目錄 類的六個默認成員函數 1.構造函數 2.析構函數 本篇講述上述兩種默認成員函數。 當我們創建一個空類時,裏面真的什麼都沒有嗎?不是的,任何一個類,在我們不寫的情況下,都會自動生成下面6個默認成員函數 1.構造函數:主要完成類

原创 C++類與對象3(中)

目錄 1.拷貝構造函數 2.賦值運算符重載函數 本篇講述以上兩種默認函數 拷貝構造函數 我們可以創建一個對象,那麼能否再創建一個和這個對象一模一樣的的新的對象呢?這就引入了拷貝構造函數 拷貝構造函數與之前講的構造函數一樣,函數名爲

原创 C++類於對象1

目錄 1.面向對象和麪向過程的初步認識 2.類的引入 3.類的定義 4.類的訪問限定符及封裝 5.類的作用域 本章將講述以上五個內容 面向對象和麪向過程的初步認識 在C語言中,它主要是面向過程,即C語言主要關注的是過程,給你一個問

原创 C++類與對象2

目錄 1.類的對象大小的計算 2.類成員函數的this指針 本篇講述以上類容 類的對象大小計算 在C語言中,結構體中的成員變量,滿足內存對齊原則,具體內存對齊原則,在我之前講的C語言結構體中有詳細說明,這裏就不多說了內存對齊原則