原创 宏定義中的一些問題

C99中規定宏可以像函數一樣帶有可變參數,比如 #define LOG(format, ...) fprintf(stdout, format, __VA_ARGS__) 其中,...表示參數可變,__VA_ARGS__在預處理中爲實

原创 函數的形參與返回

函數中形參與實參的傳遞實質: 函數在調用時,會把實參變量的值複製給形參變量,即實參與形參是兩個不同的變量。形參的變量在函數返回後釋放內存 ①改變形參指針的值: 實參和形參的值都爲內存地址,指向同一個內存空間,當形參改變後,即形參指向的內

原创 ACE庫使用與環境搭建

一:下載解壓ACE庫包 #tar -xzvf ACE-6.3.3.tar.bz      解壓得到ACE_wrappers 二:設置系統環境變量 #vi /etc/profile  追加:export ACE_ROOT=/home/gu

原创 lua中的弱引用

Lua是具備自動內存管理的我們只管創建對象,無須刪除對象(當然,對於不要的對象你需要設置一下nil值),Lua會自動刪除那些被認爲是垃圾的對象。問題就出現在,什麼對象纔是垃圾對象,有些時候,我們很清楚某個對象是垃圾,但是,Lua卻無法發現

原创 一些知識點

  1、  簡述你對模板方法的設計模式的瞭解   模式定義:           模板方法模式在一個方法中定義了一個算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類能夠在不改變算法結構的情況下,又一次定義算法中的某些步驟。    

原创 malloc/free與new/delete的區別

相同點:都可用於申請動態內存和釋放內存 不同點: (1)操作對象有所不同。 malloc與free是C++/C 語言的標準庫函數,new/delete 是C++的運算符。對於非內部數據類的對象而言,光用maloc/free 無法滿足動態

原创 智能指針

auto_ptr auto_ptr在構造時獲取對某個對象的所有權(ownership),在析構時釋放該對象。 1) 因爲auto_ptr析構的時候肯定會刪除他所擁有的那個對象,所以我們就要注意了,一個蘿蔔一個坑,兩個auto_ptr不能

原创 Mongodb數據庫常用

MongoDB的默認數據庫爲“db”,該數據庫存儲在data目錄中 “show dbs”顯示所有數據庫列表 “db”顯示當前數據庫對象或者集合 “use dbname”連接一個指定的數據庫 文檔即行row,是一組的鍵值對(BSON)

原创 Jsoncpp數據交互文本格式

Json::Value  可以表示所有類型 Json::Reader 將json文件流或字符串解析到Json::Value,主要調用函數parse() Json::Writer 將Json::Value轉化爲字符串流 若json文件是

原创 c++容器迭代器問題

一:迭代器失效問題 對於節點式容器(map,list,forward_list,set)元素的刪除,插入操作會導致指向該元素的迭代器,指針,引用失效,但是其他元素迭代器,指針,引用不受影響 對於順序式容器(vector,string)元

原创 MongoDB的c++用法

連接Mongo數據庫 try{ mongo::DBClientConnection c; c.connect("localhost"); } catch(const mongo::DBException &e) { std::co

原创 enum和bitset混合運用場景

一般使用#define和const創建符號常量,當符號常量多的時候使用enum 運用場景爲:任務類有多個狀態,需要用一個變量去存儲該狀態,爲了更直觀和規範化代碼,多個狀態用bitset來存儲,用enum來作爲顯示。 #include<io

原创 順序容器

順序容器的插入元素: push_back(value) 在容器尾部添加元素value    array不支持 push_front(value) 在容器頭部添加元素value      vector,string不支持 insert(it

原创 變參

C語言變參:VA_LIST 在使用C語言的變參時,需要將變參放在最後一個參數的位置,並且變參前面至少要有一個普通參數 ① 函數定義一個va_list的變量,這個變量是指向參數的指針。 ②調用va_start(va_list ap,cha

原创 線程鎖

互斥鎖(有可能造成死鎖):class Thread_Mutex { public: Thread_Mutex(void) { ::pthread_mutex_init(&lock_, NULL);//動態初始化,null使用默認的a