Category Archives: C/C++

[C++] C++ 地圖

網路上看到的C++地圖,蠻有意思的。 http://3.bp.blogspot.com/_VUQ3DQEhjsM/SiulAQFExOI/AAAAAAAAAXQ/UHIhgH4l-54/s1600-h/cpplands1.png

Posted in C/C++, 程式設計 | Leave a comment

ISO C++ Committee Approves C++0x Final Draft

原文 ISO C++ Committee Approves C++0x Final Drafthttp://developers.slashdot.org/story/11/03/26/1949225/ISO-C-Committee-Approves-C0x-Final-Draft 中譯ISO C++委员会批准C++0x最终草案http://developers.solidot.org/article.pl?sid=11/03/27/1056211 更多關於C++0x的功能介紹http://kheresy.wordpress.com/2010/04/19/c-%E8%AA%9E%E6%B3%95%E5%86%8D%E5%8A%A0%E5%BC%B7%EF%BC%9Ac0x/

Posted in C/C++, 程式設計 | Leave a comment

[C/C++] Read configuration file

說來也趣味,這篇文章的起因是因為我在改寫 Apriori code時,由於看不懂其中某段configure_file的操作,就上網找一些資訊。偶然間發現可以讀取configuration file的小程式:A C++ Class to read Configuration file。 例如,他只要寫下列設定檔:[section_1]foo = barwater= h2o [section_2]foo = foowater= wetfour = 4.2然後在讀取程式那邊這麼寫: 就可以輕鬆讀取設定檔了。若想要知道詳細的code,請到A C++ Class to read Configuration file

Posted in C/C++, 程式設計 | Leave a comment

[C/C++] try … catch(…) 用法

因為寫的程式都是自己用,所以很少在寫Exception。今天看到某個在職畢業學長的Codes 有下面的東西。 try {} catch(…){} 當時猜說該不會是for any exception的意思吧?去google了一下,果然八九不離十。http://se.csai.cn/ExpertEyes/No138.htm建議有興趣的人可以看上面的連結。主要是在講說當你有很多個exceptions 要處理時,為了避免漏抓exception或是為了一次抓取所有丟出來的的exception,便使用C++中的catch(…)的特殊用法。

Posted in C/C++, 程式設計 | Leave a comment

C/C++ Thread Issue

Using Pthread 1.  Pthread Tutorial 2. Pthread Spec. 3. Wait for function of Pthread 4. 如何讓Pthread在背景不斷執行?(Semaphore)   Multi-threading issue 1. For Windows Thread 2. Introduction to Windows Thread

Posted in C/C++, Linux, Linuxamp;FreeBSD, 程式設計 | Leave a comment

[C/C++] 陣列當作參數傳遞的函式實做方法

在網路上無意間看到(原創) 如何使用function template傳遞array? (C/C++) (template)的幾篇文章後,我翻開我那塵封已久的C++ Primer 4/e,將有關陣列當做參數傳遞到函數的實作方法,整個初階到較為高階的做法,整理過後如下:一般來說,我們若要讓函數傳遞陣列時,會寫以下: 但是此函式主要有兩個問題:1. 若傳入的陣列只有包含3個元素時,會有out of range的問題。2. 若傳入的陣列長度超過10,則無法完整印出該陣列內容。針對上述問題的解法,C++ 在訂出reference這個概念後,array也可以用以下來代替: 此一reference的技巧,在於限定傳入的陣列大小只有10,降低了使用上的風險。其中,傳入的參數int (&arr)[10] 表示傳入一個reference,其reference到具有10個int元素的陣列。若不加入括號的話:int &arr[10]表示傳入一個長度為10的陣列,每一個元素型態皆為int &。不過,如此作法卻大大降低了可用性。 因此,如何管理好陣列大小,便成為一個令人頭痛的問題!根據C/C++ Primer 4/e 提出常用的解法有三:1. 函式另外傳入兩個指標,分別指向陣列開頭以及陣列結尾。2. 如1.所述,不同的是,將原本指到陣列結尾的指標轉而指向陣列結尾的下一個。3. 函式須指明給定陣列的明確長度。但是,此方法在實用性上略顯不足,難道沒有一個更有效的方法嗎? 我們可以利用C++的template來幫我們實現這個方案。 上述程式碼,利用樣板特化的技巧,讓函式不用帶入陣列大小,便可透過樣板參數幫我們自動得知陣列大小,以利函式功能的撰寫。因此,舉一反三,我們可以藉此程式碼推廣至二維陣列,範例程式碼如下: 因此,對於陣列的參數傳遞,我們可以利用樣板的功能來幫我順利達成。似乎一切在這邊有了完整的解答。:)Reference C++ Primer 中文版 4/e page. 110 , 240~241, 632~633.(原創) array傳進function該怎麼寫才好? (C/C++) (C) … Continue reading

Posted in C/C++, 程式設計 | Leave a comment

[C++] 如何在template 善用typename ?

在編譯其他人的Program 時發現的。(也多虧這些人有釋出這種奇奇怪怪的code, 我才發現g++ 編譯器在處理template時是怎麼運作的。)example: 第10行如果這樣子寫的話,g++ 編譯器會出錯!硬是要在前面加個typename 變成: typename map<T, int>::iterator it; 才能夠解決! 這是為什麼呢? 因為:: scope operator 接在它後面的可以是成員變數、函數或是 物件類型。 如果不加上typename的話,編譯器可能會將iterator 誤認為成員變數。 (實際上iterator是一個物件類型) 所以要加上typename,讓編譯器知道這個東西是一個物件類型。 Ref: http://lnk.in/73g7 http://www.webdesgin-information.com/?p=54 http://pages.cs.wisc.edu/~driscoll/typename.html

Posted in C/C++, 程式設計 | Leave a comment

[C++] fstream 中的! operator …

雖然已經學過,但是重新複習的時候,突然覺得fstream file ; if(!file) … 很神奇!就手癢做一個簡單版的。 http://gist.github.com/95100 /* Usage: To implement a object as fstream with operator ! and open()* Author: Allen (allen501pc@hotmail.com)* Date: 04/14/2009* Output:* object has been opened!*/#include <iostream>using namespace std;class object{ private: bool isset; bool notopen; public: … Continue reading

Posted in C/C++, 程式設計 | Leave a comment

Dev C++要如何 include conio.h(conio2.h)?

新版的Dev C++ 有支援 conio.h (或conio2.h) 註1 但是一般來說還不能編譯,必須到 工具->編譯器選項->在”編譯器”的 sub menu 中 將”在連結器命令列中加入以下命令“打勾,並且在下方填入 “-lconio“ 這樣就行了。 註1: conio.h (或conio2.h) 有支援console螢幕控制函式,例如:gotoxy()、 clrscr()、delline()…等等。如果在Dev-Cpp/include中找不到 conio.h (或conio2.h),則到http://conio.sourceforge.net 抓取相關 Devpak for Dev C++ 檔案進行安裝。

Posted in C/C++, 程式設計 | Leave a comment