CPP11新特性 基於範圍的for迴圈

2021-10-19 23:25:18 字數 1088 閱讀 3098

在c++98中如果要遍歷乙個陣列,可以按照以下方式進行

void

testfor()

;for

(int i =

0, i <

sizeof

(array)

/sizeof

(array[0]

);++i)

array[i]+=

2;for(

int* p =

0, p < array +

sizeof

(array)

/sizeof

(array[0]

);++p)

cout <<

*p << endl;

}

對於乙個有範圍的集合而言,由程式設計師來說明虛幻的範圍是多餘的,有時候還會容易犯錯誤。因此c++11中引入了基於範圍的for迴圈,for迴圈後的括號由冒號「 : 」分為兩部分:第一部分是範圍內用於迭代的變數,第二部分則表示被迭代的範圍。

void

testfor()

;for

(auto

& e : array)

e *=2

;for

(auto e : array)

cout << e <<

" ";

return0;

}

注意:與普通迴圈類似,可以用continue來結束本次迴圈,也可以用break來跳出整個迴圈。

範圍for的使用條件

1.for迴圈迭代的範圍必須是確定的

對於陣列而言,就是陣列中第乙個元素和最後乙個元素的範圍,對於類而言,應該提供beginh和end的方法,begin和end就是for迴圈迭代的範圍。

注意:以下**就有問題,因為for的範圍不確定

void

testfor

(int array)

2.迭代的物件要實現++和==的操作。

CPP11新特性 auto關鍵字

在早期c c 中auto的含義是 使用auto修飾的變數,是具有自動儲存器的區域性變數,但遺憾的是一直沒有人去使用它。c 11中,標準委員會賦予了auto全新的含義 auto不再是乙個儲存型別指示符,而是作為乙個新的型別指示符來指示編譯器,auto宣告的變數必須由編譯器在編譯時期推導而得。int t...

CPP11新特性 指標空值nullptr

在良好的c c 程式設計習慣中,宣告乙個變數時最好給該變數乙個合適的初始值,否則可能會出現不可預料的錯誤,比如未初始化的指標。如果乙個指標沒有合法的指向,我們基本就是按照如下方式對其進行初始化 void testptr null實際是乙個巨集,在傳統的c標頭檔案 stdef.h 中,可以看到如下 i...

c 11的新特性

1 型別說明符auto 2.decltype提取型別 int a 0 decltype a b b 10 cout b endl 3.基於範圍的for迴圈 4.虛函式的override和final指示符 final修飾類 類無法被繼承 final修飾虛函式 虛函式不能被重寫 override就是輔助...