圖形學(xué)什么的我不懂,不過(guò)很佩服lz的執(zhí)著,有能力的人到哪里都會(huì)發(fā)光。
re: 去掉string里面的所有空格 chenger 2007-11-28 21:54
這個(gè)是尾遞歸啊,直接改成循環(huán)不更好
萬(wàn)一有一行巨長(zhǎng)的,直接棧溢出了……
當(dāng)然你要說(shuō)沒(méi)那么長(zhǎng)的,也無(wú)所謂
re: YC 瀏覽器 chenger 2007-11-18 23:19
雖然也很佩服他的編碼功力……
不過(guò),去掉了運(yùn)算符重載也就算了,居然連模板和函數(shù)重載都去掉了,這還叫C++嗎?還真就是一個(gè)C with class。
至于編譯速度比VC++快云云,要知道人家支持的是完整C++,也就是包括函數(shù)重載和模板,而這兩塊都相當(dāng)耗編譯時(shí)間。特別是模板系統(tǒng),絕對(duì)是C++編譯器作者最頭疼的東西,這個(gè)YC++沒(méi)有模板,快一點(diǎn)也可以理解。還有,我懷疑他有作多少代碼優(yōu)化,VC++肯定包含大量?jī)?yōu)化,優(yōu)化需要對(duì)代碼做大量分析,很占時(shí)間。如果想要編譯速度,那么只能減弱或者減少優(yōu)化,兩者不可兼得。
當(dāng)然如果他把自己定位在一個(gè)快速原型開(kāi)發(fā)的位置上,也未嘗不可,但這是C++語(yǔ)言又顯得力不從心了些。還不如那些腳本語(yǔ)言來(lái)的好用。
我沒(méi)用過(guò)產(chǎn)品,所以這些都是一些推測(cè)。我是很佩服作者的,因?yàn)樽约阂矊?xiě)過(guò)編譯器,知道實(shí)現(xiàn)這么一個(gè)東西需要很多工作,不過(guò)記者有亂吹捧之嫌。
如果用非標(biāo)準(zhǔn)的散列表話,應(yīng)該會(huì)更好
對(duì)付這種應(yīng)用,散列表一般是最佳選擇
還好0x里散列表要進(jìn)標(biāo)準(zhǔn)庫(kù)了
可惜,C++已經(jīng)風(fēng)光不再了
C++的語(yǔ)法……感覺(jué)實(shí)在和優(yōu)美搭不上邊
太多了吧,雖然是好書(shū)
比如第一層面,我個(gè)人認(rèn)為把TC++PL和primer看過(guò)就夠nb了,況且這兩本書(shū)絕對(duì)不是那么容易看下來(lái)的。
effective,exceptional,我覺(jué)得不如推薦一本c++ coding standard實(shí)用。
對(duì)于STL,The C++ Standard Library是有必要推薦的,但更多的應(yīng)該當(dāng)字典用。
template的高級(jí)技術(shù),什么Meta Programming之類的,其實(shí)沒(méi)有太多必要了解。
最后是底層,Inside Object Model這樣的書(shū),個(gè)人覺(jué)得讀一部分就可以了,很多純粹是給compiler作者看的。
以上個(gè)人意見(jiàn)
re: 符合量子性質(zhì)的程序 chenger 2007-08-10 17:46
老實(shí)說(shuō),科普的例子很容易讓人對(duì)量子力學(xué)產(chǎn)生誤解
有所謂quantum computing的研究,就是利用量子體系可以處在不同態(tài)的疊加這一特性(實(shí)際上當(dāng)然很復(fù)雜),可惜離實(shí)用太遠(yuǎn)……
re: 請(qǐng) 教 chenger 2007-04-22 10:13
用模板不是更好?
template <typename T>
void sort(T v[],int size)
{
for(int i = 0;i < size;++i)
{
for(int j = i;j < size - 1;++j)
{
if(a[j]>a[j+1])
swap(a[j],a[j+1]);//標(biāo)準(zhǔn)庫(kù)里好像有這個(gè)函數(shù)
}
}
}
不知道對(duì)不對(duì)……這個(gè)sort,如果代碼沒(méi)錯(cuò)的話,可以適用于所有能夠用<比較大小的類型,此外要支持賦值,總之要讓swap函數(shù)能工作。當(dāng)然,更好的辦法是提供兩個(gè)迭代器begin,end指明排序范圍。建議樓主去看看STL里算法的實(shí)現(xiàn)。
re: 未完成東西中的完成部分 chenger 2007-03-29 12:54
看到了expression template……確實(shí)是好技術(shù),雖然用得不多。
re: 又是未完成的東西 chenger 2007-03-27 12:15
還是原始的辦法好
搞科學(xué)計(jì)算的,就不要太講究什么封裝,用類都顯得多余
其實(shí)更重要的問(wèn)題可能是比較底層的,比如緩存命中等等。至于用模板技術(shù),已經(jīng)有bliz++(是不是叫這個(gè)名?)等庫(kù)在先,不如去研究研究。其實(shí)如果用模板,可讀性更差,除非對(duì)template了解很深入,否則幾乎看不懂
re: 純C編寫(xiě)的矩陣工具包 chenger 2007-01-01 12:36
三天掌握C++?夢(mèng)囈吧
@heying0
是用Vim格式化成html,然后再貼上來(lái)
都可以用動(dòng)態(tài)規(guī)劃解決,不需要回溯
re: 百度公司來(lái)科大的面試題 chenger 2006-11-10 19:04
說(shuō)實(shí)在的,一下就想到了作者所說(shuō)的鬼魂算法。
是個(gè)智力題
線性同余法不是很好的方法,很多隨機(jī)性的測(cè)試都通不過(guò)。
現(xiàn)在有很多非常好的算法實(shí)現(xiàn),都比較復(fù)雜。可以看看W.W.Tsuang的一個(gè)lecture,
Random Number Generation and Testing
這個(gè)只能算是STL的應(yīng)用,和Meta-Programming沒(méi)什么關(guān)系……
re: Google面試題之補(bǔ)充 chenger 2006-09-17 13:25
后來(lái)我也覺(jué)得那個(gè)不正經(jīng)。
我認(rèn)為還是正經(jīng)解決一下比較好。做到這個(gè)份上,也差不多了。
@張沈鵬
看了你的算法,寫(xiě)得比我的好。主要是little函數(shù),我沒(méi)有考慮到。
學(xué)習(xí)。little函數(shù)比較巧妙。
用數(shù)組?感覺(jué)一般只有在做算法題時(shí)才這么干
Dive into Python是本好書(shū)
入門(mén)的話A Byte of Python很不錯(cuò),我是一口氣看完的。都有中文電子版。
@張沈鵬
能說(shuō)詳細(xì)一點(diǎn)嗎?具體是用什么方法?
問(wèn)題好像是自增運(yùn)算符到底在什么時(shí)候被求值
re: 使用UNICODE提高效率 chenger 2006-09-11 20:54
梁肇新那本書(shū)……
關(guān)于他寫(xiě)的Windows編程的東西,我不是太了解,不好評(píng)論。
只是覺(jué)得看他的文字很令人不爽。
re: 讀VC++內(nèi)幕之體悟 - 11 chenger 2006-09-10 20:48
就這么一點(diǎn)?
re: 臨時(shí)對(duì)象的生存期 chenger 2006-09-10 15:41
都試過(guò)了,不管release還是debug,行為是一樣的。
我察看了一下vc中string的實(shí)現(xiàn),它使用了一個(gè)union來(lái)保存字符串,如果字符串比較小,那么就用棧上的數(shù)組來(lái)保存。在析構(gòu)的時(shí)候,會(huì)重新設(shè)置字符串的最后一字節(jié)為0。
re: 臨時(shí)對(duì)象的生存期 chenger 2006-09-10 12:28
@含笑半步癲
最好的辦法還是去看VS的stl源碼,不過(guò)感覺(jué)VC STL的可讀性極差……
我雖然一直在說(shuō)vs2005怎么樣怎么樣,不過(guò)我的電腦上只裝了VC++ 2005 Express,比起vs來(lái),除了基本的ide和編譯器,別的都很受限制,比如默認(rèn)不帶Windows SDK,也沒(méi)有MFC。
我的代碼都是用Vim寫(xiě)的。Vim里可以直接把著色的源碼轉(zhuǎn)換成html,然后再粘過(guò)來(lái)。唯一的問(wèn)題是縮進(jìn)有時(shí)候要出點(diǎn)問(wèn)題,似乎C++博客對(duì)pre標(biāo)簽作了些處理,只好手工調(diào)整了。
re: 好像想寫(xiě)點(diǎn)什么? chenger 2006-09-09 10:44
原來(lái)是這個(gè),看到英文沒(méi)想起來(lái)
@Optimistic
不清楚。面試的話可能是手寫(xiě)吧。
我覺(jué)得你的算法有一點(diǎn)問(wèn)題。在main函數(shù)的while循環(huán)里面,iNowOneCount應(yīng)該是小于i的所有數(shù)的各位數(shù)字上1的個(gè)數(shù)吧?你的算法是把i本身也算在內(nèi)的,跟我的定義不一樣。當(dāng)然這沒(méi)什么,問(wèn)題是iPreCount = -1。比如i=11的時(shí)候,結(jié)果應(yīng)該是4(包括11在內(nèi)),而這時(shí)候iNowCount = 3,顯然不對(duì)。我的建議是把iPreCount 干脆設(shè)為0,對(duì)大于1的數(shù),都能算出正確的結(jié)果。1就特殊對(duì)待了吧。
erac的算法好像是直接計(jì)算每一個(gè)數(shù)的各位1的個(gè)數(shù)然后加起來(lái)。我原來(lái)以為這樣算比較慢,所以找了一個(gè)直接計(jì)算的公式,實(shí)際跑了一下,感覺(jué)差不太多。
re: 好像想寫(xiě)點(diǎn)什么? chenger 2006-09-08 12:46
interval tree是什么東西?我只知道平衡樹(shù)是能保持插入搜索都是nlogn的
re: Return of Turbos chenger 2006-09-08 12:28
@沐楓
想想也是的,否則不太可能做到這么快就發(fā)布。
希望以后能有更好的作品吧。
re: Return of Turbos chenger 2006-09-07 15:01
我以前裝BDS也是這樣……看來(lái)想用Turbo就只能系統(tǒng)重裝了。
re: Return of Turbos chenger 2006-09-06 22:46
prerequisites都可以從microsoft上下載
感覺(jué)這個(gè)Turbo C++就是把BDS拆了再改了個(gè)名字。不過(guò)
Turbo C++在我的機(jī)子上死活有問(wèn)題,所以到底怎么樣也不知道。
VCL用C++重寫(xiě)……應(yīng)該沒(méi)有。
re: 臨時(shí)對(duì)象的生存期 chenger 2006-09-05 21:08
我不但是學(xué)生,而且是業(yè)余……
也就是自?shī)首詷?lè)
re: 臨時(shí)對(duì)象的生存期 chenger 2006-09-05 18:16
我不是說(shuō)g++錯(cuò),在這個(gè)問(wèn)題上g++和VC8的處理方式都沒(méi)有問(wèn)題,都符合標(biāo)準(zhǔn)。文中也說(shuō)了,只是覺(jué)得g++的這個(gè)string實(shí)現(xiàn)比較容易讓人誤解。既然程序員不應(yīng)該用,那么編譯器或者庫(kù)作者干脆就讓其不可用不是挺好的嗎?至少,出個(gè)明顯的錯(cuò)比運(yùn)行了半天然后莫名其妙地crack掉好多了
現(xiàn)在的編譯器都實(shí)現(xiàn)了返回值優(yōu)化,一定程度上能減少拷貝次數(shù)
re: 想寫(xiě)個(gè)腳本解釋器 chenger 2006-09-05 17:48
事實(shí)上,lua的語(yǔ)法設(shè)計(jì)完全是為了滿足性能上的需要。就個(gè)人感覺(jué),lua的語(yǔ)法也還算不錯(cuò),當(dāng)然和C++風(fēng)格不同。
re: 臨時(shí)對(duì)象的生存期 chenger 2006-09-05 17:42
弄弄清楚總是好的。而且它原來(lái)的例子更迷惑一點(diǎn):
string get_str()
{
return string("hello");
}
int main()
{
const char *p = get_str().c_str();
cout << p << endl;
return 0;
}
雖然實(shí)質(zhì)上是一樣的。文章里的例子是我自己編的,比較矯揉造作。
re: zlib 壓縮管道 chenger 2006-09-03 16:58
為什么要把決定壓縮程度的參數(shù)作為模板參數(shù)呢?看不出有這個(gè)必要,而且不直觀
是調(diào)用WIN32 API的……
收藏一下
re: 讀后感:Doom啟世錄 chenger 2006-09-02 19:29
@Corsair
這邊會(huì)跟donews的一塊更新
找了好多,沒(méi)有特別滿意的
re: 讀后感:Doom啟世錄 chenger 2006-09-01 09:05
@子彈
的確,像Carmark這樣的人只能說(shuō)是不世出的天才
而且非常專注,這就很可怕
聽(tīng)說(shuō)VC6對(duì)C++標(biāo)準(zhǔn)的支持很不好,特別是template。居然連min max這樣的簡(jiǎn)單模板函數(shù)都搞不定?
還是用g++或者vs2005得編譯器好
re: 讀后感:Doom啟世錄 chenger 2006-08-27 20:26
@claire
已經(jīng)發(fā)了
min和max兩個(gè)宏用標(biāo)準(zhǔn)庫(kù)提供的min和max算法代替更好些
re: 買(mǎi)了幾本書(shū) chenger 2006-08-25 08:09
書(shū)城是沒(méi)有的。現(xiàn)在的計(jì)算機(jī)書(shū),也實(shí)在是忒貴了,effective c++要58塊,應(yīng)該回南京再買(mǎi)的。
re: 買(mǎi)了幾本書(shū) chenger 2006-08-24 16:55
一樓也有幾間不錯(cuò)的。