2010年5月2日 星期日
[貓] C++ 五歲了
C++五歲了
有時候時間這東西很奇妙,不知不覺中,這隻貓女兒已經陪我度過了這麼多年
不管是大學、研究所、當兵夏令營到現在的上班族,每段日子都有C++的蹤跡
今天趁她剛過五歲,來回顧一下C++的成長史:
2005年6月12號,感謝好心的貓中途讓我領養了她。有圖為證,那時候才兩個月左右
真的是好小一隻。
2005/07,似乎長大了一丁點,看起來還是很瘦弱可憐的樣子。
2005/08,毛色比較亮麗了,眼神楚楚可憐是她的大絕招,常常用此逃過處罰XD
2005/11,肚子開始變胖了XD
2006 照片消失了 >_<
2007/09,跟我住到新竹去,看起來很大隻其實都被獸醫說瘦。
偶爾要假裝自己是蛇
偶爾也要幫某運動廠商宣傳
喜歡霸佔電腦不給我用
2009,又跟我搬回台北了,而且他適應新環境都很快,真是一隻好貓。
現在最常玩手不見了的遊戲(因為大部分時間都在睡覺orz)
西家家 生日快樂~
要乖乖喔~
2010年2月26日 星期五
[C++][STL] delete item in loop
STL 好用是好用,小地方還是要注意,不然很容易爆炸又難DEBUG
1. Use List:
list中erase會回傳iterator,所以要erase(it)
2. Use Map:
map中erase竟然又不一樣,回傳void,所以需要erase(it++)
其實應該要看他內部為啥實做成兩種模式的
但是STL聖經一直供在桌上懶得看XD
有空再來研究
1. Use List:
list中erase會回傳iterator,所以要erase(it)
list<int> tmp; for(list::iterator it = tmp.begin() ; it != tmp.end() ; /*empty*/ ) { if( something ) it = tmp.erase(it); else it++; }
2. Use Map:
map中erase竟然又不一樣,回傳void,所以需要erase(it++)
map<int,int> tmp; for(map::iterator it = tmp.begin() ; it != tmp.end() ; /*empty*/ ) { if( something ) tmp.erase(it++); else it++; }
其實應該要看他內部為啥實做成兩種模式的
但是STL聖經一直供在桌上懶得看XD
有空再來研究
[Blog] 在blogger貼漂亮的程式碼
換身為一個宅宅工程師,在BLOG上貼漂亮的程式碼也是合情合理的(推眼鏡)
上網可以搜尋到一缸子的blogger解法
很囧的是不知道為啥很多人貼的解法我都弄不起來
經過多次嘗試失敗
一怒之下直接去看人家的原始網頁
然後就成功貼出程式碼了XD
主要步驟記錄一下:
1. Blogger後台選擇〔版面配置〕→〔修改HTML〕→勾選〔展開小裝置範本〕
2. 把以下這段CSS貼到裡面,貼哪裡不知道可以看網頁原始碼
3. 麻煩的大於小於轉換:
到HTML ENCODE網站去轉換
4. 在<pre class="code">和</pre>之間插入你的程式碼
不過blogger貼程式碼還是不太friendly阿~_~||
參考文章:
高登工作室
Forgot 同花打不打得過俘虜浩司
SeekING Bernie
上網可以搜尋到一缸子的blogger解法
很囧的是不知道為啥很多人貼的解法我都弄不起來
經過多次嘗試失敗
一怒之下直接去看人家的原始網頁
然後就成功貼出程式碼了XD
我是範例程式碼 int main() { printf("hello world"); return 0; } 我是範例程式碼
主要步驟記錄一下:
1. Blogger後台選擇〔版面配置〕→〔修改HTML〕→勾選〔展開小裝置範本〕
2. 把以下這段CSS貼到裡面,貼哪裡不知道可以看網頁原始碼
.post pre { background: #F0F0F0 url(http://klcintw.images.googlepages.com/Code_BG.gif) repeat-y scroll left top; border: 1px solid #CCCCCC; color: #333333; display: block; font-family: Courier New; font-size: 10pt; line-height: 120%; margin: 5px 0 0 20px; max-height: 200px; overflow: auto; padding: 10px 10px 10px 21px; width: 90%; } .CODE { display: block; /* fixes a strange ie margin bug */ font-family: Courier New; font-size: 8pt; overflow:auto; background: #f0f0f0 url(http://klcintw.images.googlepages.com/Code_BG.gif) l\ eft top repeat-y; border: 1px solid #ccc; padding: 10px 10px 10px 21px; max-height:200px; height:200px; // for IE6 line-height: 1.2em; }
3. 麻煩的大於小於轉換:
到HTML ENCODE網站去轉換
4. 在<pre class="code">和</pre>之間插入你的程式碼
不過blogger貼程式碼還是不太friendly阿~_~||
參考文章:
高登工作室
Forgot 同花打不打得過俘虜浩司
SeekING Bernie
2010年2月3日 星期三
[C++][STL] map如何使用一個struct當作key
拿來當key的struct,裡面有兩個variables:
struct S { int x; int y; };由於map在insert時就會用KEY做排序,所以必須自己寫一個比較函式:
struct CmpFunction { bool operator() ( const struct S s1, const struct S s2 ) const { return ( (s1.x < s2.x) || ((s1.x == s2.x) && (s1.y < s2.y)) ); } };接下來就可以直接定義map的typedef,比較簡單好用:
typedef std::map<struct S, int value , CmpFunction> map_t; 宣告: map_t mymap;如此一來就可以用find去快速搜尋:
struct S mystruct; map_t::iterator iter = mymap.find( mystruct ); if( iter == mymap.end() ) // not found else // found
2010年2月1日 星期一
那年,我們約館麥
最近在捷運上或公車上常聽到學生模樣的人聊天
「ㄟ 等下約北車喔!」 「好,北車見」
北車北車,短暫的疑惑直到他們陸續在台北車站下車我才啞然失笑
原來北車就是台北車站的簡稱阿,這群小鬼真是...
「台北車站就台北車站,什麼北車南車」
我一邊踏出車廂一邊暗自搖頭
走出擁擠的人潮,卻不經意地抬頭看見赫哲旁邊鮮黃色的大M招牌
原來,八、九年前的我們,
一樣的嘻嘻哈哈跨出車廂,
一樣的打著手機呼朋引伴,
可能也一樣的有一位老頭在旁邊嗤之以鼻:
「館前路麥當勞就館前路麥當勞,什麼館賣館買」
那年,我們約館麥
--獻給所有曾經約在館麥見面的高中好友們
2010年1月29日 星期五
茶壺裡的風暴
"茶壺裡的風暴"
常常在新聞上看到這個詞可是其實不太了解它的意思
上網查了一下發現很有趣
這詞是來自英文諺語 但偉大的中文卻有另一種解釋:
英文:
a tempest in a teapot
或
a storm in a teacup
因為在茶壺裡發生的風暴其實也沒啥大不了的
所以是表示小題大作的意思
中文:
雖然也可以直接借用小題大作之原意
但是一般常用在內部鬥爭的現象
例如: 大家族成員爭奪家產 掀起茶壺裡的風暴
很明顯的我們嗜血的媒體應該會常用到這個意思XD
參考資料:
2010年1月28日 星期四
[Android] How to send key event by adb command
Reference: Link
使用Adb shell command直接送key event給Android
adb shell input keyevent 7 # for key '0' adb shell input keyevent 8 # for key '1' adb shell input keyevent 29 # for key 'A' adb shell input keyevent 54 # for key 'B'也可以直接送STRING進去:
adb shell input text "ANDROID"Support的key code:
0 --> "KEYCODE_UNKNOWN" 1 --> "KEYCODE_MENU" 2 --> "KEYCODE_SOFT_RIGHT" 3 --> "KEYCODE_HOME" 4 --> "KEYCODE_BACK" 5 --> "KEYCODE_CALL" 6 --> "KEYCODE_ENDCALL" 7 --> "KEYCODE_0" 8 --> "KEYCODE_1" 9 --> "KEYCODE_2" 10 --> "KEYCODE_3" 11 --> "KEYCODE_4" 12 --> "KEYCODE_5" 13 --> "KEYCODE_6" 14 --> "KEYCODE_7" 15 --> "KEYCODE_8" 16 --> "KEYCODE_9" 17 --> "KEYCODE_STAR" 18 --> "KEYCODE_POUND" 19 --> "KEYCODE_DPAD_UP" 20 --> "KEYCODE_DPAD_DOWN" 21 --> "KEYCODE_DPAD_LEFT" 22 --> "KEYCODE_DPAD_RIGHT" 23 --> "KEYCODE_DPAD_CENTER" 24 --> "KEYCODE_VOLUME_UP" 25 --> "KEYCODE_VOLUME_DOWN" 26 --> "KEYCODE_POWER" 27 --> "KEYCODE_CAMERA" 28 --> "KEYCODE_CLEAR" 29 --> "KEYCODE_A" 30 --> "KEYCODE_B" 31 --> "KEYCODE_C" 32 --> "KEYCODE_D" 33 --> "KEYCODE_E" 34 --> "KEYCODE_F" 35 --> "KEYCODE_G" 36 --> "KEYCODE_H" 37 --> "KEYCODE_I" 38 --> "KEYCODE_J" 39 --> "KEYCODE_K" 40 --> "KEYCODE_L" 41 --> "KEYCODE_M" 42 --> "KEYCODE_N" 43 --> "KEYCODE_O" 44 --> "KEYCODE_P" 45 --> "KEYCODE_Q" 46 --> "KEYCODE_R" 47 --> "KEYCODE_S" 48 --> "KEYCODE_T" 49 --> "KEYCODE_U" 50 --> "KEYCODE_V" 51 --> "KEYCODE_W" 52 --> "KEYCODE_X" 53 --> "KEYCODE_Y" 54 --> "KEYCODE_Z" 55 --> "KEYCODE_COMMA" 56 --> "KEYCODE_PERIOD" 57 --> "KEYCODE_ALT_LEFT" 58 --> "KEYCODE_ALT_RIGHT" 59 --> "KEYCODE_SHIFT_LEFT" 60 --> "KEYCODE_SHIFT_RIGHT" 61 --> "KEYCODE_TAB" 62 --> "KEYCODE_SPACE" 63 --> "KEYCODE_SYM" 64 --> "KEYCODE_EXPLORER" 65 --> "KEYCODE_ENVELOPE" 66 --> "KEYCODE_ENTER" 67 --> "KEYCODE_DEL" 68 --> "KEYCODE_GRAVE" 69 --> "KEYCODE_MINUS" 70 --> "KEYCODE_EQUALS" 71 --> "KEYCODE_LEFT_BRACKET" 72 --> "KEYCODE_RIGHT_BRACKET" 73 --> "KEYCODE_BACKSLASH" 74 --> "KEYCODE_SEMICOLON" 75 --> "KEYCODE_APOSTROPHE" 76 --> "KEYCODE_SLASH" 77 --> "KEYCODE_AT" 78 --> "KEYCODE_NUM" 79 --> "KEYCODE_HEADSETHOOK" 80 --> "KEYCODE_FOCUS" 81 --> "KEYCODE_PLUS" 82 --> "KEYCODE_MENU" 83 --> "KEYCODE_NOTIFICATION" 84 --> "KEYCODE_SEARCH" 85 --> "TAG_LAST_KEYCODE"
訂閱:
文章 (Atom)