本文轉自:http://liuyue.asia/2010/03/18/cpp0x-has-become-cpp1x/程序員
一個熱愛 C++ 的程序員應該知道 C++0x 爲什麼物吧。C++ 標準制定委員會曾在 1998 年和 2003 年制定和更新了 C++ 的標準,使 C++ 的編寫更規範,功能也獲得了提高。可是每次標準的制定後,委員會都會想着下一代的標準,C++ 的下一代就是 C++0x.正則表達式
可是現在,C++0x 已然被拖成 C++1x. 這是很明顯的,如今已是 2010 了。最新的消息是,C++1x 會在 2010年底最終制定完成,但因爲委員會還有一些問題要解決,該標準預計能在 2011 年成爲正式標準,通俗地說就是成爲 C++11, 說玄乎些也就是 ISO/IEC 14882:2011.編程
我想你們最感興趣的是新標準裏有些什麼。因爲這些標準大多數都是外國人定的,有關它的中文信息少之又少,國內對標準的制定也不是頗有興趣,網上見到的文章說的都是 200x 年的預測了,這些預測現在看來也沒有多少應驗的。目前我忙於準備高考,高考完後我想寫一本有關新標準的書。編碼
我認爲,採用了新標準的 C++ 在運行效率上會相似 C, 在編寫效率上將直逼 Java. 你能夠和我爭辯這個問題,我只想告訴你,C++ 的爹地說,爭議最多的語言正是最流行的語言。我認爲在提升編碼效率時犧牲點運行效率是值得的。事實上,C++ 的機制也容許你不使用新特性,若是你是個保守的程序員,你能夠把代碼寫得和 C 同樣而徹底兼容於新標準。再說,新特性也是一些很成熟、甚至已經成爲某種標準的東西,好比 RegEx, 因此我很是支持新標準的出臺。讓咱們對 C++11 充滿期待吧。spa
Boost 是 C++ 的準標準庫。此話怎講呢?首先這是由 C++ 標準委員會開發維護的。而後,這必定程度上體現了 C++ 程序員的民意,不少來不及加入新標準的你們又期待的特性就被那些 geeks 加入了 Boost. 咱們能夠先睹爲快:http://boost.org/ .code
RegEx 就是正則表達式。傳說 C++1x 會把正則表達式添加到標準庫中。正則表達式是現在不少高級語言都支持的東西,好比 PHP, Java, C# 等,而且應用很是的普遍。ci
正則表達式是用來幹嗎的呢?它是用來匹配、查找或替換字符串的。什麼是匹配?匹配就是判斷一個字符串是否符合某種要求。什麼是查找?查找就是找到字符串中的某個符合要求的子串。什麼是替換?替換就是將字符串中的某個子串替換成另一個子串。你可能會說:「那 Word 的查找和替換是否是可以作到這一點呢?」 Word 固然能夠作到查找和替換,可是它只能查找固定的子串,只能替換成固定的子串:「能夠幫我把豬換成狗嗎?」然而正則表達式可以迅速知足你這樣的要求:「能夠幫我把中括號擴起來的內容當成電子郵件的用戶名,而後把中括號去掉再加上 @liuyue.asia 嗎?」開發
傳言說 C++ 擬在 C++1x 中升級泛型的支持。泛型是什麼呢?其實泛型在 C++03 中稱爲模板,沒錯,就是 template<typename T> 之類的東西。字符串
因爲 C++ 標準號稱向下兼容,向下兼容的意思是,之前是對的東西,如今還會是對的;可是之前是錯的東西,如今可能支持了。因此,C++1x 會在這方面顯得更加隨便。get
說到這裏,可能有些人已經激動不已了。個人編程是從 Visual Basic 起步的,當我得知這個特性時,我想:「難道 C++ 真的要變成 Visual Basic 了嗎?是否是 C++ 與 Visual Basic 的區別,僅僅是 Option Explicit 了呢?」
固然 C++ 不可能變成 Visual Basic. 不過可變數據類型的確算是一個革命性的特性。確定會有人認爲,這會增大運行開銷,可是請想想,你徹底可使用 C++03 的代碼,在 C++1x 的標準下,編譯出與原來同樣效率的程序。
雞凍的同窗們,請看代碼。
int my_array[5] = {1, 2, 3, 4, 5}; for(int & x : my_array) { x *= 2; }
這就是集合內的 for 循環,不久將被 C++1x 支持。
其實 C++ 還有不少特性有待更新,這裏只是列舉出了傳言中的一點點。國內關注標準的人真的很少,我但願國人可以多多關注這些,甚至參與到國際標準的制定中去。
最後說明一點,本文內容多爲傳言,不保證真實性。可是能夠肯定的是,C++1x 將在不久的未來發布,而且成爲新的 C++ 標準。