1.範圍for的語法
在c++98中如果要遍歷乙個陣列,可以按照以下方式進行:
void
testfor()
;for
(int i =
0; i <
sizeof
(array)
/sizeof
(array[0]
);++i)
array[i]*=
2;for(
int* p = array; p < array +
sizeof
(array)
/sizeof
(array[0]
);++p)
cout <<
*p << endl;
}
對於乙個有範圍的集合而言,由程式設計師來說明迴圈的範圍是多餘的,有時候還會容易犯錯誤。因此c++11中引入了基於範圍的for迴圈。for迴圈後的括號由冒號「 :」分為兩部分:第一部分是範圍內用於迭代的變數,第二部分則表示被迭代的範圍。與普通迴圈類似,可以用continue來結束本次迴圈,也可以用break來跳出整個迴圈
void
testfor()
;for
(auto
& e : array)
e *=2;
for(
auto e : array)
cout << e <<
" ";
}
2.範圍for的使用條件
for迴圈迭代的範圍必須是確定的
對於陣列而言,就是陣列中第乙個元素和最後乙個元素的範圍;對於類而言,應該提供begin和end的方法,begin和end就是for迴圈迭代的範圍。
void
testfor
(int array)
迭代的物件要實現++和==的操作。 基於範圍的for迴圈
在乙個範圍上執行for迴圈 用作對範圍中的各個值 如容器中的所有元素 進行操作的傳統for迴圈更加可讀的等價版本 屬性 可選 for 範圍宣告 範圍表示式 迴圈語句 上述語法產生的 等價於下列 range,begin和 end僅用域闡釋 對範圍表示式求值以確定要迭代的序列或範圍.依次對序列的每個元素...
基於範圍的迴圈
do.while 和 while 都不能進行基於範圍的迴圈,只能用for 語句。語法 for 元素名變數 廣義集合 元素名變數 可以是引用型別,以便直接修改集合元素的值,也可以是const型別,避免迴圈體修改元素的值 include include intmain 不能用 auto a std ar...
使用基於範圍的 for 迴圈迭代範圍
許多程式語言支援 for 迴圈的稱之為 for each 的變體,即針對集合中的元素重複一組語句。在 c 11 之前 c 沒有相應的核心語言支援。最接近的特性是來自標準庫中的被稱為 std for each 的通用演算法,它在範圍的所有元素上應用乙個函式。c 11 帶來了對 for each 的語言...