原创 C++多態與虛函數相關實驗說明

void Test_Polym_Virtual_Func() { cout << "Test_Polym_Virtual_Func" << endl; // 測試虛函數 class A { public: A(){ cou

原创 c++讀寫鎖-自實現

#ifndef _RWLOCK_H_ #define _RWLOCK_H_ #include <mutex> #include <condition_variable> // 讀寫互斥量 // 當有寫和讀操作同時競爭時,寫操作優先與

原创 算法實現--list相關

#pragma once #include <vector> #include <string> #include <iostream> using namespace std; namespace List { struct L

原创 算法實現--字符串替換空格

/* 題目描述: 請實現一個函數,將一個字符串中的每個空格替換成“%20”。例如,當字符串爲We Are Happy.則經過替換之後的字符串爲We%20Are%20Happy。 思路: 問題1:替換字符串,是在原來的字符串上做

原创 C++四種類型轉換運算符const_cast、static_cast、dynamic_cast、reinterpret_cast相關實驗總結

1.const_cast<type-name>(expression) 目標類型只能是指針或者引用,作用是去掉類型的const或volatile屬性 2.static_cast<type-name>(expression) 類似於C風格的

原创 C++繼承與組合關係中構造函數與析構函數執行順序

/* 測試繼承與組合關係中構造函數與析構函數執行順序 在繼承關係中:先調用基類構造函數,再調用子類構造函數 針對包含自定義類型成員變量的情況,先構造成員變量,在調用自己的構造函數 析構函數與構造函數調用順序相反 */ void

原创 算法實現-排序相關

#pragma once #include <vector> #include <string> #include <iostream> using namespace std; namespace Sort { // 基本思想:

原创 算法實現--找出一個字符串中第一個無重複字符

 下面代碼中使用自定義的高精度計時器,統計兩種方案消耗時間。 /* 編寫一個高效率函數來找出一個字符串中第一個無重複字符.例如:”total”中的o,”teeter”中的r. 要求算法效率優於O(n2). 字符串中的字符均存在於ASCI

原创 C++模板全特化(具體化)與偏特化(部分具體化)詳解

1.模板簡介 模板就是實現代碼重用的一種機制,它可以實現類型參數化,即把類型定義爲參數, 從而實現了真正的代碼可重用性。 模板編程和函數重載可以實現C++靜態多態,也叫編譯時多態。 模版可以分爲兩類,一個是 函數模版 ,另一個是 類模版。

原创 算法實現--判斷兩個字符串是否互爲旋轉詞

/* 旋轉字符串判斷: 如果對於一個字符串A,將A的前面任意一部分挪到後邊去形成的字符串稱爲A的旋轉詞。 比如A="12345",A的旋轉詞有"12345","23451","34512","45123"和"51234"。對個字符串A和

原创 算法實現--二維數組-查找數字

/* 題目描述: 在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。 請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。 思路: 利

原创 unique_ptr智能指針的簡單實現

#ifndef UNIQUE_PTR_H #define UNIQUE_PTR_H #include <stdio.h> #include <iostream> using namespace std; // unique_ptr

原创 算法實現--KMP算法-匹配字符串

/* 有一個文本串S,和一個模式串P,現在要查找P在S中的位置,怎麼查找呢? */ /** * @brief 暴力匹配 * @param[in] s 主串 * @param[in] p 模式串 * @note 如果用暴力匹配的思路,並

原创 C++中new和new(std::nothrow)

  在C++編碼中使用new分配堆內存時,進行Test-for-NULL檢查是一個好習慣。 但是注意這個點: 1.new 在操作符new 和new [ ]內存分配失敗的時候拋出的異常,在分配異常的情況下這時的指針myarray不爲NULL

原创 算法實現--二分查找-數組中負數與正數

/* 一個數組中中間部分都是0,前半部分全是負數,後半部分都是正數,要求時間複雜度儘量低的情況下,查找最後一個負數和第一個正數。 題目中描述的數組,求解結果是與0比較的,可以看做是有序的,使用二分查找,時間複雜度可以達到log