深入理解C 11之前言

2021-08-17 15:25:05 字數 671 閱讀 1463

c++11其實已經問世好久了,很多的編譯器已經支援了,而且這些編譯器已經被加入了我們常常使用的ide中。但是我還常常使用一些c98的標準。為什麼呢,習慣,還是不想去學習?都有之。那是什麼讓我開始想去學學c11,並想把它用在工作中呢?懶吧。

首先看看c11的整體設計目標:

使得c++成為更好的適用於系統開發及庫開發的語言。

使得c++成為更加易於教學的語言。

保證語言的穩定性。

從第一點能看出我們的開發將越來越簡單,至少不同的系統的支援估計要更加好一些,egthread。從第二點我們又知道了學起來估計比較簡單,而且我還是c98老手,who怕who。第三點就是為什麼我現在不懂c11還能找到工作的原因,我想我該忘了它。

最終要的是我看到了使用c11寫的**,相比c98的確要少很多的**量(搬磚搬多了,誰都會累)。據說依情況最多可以將**縮短30%~80%。omg,這個希望夢想成真。而且現在的西紅柿(我對va_x的愛稱)還tm自動彈出c11的語法,你說我不懂,我尷尬不?

最後簡單說一下支援的編譯器和ide吧。ibm xlc/c++編譯器10.1開始;gnu的gcc編譯器4.3開始,因特爾編譯器從10.1開始;而visual studio(vs)從2010開始。噢,蘋果的clang/llvm從2.8開始也支援了新特性。對了,這些都tm是c11出來之前就支援了。所以不要說環境了,為了少磊點**,c11標準學習現在起航了。 

深入理解C 11(九)

move語義 我們知道移動語義是通過右值引用來匹配臨時值的,那麼,普通的左值是否也能借助移動語義來優化效能呢,那該怎麼做呢?事實上c 11為了解決這個問題,提供了std move方法來將左值轉換為右值,從而方便應用移動語義。move是將物件的狀態或者所有權從乙個物件轉移到另乙個物件,只是轉移,沒有記...

深入理解C 11(十二)

改進物件池模式 物件池對於建立開銷比較大的物件來說很有意義,為了避免重複建立開銷比較大的物件,可以通過物件池來優化。物件池的思路比較簡單,事先建立好一批物件,放到乙個集合中,每當程式需要新的物件時,就從物件池中獲取,程式用完該物件後都會把該物件歸還給物件池。這樣會避免重複建立物件,提高程式效能。物件...

深入理解C 11(十五)

emplace back減少記憶體拷貝和移動 emplace back能就地通過引數構造物件,不需要拷貝或者移動記憶體,相比push back能更好地避免記憶體的拷貝與移動,使容器插入元素的效能得到進一步提公升。在大多數情況下應該優先使用emplace back來代替push back。所有的標準庫...