黑馬程序員-C++進階STL

緣起

  • 以前吧,雖然看了和買了一些CPP的書,可能學習方法不對,又或者自已能力真的有限,各類知識點沒有串起來,老是在面試時突擊一下,2019年開始all in到CPP項目上後呢,有發心要把知識串起來
  • 立足於現有電腦裏的視頻資料,突然看到以前下載的「黑馬程序員」系列,聽C++基礎(OO)部分時,感受自已學的都串起來,因而堅持聽完。差很少聽了80%的時候,32W,自已2T的硬盤毫無徵兆的掛了(外接的3.5讀盤器也不行)。
  • 33W(0812-0818)計劃開始看「C++進階STL」,並複習以前的OO內容的,怕東西丟失了,自已學完一部分知識後寫份學習筆記吧。
  • 下載的內容day05(不肯定全不全,感受不全)程序員

    • day01:函數模板,類模板的語法
    • day02:MyArray的實現、類型轉換、異常(比OO裏面講得詳細一些)
    • day03:輸入輸出流、STL基礎、string和vector
    • day04:deque、list
    • day05:multimap、函數對象、算法

內容

day01

  • 01-02,07:函數模板面試

    • 自動類型推導,顯式指定類型MySwap<int>(a,b)
    • 重載時相同匹配,優先普通函數;指定函數模版的語法MySwap<>(a,b)
    • 07寫的例子,char和int排序 不要忘記template
  • 03-04:CPP編譯過程算法

    • -ESc參數,分別對應的4個過程,例: g++ index.s -o index
  • 05:模板函數實現原理剖析函數

    • 兩次編譯過程
    • 一次是函數模板的語法檢查;一次根據具體的調用,再編譯生成相應的模板函數
    • -S 生成 index.s文件,看彙編格式
  • 06,08:類模板,以及派生類學習

    • 類模板必須顯式指定類型 Person<int>
  • 09:普通類的.h和.cpp分離編寫
  • 10:類模板類內實現
  • 12:類模板類外實現_模板類中使用友元(2個)搜索引擎

    • 模板類中不要濫用友元
    • 12(2)我聽了也有點蒙,我是g++編譯器,沒成功
  • 13-14: 類模板h和cpp分離編寫指針

    • 模板機制和C++編譯機制相關code

      • 模塊的2次編譯,C++的獨立編譯,致使#include.h會報錯,要#include.cpp或.hpp才行。
  • 15:類模板碰到static成員視頻

    • static屬於具體類的,而不是類模版的。

day02

  • 02-03:MyArray的實現對象

    • 冷不丁的還提了一下C++11的右值引用
    • 自已要思考並紙上實現一下,看看知識的差距在哪。
  • 04-06:類型轉換

    • 用得比較多也就是static_cast<>()了,用於內置數據類型,具備繼承關係的指針或引用【無論是父類到子類,仍是子類到父類】
    • dynamic_cast<>()只能由子類型轉成基類型,由於類型檢查,子類佔的空間多,基類相對少一些。

day03

day04

day05

  • 0二、0三、06 map相關

    • 基本類型的map操做學到了,4種插入方法

      • myMap.insert(pair<int,int>(10,10))
      • myMap.insert(make_pair(20,20));
      • myMap.insert(map<int,int>::value_type(30,30));
      • myMap[40]=40; 不存在key,會建立pair,存在則更新;訪問不存在的key,也會插入到map中,並給個默認值,因此這種有反作用。
    • 自定義類型的map,我例子沒運行成功,知識上只是有大概瞭解吧

收穫&感想

履歷

20190817

  • day01的整理,day02(2-6),day05(二、三、6)整理。由於0917看到代碼中要用到map()操做,順便看了一下
  • 用時1h的樣子吧,就當是複習學過的內容了。

收穫

  • 搜的時候,也看到了自已學習day0一、day02的一些筆記(都不夠系統),站在自已來自,那些當時要筆記的部分東西,已經內化到個人知識體系了(好比4種類型轉換,函數模板,類模板語法【模板但我沒找到項目中應用的地方】)
  • 也看到了一些書上沒有說起到的坑,好比:

    • 分離寫法中#include<hpp>的寫法;
    • 在類模板中使用friend關鍵字;
    • 一樣的修改,g++不認識,而vs認識。老師用vs講的,我寫例子用的是codeblock,clion都是基於g++
  • 糾正了自已以爲STL是用庫的想法,以前的學習方法都是對着書本運行一下代碼,但項目中真正解決問題時,好比用map在怎麼去寫好,仍是要搜索引擎,多用,橫向的多關聯思考,縱向的往裏面思考才行。

感想

  • 是否是視頻不太全啊,畢竟是網盤上下載的,day05的課程,前2.5天都在講的是C++OO裏的高級一點的知識,後面2.5講的是用法(雖然尚未聽),模板的語法講得也淺了些,模板特化都沒有講。
相關文章
相關標籤/搜索