原创 C++ boost庫智能指針(四):intrusive_ptr

      intrusive_ptr這個智能指針不怎麼好用,雖然它和shared_ptr也是基於引用計數的,但需要自己來實現引用計數的增加與減少。需要在我們管理的指針對象中添加一個計數的成員,例如下面的類Test.       頭文件:

原创 C++ boost庫智能指針(一):scoped_ptr 與 scoped_array

        智能指針是C++11更新以後一直很熱門的技術,這重點區分了C與C++,智能指針給C++程序員的內存管理帶來了便利,同時也有風險,用不好容易翻車。         boost提供了6種智能指針,scoped_ptr,  sc

原创 C++ boost庫智能指針(二):shared_ptr和shared_array

        shared_ptr是boost最重要的智能指針,最像智能指針的"智能指針", 由於它的優越表現,被加入了C++11標準。         shared_ptr與scoped_ptr —樣包裝了 new操作符在堆上分配的動

原创 C++ boost庫智能指針(三):weak_ptr

        weak_ptr是shared_ptr得到協助者,可以觀察shared_ptr是否過期,weak_ptr不改變引用計數,也不能使用 *,->操作符,是一個很弱的智能指針。例如下面的代碼: #include <iostre

原创 C++ 標準庫智能指針auto_ptr源碼分析

       智能指針是C++標準中一個很重要的內容,它幫C++程序員解決了部分內存開闢與釋放的問題,使C++程序員可以和java, C#一樣不爲內存泄露而擔心。使用智能指針需要包含頭文件#include <memory>        

原创 完美解決win10安裝svn出現2503,2502錯誤

        如果win10是重裝的,或者是沒有管理員權限,安裝SVN時就會出現2503,2502的錯誤,導致無法安裝svn, 具體解決辦法如下:         右鍵win10左下角開始,打開紅色框的選項。         輸入ms

原创 Qt窗體工具欄事件響應與自定義

        某些時候,工具欄可以提高軟件的使用效率,比如VS的調試,查找,上一步,下一步等,在開發時經常用到。本篇博客介紹如何在Qt窗體上添加工具欄。        用QtCreator新建一個GUI項目,繼承於QMainWindow

原创 Qt響應ctrl 鼠標滾輪字母等組合按鍵

       一般的軟件會有很多組合快捷鍵,例如QQ截圖ctrl + alt + A, 微信截圖 alt A, 看PDF時ctrl + 鼠標滾輪進行縮放等。Qt對這些快捷鍵都有了實現,下面分別對這些功能做介紹並提供代碼實現。 1 鼠標按鍵

原创 ProcessExplorer查找C++ exe程序運行所需要的的dll

       當我們把自己打包的exe程序放到別人電腦時可能出現缺少dll的情況,此時可以用ProcessExplorer工具找出對應的dll, 把exe先運行起來,將ProcessExplorer工具欄的靶子拖動到運行的exe窗口上,此

原创 C++數據結構:普通隊列與循環隊列

什麼是隊列?        隊列是一種特殊的線性表,它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作。隊列中的數據元素遵循“先進先出”(First In First Out)的原則,簡稱FIFO結構。  

原创 MFC CArchive類讀寫文件的應用

 一 寫文件      CFile和CArchive進行綁定,CArchive把數據寫到文件中,代碼如下: CFile file; BOOL isOk = file.Open(L"1.txt", CFile::mode

原创 C++構造函數語義學之默認構造函數

         在學C++時,通常有一種概念,在創建類對象時,如果沒有構造函數,那麼會調用默認的構造函數,並且把相關成員賦值爲0,這句話正確嗎,看看下面這個例子: #include <iostream> using namespac

原创 STL仿函數與函數對象淺析

        例如,一個很簡單問題,求兩個數中的較大數,用C++代碼很好寫,如下: int Max(const int num1, const int num2) { return num1 >= num2 ? num1 : num

原创 STL multiset使用說明與代碼演示

       STL multiset特點        (1)數據有序,可重複        (2)刪除元素時,相同的所有元素都會被刪掉        使用時需要包含頭文件<set>.        代碼: #include <ios

原创 C++增強for循環

         for循環是常見的代碼語句,常規的for循環如下 #include <iostream> using namespace std; int main() { int array[] = { 1,1,2,3,5,8