Time of Update: 2018-12-04
1)StreamReader無法取得正確取得當前位置的問題。這個問題網上看到有人提了,參見:StreamReader緩衝引起BaseStream.Position不能反映當前Read位置的問題。不過它給出的解決方案不太認同。我的檔案有幾十兆,不想全部讀入記憶體。如果考慮用Stream/BufferedStream,這樣就得自己寫ReadLine等函數,也不是好招。2)C#中似乎只有map(即Dictionary),貌似沒multi_map?可憐我偏偏要用到這個資料結構。目前我老老實實用Dicti
Time of Update: 2018-12-04
C/C++字串處理(4):std::vector與std::StringBuilder許式偉2008-3-28引子std::StringBuilder 基於 std::vector 實現。所以儘管本文討論 std::vector,但是所有的結論對 std::StringBuilder 同樣有效。實現概要簡單來講,std::vector 是一個動態數組,管理的是一塊線性、可動態增長的記憶體。如何加速 std::vector?使用 vector::reserve在大致可預估 vector
Time of Update: 2018-12-04
C/C++字串處理(5):std::deque與std::TextPool許式偉2008-4-4引子std::TextPool 基於 std::deque 實現。所以儘管本文討論 std::deque,但是所有的結論對 std::TextPool 同樣有效。實現概要顧名思義,這是一個“雙向隊列(double-ended queue)”。這意味著從隊列開始和結束處插入(刪除)資料的效能很好。為了達到這個目的,std::deque
Time of Update: 2018-12-04
以前學彙編,很清楚函數是怎麼調用的,但是久不用之,又忘了~~不知其他人有沒有這種經曆,寫c/c++程式時如果瞭解許多編譯器底層細節,是很爽的;否則,有時會很沮喪。雖然是比較簡單的內容,讓我們也來回憶一下...我們知道,函數調用最通常的傳遞參數的方式莫過於使用堆棧;函數的局部變數也是在棧上建立。具體怎麼做呢?假如我們有這麼一個小小的程式:void Test(int a){ int b;}int main(int argc, char* argv[]){ int
Time of Update: 2018-12-04
今有c++程式:class CA{public: CA(int n1=0):_n1(n1){} virtual void vf1(){}private: int _n1;};class CAsub:CA{public: CAsub(int n1=0,int n2=1):CA(n1),_n2(n2){} virtual void vf1(){} virtual void vf2(){}private: int _n2;};int main(int argc, char*
Time of Update: 2018-12-04
難度: Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 現代程式開發最關注的一件事之一就是如何提高代碼的可複用性和可維護性。 OOP提供了抽象概念來構建一個統一的世界模型,具像的物理對象被實現在這個簡單的抽象模型體系中,最終形成龐大的樹型結構來覆蓋由該抽象涉及到的方方面面,可複用性由此誕生。
Time of Update: 2018-12-04
1.編譯。對c++而言,通常是檔案獨立編譯--產生獨立的中間目標檔案。這時主要是語義語法檢查,函數與變數的申明的正確性。這需要引入合適的標頭檔,要讓編譯器看到定義。編譯產生的檔案在windows下是.obj檔案,在unix下是.o檔案。2.串連。串連時,主要是串連函數和全域變數,地址替換和重定位。串連時只關注目標檔案,忽略了源檔案。如果函數未被聲明,通常只是警告一下,可以產生目標檔案。但是如果類型未定義(編譯器無法確定類型大小時),則出錯。3.庫檔案。每個文字檔得到一個.o檔案。我們使用時必須串
Time of Update: 2018-12-04
用 C# 或者 Borland C++ Builder 的時候會遇見“property”這個東西,可以控制讀寫方式。標準 C++ 並沒有這個概念,那麼我們能否在純 C++ 中使用這個功能呢?當然可以。下面是本人獨立完成的一個實現方法:#include <iostream>using namespace std;typedef enum {READONLY, READWRITE} RW_Right;template <class _Class /* 包含該屬性的類 */ ,
Time of Update: 2018-12-04
以前的筆記,貼出來,比較“個人化”導言:本書主要有價值的部分是設計部分,這部分只有躬親方才真知,切記!!1.看書不要充數,保持精力100%集中。看英文要“咬字清楚”這樣還可以學英文!2.顯示建構函式:class A{ explicit A(int n=0,bool b=true){}}void dosomething(A aobject);then:A a1,a2(28) ;finedosomething(28) ;error! but dosomething(A(28)); -- in
Time of Update: 2018-12-04
/**//***************************************************** * 起因: 在c++社區看見有人問如何以簡潔高速地方式解決八皇后(或n皇后)問題 * * 問題描述:n*n棋盤,放n個皇后互不相吃(任何兩個皇后不同行不同列不同45度斜),輸出所有組合。 * * 思路: 採用範圍縮小搜尋法:在第1行放一個棋子,則第2到n行能放棋子的地方因此受限,標記之; * 在第2行能放棋子的地方放下棋子,則第
Time of Update: 2018-12-04
難度: 先來一道思考題template<typename T, T* p>struct A{}; 假若有個int類型的對象i,那麼對於下面這段代碼A<int, &i> obj;這個是合法的嗎? 答: A<int, &i> obj; 可能合法 或 可能不合法。什麼東西可以當作模板的參數呢?
Time of Update: 2018-12-04
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 難度:問題: 下面這段代碼為什麼會編譯失敗呢? struct T{ operatorstd::string() const { returnstd::string(); } operatorint() const
Time of Update: 2018-12-04
難度:先閱讀下面的代碼然後來解答下面的那個問題 struct A{}; int main(){A *p = new A;p->~A();free(p);} 問題:new/delete 和 malloc/free 有哪些區別? 答:new/delete 會在分配的記憶體上調用對象的建構函式和解構函式來初始化和銷毀對象,而 malloc/free 卻不能。更重要的是new/delete 和 malloc/free 不能混用。new 是在自由儲存區中分配記憶體,delete
Time of Update: 2018-12-04
Hello Nana項目網址介紹貼我們開始一個簡單的程式,然後一行一行的講解。1 #include<nana/gui/wvl.hpp>2 #include <nana/gui/widgets/label.hpp>3 int main()4 {5 using namespace nana::gui;6 form fm;7 label lab(fm, nana::size(100, 20));8
Time of Update: 2018-12-04
字串的幾個不同層面的含義1、源檔案中出現的 "abc" 這樣的字串這種叫做字串字面常量,只在代碼中有效。這種字面常量具有內部連結性,編譯器會在每個編譯單元內部為這個字串分配空間儲存。因為是常量,它所位於的記憶體空間通常是不可寫的。2、一個以 '/0' (ASCII NUL字元)結束的字元數組。或者更確切的說,一個包含了各種 ASCII 可列印字元的、以 '/0' 為結束的字元數組。這是 C 語言語義上的字串定義,不涉及編譯、連結的特性,但是 <string.h>和<stdio.
Time of Update: 2018-12-04
原文連結:http://www.cplusplus.com/info/faq.htmlC++ FAQ這個部分包括了關於 C++ 語言的常見各種問題。如果你對某個具體的編程問題有疑問,請去論壇。◎什麼是 C++? C++ 是一種程式設計語言。因為它是源自 C 語言,字面上來說它是“C 的進階”。要找更加介紹性的文字,請參閱 C++ 簡介 章節。◎學習 C++ 之前必須有其它語言的基礎嗎? 不。在運算式方面,C++ 是一門簡單、清晰的語言。確實,一段 C++
Time of Update: 2018-12-04
2004-11-19 21:00Const 最早想法是用於取代前置處理器#define 這個宏,從而形成常量的概念。針對常量const對象,const指標及指向const的指標,函數const型別參數,const 函數傳回型別, const類成員,及const成員函數,及對const最後理解的一些總結來描述 const。①②③④⑤⑥① const對象和const類型的對象對於這兩個概念的描述如下1. int const Object;
Time of Update: 2018-12-04
1.繼Junit CppUnit的成功後, c語言環境下也出現了開發源碼的白盒測試案例CUnit。 暫時CUnit只是在SourceForge上還再不斷改進中,雖然不是很完善,但是能用。 下面介紹一下CUnit結構架構和具體使用 2.結構架構: 在CUnit的首頁上可以看到對他結構簡單描述 Test Registry | ------------------------
Time of Update: 2018-12-04
強制轉化四種類型可能很多人都常常忽略就象我一樣,但是有時還是比較有用的。不瞭解的建議看看,一些機制我也不是十分瞭解,只是將一些用法寫出來讓大家看看。 2004-11-27
Time of Update: 2018-12-04
最好先看問題,自己試著回答一下然後再看答案,看你能答對幾道?1.這樣的初始化有什麼問題?char *p = malloc(10); 編譯器提示“非法初始式” 云云。答:這個聲明是靜態或非局部變數嗎?函數調用只能出現在自動變數(即局部非靜態變數) 的初始式中。因為靜態變數的地址必須在編譯的過程中就確定下來而malloc()申請的記憶體位址是在運行時確定的。2. *p++ 自增p 還是p 所指向的變數?答:尾碼++ 和-- 操作符本質上比首碼一目操作的優先順序高, 因此*p++ 和*(p++)