c++11 新標準引入了一種更簡單的for語句,這種語句可以遍歷容器或其他序列的所有元素。範圍for語句(range for statement)的語法形式是:
for(declaration : expression)
statement
expression表示的必須是乙個序列,比如用花括號括起來的初始值列表、陣列或者vector或string等型別的物件,這些型別的共同特點是擁有能返回迭代器的begin和end成員。
declaration定義乙個變數,序列中的每個元素都得能轉換成該變數的型別。確保型別相容最簡單的辦法是使用auto型別說明符,這個關鍵字可以令編譯器幫助我們指定合適的型別。如果需要對序列中的元素執行寫操作,迴圈變數必須宣告成引用型別。
例:把vector物件中的每個元素都翻倍:
vector v =;//範圍變數必須是引用型別,這樣才能對元素執行寫操作
for(auto &r:v)
r *=2; //
將v中每個元素的值翻倍
for語句頭宣告了迴圈控制變數r,並把它和v關聯在一起,我們使用關鍵字auto令編譯器為r指定正確的型別。由於準備修改v的元素的值,因此將r宣告為引用型別。此時,在迴圈體內給r賦值,即改變了r所繫結的元素的值。
for(auto beg=v.begin() , end=v.end() ; beg!=end; ++beg)
注意:不能通過範圍for語句增加vector物件(或者其它容器)的元素,因為在範圍for語句中,預存了end()的值。一旦在序列中新增(刪除)元素,end函式的值就可能變得無效。
C 範圍for語句
在c 11中間,引入了範圍for語句,它的作用就是簡化遍歷給定序列的操作。語法形式如下 for declaration expression statement declaration 定義的變數 expression 要遍歷的物件 statement 語句 舉例 string s string 一...
C primer 六 範圍for語句
c 11新標準引入了一種更簡單的for語句,這種語句可以遍歷容器或其他序列的所有元素。範圍for語句 range for statement 的語法形式是 for declaration expression statement 表示的必須是乙個序列,比如用花括號括起來的初始值列表 陣列或者vect...
C 之範圍for語句
c 11新標準引入了一種更加簡單的for語句,這種語句可以遍歷容器或其他序列的所有元素。語法形式如下 for declaration expression statement declaration定義乙個變數,expression表示的必須是乙個序列 陣列 vector 或string等型別物件 ...