基於範圍的for迴圈

2021-10-07 12:38:29 字數 1000 閱讀 5098

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 的語言...