一直以來,都在關(guān)注C++的語言,甚至語言的本身,但是后來覺得C++的確有很多詭異的事情
?,雖然有很多人解釋的很好,解釋的很合理,但是還是會(huì)有一種突兀的感覺,甚至覺得長時(shí)間的看下去,我最多知道如何用,如何更有效率地用C++,也許我的思維會(huì)更加富有商業(yè)開發(fā)價(jià)值,但是顯然會(huì)更有局限性,更糟糕的是我會(huì)不會(huì)成為代碼的奴隸?汗。。。基于前段時(shí)間的面試的經(jīng)驗(yàn),還是覺得算法是很重要的,而且一旦能夠靈活使用,那種感覺一定更酷。所以決定還是好好學(xué)習(xí)算法,雖然以前大學(xué)的時(shí)候?qū)W過一點(diǎn),但是現(xiàn)在真的好慚愧,以前都在做什么?自己也不知道了。但是男人,一定要做以后不會(huì)后悔的事情。相信憑借自己的聰明還是可以好好的學(xué)習(xí)到算法的精髓的。前進(jìn)!兩年以后希望能夠直接轉(zhuǎn)正微軟。那時(shí)不希望看到遺憾。剛好手頭有一本算法的書,自己實(shí)踐了一番全排序【注:應(yīng)該是全排列】的遞歸算法。以后不斷更新,希望博客能伴隨我的成長。

/** *//*******************************************************************************
*Prototype: void Perm(int source[], int iFrom, int iLength)
*Parameter: iFrom: The index of first element, which is used to enumrate.
* iLength: The length of source.
*Return: N/A
*Description: It uses recursive to enumerate all cases.
******************************************************************************/
void Perm(int pSource[], int iFrom, int iLength)


{
// If error input, return.

if (!pSource)
{
return;
}

if (iFrom >= iLength - 1)
{
// If all are ready, print them.

for (int i = 0; i < iLength; ++i)
{
printf(" %3d ", pSource[i]);
}
printf("\n");

} else if (pSource && (iFrom >= 0) && iLength && (iFrom < iLength))
{
// If not ready, generate these recursively.
// Enumerate the first element before.
Perm(pSource, iFrom + 1, iLength);
// Enumrate the others except the first.

for (int i = iFrom + 1; i < iLength; ++i)
{
// Swap the first to each others
int iTemp = pSource[iFrom];
pSource[iFrom] = pSource[i];
pSource[i] = iTemp;
// Recursively
Perm(pSource, iFrom + 1, iLength);
// Repaire
pSource[i] = pSource[iFrom];
pSource[iFrom] = iTemp;
} // End for
} // End if
}
附:
C++的詭異:
1。const 類型的值。如果取得地址,再強(qiáng)行修改地址指向的內(nèi)容,那么這個(gè)時(shí)候形成二義性。
2。你有沒有見過 class A; A a = A();這樣的聲明方式?存在的道理?
3。虛函數(shù)是按照函數(shù)名來加入override機(jī)制的,而不考慮函數(shù)參數(shù)的。
4。如果一個(gè)基類的虛函數(shù)是public的,但是子類卻覆蓋了一個(gè)一樣的虛函數(shù)實(shí)現(xiàn),但是改成了private,這個(gè)時(shí)候又有什么樣的二義性?
5。為什么要有 "->" 和 "." 這樣的兩種訪問對(duì)象成員的符號(hào)?引用的存在是否又能否決你的答案?
6。C++標(biāo)準(zhǔn)為什么制定了很多feature以及function,卻不制定implemention?導(dǎo)致了C++的靈活還是導(dǎo)致了缺乏平臺(tái)遷移性的C++的死穴?
BTW,也許是自己對(duì)C++的語言還沒有徹底覺悟,但是C++還是有太多的牛角尖可以鉆的,可是這些都是無關(guān)緊要的了。當(dāng)然我提的這一些也許可以算作是詭異,也許想來是想當(dāng)然的yes or no的。所以我不是針對(duì)語言本身的,相反我還是喜歡C++的,畢竟因?yàn)閷?duì)他的很多的迷惑讓我在不斷追求答案的同時(shí)得到很多。
posted on 2007-04-25 16:58
MicroYang 閱讀(1506)
評(píng)論(6) 編輯 收藏 引用