原创 C++基於對象--Class with pointer--string類的簡單實現
本文所談的對象是帶有指針的類(Class with pointer);這時不能使用編譯器自動合成的三大函數(Big three):拷貝構造、拷貝賦值和析構。需要自己去顯式的定義着三大函數; primer中給出的建議是:如果一個類需要需要自
原创 C++使用標準庫--文本查詢程序
題目:在給定文件中查詢單詞。查詢結果是單詞在文件中出現的次數及所在行的列表。如果一個單詞在一行中多次出現,此行只顯示一次,行會按照升序輸出。 效果如下: 在此程序的實現中使用到的標準庫內容包括: (1)ifstream:用來綁定並打開指
原创 OpenCV—直線擬合fitLine
本文的主要參考爲官方文檔OpenCV249-fitLine和博客-OpenCV 學習(直線擬合) 以及《Learning OpenCV 3》page425-426 OpenCV中提供的直線擬合API如下: void fitLine(I
原创 C++STL--map和set 詞頻統計和單詞轉換
set簡介 set官方參考連接:http://www.cplusplus.com/reference/set/set/ 1.set是按特定順序存儲的容器,元素值唯一。 2.set中的元素是const類型的,不能被修改,但是可以執行插入(
原创 C++IO庫--fstream和stringstream
注意:IO對象無拷貝或賦值,需要以引用的方式傳遞參數和返回流。 istringstream和ifstream的使用 (1)使用ifstream從文件中讀取文本,一行爲一個元素存入vector<string>中; (2)使用i
原创 C++11--智能指針詳解及實現
本文主要參考: 1)《Effective Mordern C++》 2)《C++ Primer》 3) https://en.cppreference.com/w/cpp/memory/shared_ptr --可在線做實驗測試代碼
原创 C++模板--基礎篇
動機:模板的存在是爲了消除重複代碼,提高代碼複用率的。 方案:根據給定類型生成所需函數。 函數模板 函數模板是C++模板機制中的一種,其作用是爲不同類型的數據生成操作相同或相似的函數。 模板參數自動推導 利用模板參數推導時需要注意
原创 OpenCV—漫水填充floodFill之區域信息統計
本文的主要參考爲 1、官方文檔OpenCV249-floodFill 2、《Learning OpenCV 3》page361-364 OpenCV中提供的直線擬合API如下: int floodFill(InputOutputArra
原创 移動語義move性能測試
動機:減少非必要的拷貝 實現思路: 1、必須要語法讓我們在調用端告訴編譯器,這是個Rvalue std::move可以實現 2、必須有語法讓我們在被調用端寫出一個專門處理Rvalue的函數,參考std::string的實現 std::m
原创 C++轉換函數和隱式類類型轉換
基礎類型轉換基礎類型轉爲類類型類類型轉換爲基礎類型 1、基礎類型轉換 基礎類型之間的類型轉換,滿足從低精度向高精度的自動轉換,規則如下: (char -> short)-> int -> unsigned int -> long ->
原创 【C++17】新特性梳理
目錄 if init表達式 structual bindings inline變量 std::string_view if init表達式 C++17語言引入了一個新版本的if/switch語句形式,if (init; conditi
原创 C++基於對象--Class without pointer--complex的簡單實現
要注意培養正規的、大氣的編程習慣。 1、基於對象(Object Based):面向單一class的設計。 class有兩種經典的分類: 一種不帶有指針 另一種帶有指針 2、面向對象(Object Orien
原创 OpenCV—連通域分析connectedComponentsWithStats()
下文主要內容來自《Learning OpenCV 3》page417-419和官方文檔 在OpenCV 3中提供了兩個很好的函數,在OpenCV 2中沒有。 (1)cv::connectedComponents() (2)cv::co
原创 C++11--Lambda表達式
《C++Primer》中對lambda表達式的解釋如下: lambda表達式表示一個可調用的代碼單元。我們可以將其理解爲一個未命名的內聯函數。 微軟官網對lambda表達式的解釋如下: 1、捕獲列表(capture list)Lambda
原创 C++11 多線程編程--線程安全隊列
1 std::thread類的構造函數是使用可變參數模板實現的,也就是說,可以傳遞任意個參數,第一個參數是線程的入口函數(可調用對象),而後面的若干個參數是該函數的參數。 2 std::mutex有兩種操作:鎖定(lock)與解鎖(unl