原创 Make 命令教程詳解

make是工程構建的必要工具。 Make的概念 Make這個詞,英語的意思是”製作”。Make命令直接用了這個意思,就是要做出某個文件。比如,要做出文件a.txt,就可以執行下面的命令。 $ make a.txt 但是,如果你

原创 python進階(數據結構和算法[二])

找到最大或者最小的N個元素 heapq模塊有兩個函數–nlargest()和nsmallest()正好能解決我們的問題。 >>> print(heapq.nlargest(3, nums)) [43, 23, 8] >>> pr

原创 python進階(數據結構和算法[三])

在字典上將鍵映射到多個值上 一鍵多值字典 d = {'a':[1,2,3], 'b':[4,5]} e = {'a':{1,2,3}, 'b':{4,5}} 可以使用from collections import default

原创 STL-map中的插入操作詳解

首先,我們可以如下使用map: //#include <map> map<string, int> simap; map[string("hou")] = 1; map[string("hou")] = 2; pair<stri

原创 寫代碼的步驟(正確解決問題的一種可行性方法)

1. 確保你理解這個問題 你自己最初的假設或者面試官的解釋是模糊的,請先確保你完全理解問題並和麪試官保持一致。 2. 嘗試一個簡單的例子 一個特殊的例子可能引導出如何解決一般情況下的問題,或者消除剩餘部分的誤解。 3. 專注於解

原创 判斷大小端序的C程序

概念 大端格式:字數據的高字節存儲在低地址中,而字數據的低字節則存放在高地址中。 小端格式:與大端存儲格式相反,在小端存儲格式中,低地址中存放的是字數據的低字節,高地址存放的是字數據的高字節。 如5A6C中5A是高字節、6C是低

原创 STL--迭代器--原理與實踐

迭代器(iterator)是STL裏面很基礎也很重要的一個東西,迭代器的traits技術設計的很棒。 迭代器是一種行爲類似指針的對象,因爲指針最常用的是->和*兩個操作符,因此迭代器最重要的編程工作也是對這兩個操作符的重載的實

原创 字符串全排列的遞歸實現

#include "stdafx.h" #include <iostream> #include <assert.h> using namespace std; void permutation(char *pStr, char

原创 python中的引用和複製

對象引用 >>> a = [1,2,3,4] >>> b = a >>> b is a True >>> b[2] = -100 >>> b [1, 2, -100, 4] >>> a [1, 2, -100, 4] a和b引用的

原创 構造函數爲什麼不能是虛函數

從存儲空間角度看 虛函數對應一個指向vtable虛函數表的指針,這大家都知道,可是這個指向vtable的指針其實是存儲在對象的內存空間的。問題出來了,如果構造函數是虛的,就需要通過 vtable來調用,可是對象還沒有實例化,也就是

原创 筆記(const)

常量 #include <iostream> using namespace std; int main() { int i = 12; const int ci = 12; const volatile

原创 重載,重寫(覆蓋)和隱藏的區別

重載 重載從overload翻譯過來,是指同一可訪問區內被聲明的幾個具有不同參數列(參數的類型,個數,順序不同)的同名函數,根據參數列表確定調用哪個函數,重載不關心函數返回類型。 class A{ public: void

原创 C++中的虛析構函數、純虛析構函數詳解

C++中析構函數可以爲純虛函數嗎? 衆所周知,在實現多態的過程中,一般將基類的析構函數設爲virtual,以便在delete的時候能夠多態的鏈式調用。那麼析構函數是否可以設爲純虛呢? class CBase { publi

原创 #詳解C++中的指針與引用

指針和引用形式上很好區別,但是他們似乎有相同的功能,都能夠直接引用對象,對其進行直接的操作。但是什麼時候使用指針?什麼時候使用引用呢?這兩者很容易混淆,在此介紹一下指針和引用,力爭將最真實的一面展現給大家。 1、指針和引用的定義

原创 Shell 中的 here 文檔詳解

我們知道平常在linux命令行的操作都可以放到文件裏面,賦予可執行權限後,就可以將這文件變成一個shell腳本。但是如果我們跟有些程序交互時,shell腳本卻幫不了我們太多。比如編輯一個文件和操作數據庫。編輯一個文件一般用vi,