c 11的使用心得(一)

2021-07-07 03:13:00 字數 1143 閱讀 1567

c++11標準已經推行很多年了,然後在這幾年裡,由於所在的專案都沒有使用該標準, 因此久久未能接觸。近來,由於另外乙個專案需要趕進度,被領導臨時調動到該專案進行協助開發,因此也算是初次接觸了c++11標準。現在就我個人關於c++11的使用心得稍作一點簡單的總結。

1. c++11對於指標的空指標常量使用nullptr關鍵字,該關鍵字在使用時和null巨集等價,但略有不同。對於null巨集而言,在c++98的定義中,實際就是乙個整常數0,因此在c++98標準中,null和0可以互相轉化。但c++標準中,nullptr則不能轉化為整數0,整數0也不能轉化為nullptr。

2. c++11中可以使用auto關鍵字宣告變數,至於變數的真正型別則根據變數賦值時的右值來推導。該關鍵字的好處避免了在c++98中的過長的型別宣告,比如std::mapid_name_map; std::map::iterator it = id_name_map.begin(); 這種**可以直接被替換成 std::mapid_name_map; auto it = id_name_map.begin(); 從**的編寫上c++11更加的簡單方便,還不怕在上下宣告的時候造成型別不匹配的問題。

3. 對於迴圈,c++提供了兩種很便利的訪問for和foreach,for和foreach和其他的高階語言的遍歷使用方法類似。對於for(x:range)的宣告方式,x的作用域只侷限於for迴圈中,因此對於在迴圈結束後可能還使用到之前的遍歷變數的使用,還是和之前使用方法。對於foreach則按照foreach(begin, end, (*func))這種處理方式的呼叫。

4. 對於lambda表示式,很多人可能很納悶,lambda引入究竟有什麼用呢?c++中不是有函式指標嗎?對於此,我個人的理解就是lambda解決了物件的關聯性,並且從lambda的引入,減少了函式指標的很多引數。也不需要再專門為了乙個簡單的功能編寫乙個很複雜的函式指標定義。對於lambda中,有四種宣告:

(形參列表)->返回型別;//不引入任何引數,->返回型別可以不宣告

[=](形參列表)->返回型別;//當前函式內的變數均以值方式傳遞給lambda中,->返回型別可以不宣告

[&](形參列表)->返回型別;//當前函式內的變數均以引用方式傳遞給lambda中,->返回型別可以不宣告

[this](形參列表)->返回型別;//將當前的物件this指標傳遞給lambda中,->返回型別可以不宣告

C 使用心得

今天關注了下最新的c 標準,並試用了下std thread,lock guard等功能,還是不錯的。對於std thread要join detach,不然會有異常。另外當使用socket時網路函式bind應該使用 bind表明是全域性的命名空間 include include include inc...

ECharts使用心得(一)

上週專案組要臨時給客戶做乙個演示的原型,首頁設計的是乙個中國地圖,本來打算用谷歌的地圖,但是,做出來之後,整體的效果看起來太差了,最後就在網上搜相關的地圖呈現的控制項,然後就找到了這個echarts報表呈現元件,挺不錯的乙個元件,而且地圖資料都是離線的,真心很讚。但是,使用起來卻頗費了一番工夫。所以...

Django使用心得(一)

本篇主要講解一些基本的操作 安裝完django之後,在python安裝目錄下的scripts目錄中有個django admin.py的指令碼,可以用來新建django工程。django admin.py startproject testsite1新建了乙個名為testsite1的工程,非常簡單。t...