原创 數據結構與算法筆記 lesson 22 樹與二叉樹的轉換與赫夫曼樹

 樹到二叉樹的轉換 加線,在所有兄弟結點之間加一條連線。 去線,對樹中每個結點,只保留它與第一個孩子結點的連線,刪除它與其他孩子結點之間的連線 層次調整,以樹的根結點爲軸心,將整棵樹順時針旋轉一定的角度,使之結構層次分明 森林轉換爲二

原创 C語言提高班學習筆記 lesson5 變量、指針

變量 存儲空間的別名,訪問這塊空間  比指針更安全 使用指針也可以訪問存儲空間 在變量名無法使用的場合  局部參數傳遞  動態分配內存 指針也是一個變量 有自己的存儲空間 指針也會有指針 -> 指針的本質:保存內存地址的變量   使用指

原创 effect C++ 儘量以const, enum, inline 替換 #define

寧可以編譯器替換預處理器   #define 不被視爲語言的一部分 #define ASPECT_RATIO 1.653     ASPECT_RATIO也許從未被編譯器看見,或許在編譯器開始處理源碼之前就被預處理移走了。於是當

原创 effect C++ 爲多態基類聲明virtual 析構函數

virtual 析構函數 記錄時間,設計TimeKeeper base class 和derived classes  class TimeKeeper{ public: TimeKeeper(); ~TimeKeeper()

原创 Windows編程學習筆記 lesson2 窗口創建

窗口     窗口是windows操作系統應用程序的重要元素,是系統和用戶交互的接口。     窗口中一般包括: 標題欄,菜單,最小化框,客戶區 窗口句柄    窗口被創建後會返回一個句柄來標識該窗口(窗口的id) Windows

原创 effect C++ 若不想使用編譯器自動生成的函數,就該拒絕

阻止copying 所有的編譯器產出的函數都是public。爲阻止這些函數被創建出來,得自行聲明它們。將copy構造函數或copy assignment操作符聲明爲private。阻止了編譯器暗自創建其專屬版本。 一般這個做法並不安全,

原创 effect C++ 別讓異常逃離析構函數

C++ 析構函數異常 C++並不禁止析構函數吐出異常,但它並不鼓勵 class Widget{ public: ... ~Widget(){...} }; void doSomething() { std:: vector<W

原创 C++學習筆記 lesson10 C++ vector容器

vector //vector 序列式容器 可變長的數組 下標進行索引 deque list... // 關聯容器 通過key 和 value進行索引 set map... #include<vector> #i

原创 effect C++ 瞭解C++默默編寫並調用哪些函數

empty class 編譯器會對一個空類自動聲明一個copy構造函數,一個copy assignment操作符和一個析構函數。如果沒有聲明任何構造函數,編譯器也會聲明一個default構造函數,所有這些函數都是public且inli

原创 C++學習筆記 lesson12 繼承

繼承權限 #include<iostream> class Base { public: //Base() //{ // std::cout << "Base::Base()" << std::endl; //} Base