在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就是輔助...