原创 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