迴圈最常見的場景是對資料集合的每乙個元素進行某種操作。在c++11之前,大致是這樣的程式:
int a=
;int sum =0;
for(
int i =
0; i <
sizeof
(a)/
sizeof
(a[0])
;++i){
sum +
= a[i]
;}
或者是這樣:
vector<
int> v
;int sum =0;
for(
auto it = v.
begin()
; it != v.
end(
); it++
)
可以看出,雖然目的只是對資料的每個元素進行求和,但還是需要做如下幾件事:
但是還是比較麻煩。c++引入了範圍for語句來簡化這個過程:
int array;
int sum =0;
for(
int a : array)
vector<
int> vect
;int sum =0;
for(
int v: vect)
for(int v : vect)讀作「對於vect中的每乙個v」。應該說,程式簡練了不少。
是不是所有的資料集合都可以交給範圍for遍歷呢?答案是否定的
資料v被範圍for遍歷的條件是:該資料支援v.begin()/v.end()或者是begin(v)/end(v)並返回乙個迭代器。stl中的容器都滿足上面條件,對於內建型別的陣列來講c++編譯器提供了上訴介面的機制,因此也可以在範圍for中使用
範圍for語句
c 11 新標準引入了一種更簡單的for語句,這種語句可以遍歷容器或其他序列的所有元素。範圍for語句 range for statement 的語法形式是 for declaration expression statement expression表示的必須是乙個序列,比如用花括號括起來的初始值...
C C程式設計指南之基本語句
運算子的優先順序 一元運算子 的優先順序高於對應的二元運算子 規則 4 1 1 如果 行中的運算子比較多,用括號確定表示式的操作順序,避免使用預設的優先順序。復合表示式 如a b c 0 存在的理由1 書寫簡潔 2 可以提高編譯效率。規則 4 2 1 不要編寫太複雜的復合表示式。規則 4 2 2 不...
C C程式設計指南之基本語句
運算子的優先順序 一元運算子 的優先順序高於對應的二元運算子 規則 4 1 1 如果 行中的運算子比較多,用括號確定表示式的操作順序,避免使用預設的優先順序。復合表示式 如a b c 0 存在的理由1 書寫簡潔 2 可以提高編譯效率。規則 4 2 1 不要編寫太複雜的復合表示式。規則 4 2 2 不...