2017-07-30 80 views
-6

我正在尋找的memset()用於C++,我發現了一些這樣的事代碼:在C擴展for循環++

#include <iostream> 
#include <cstring> 

int main() 
{ 
    int a[20]; 
    std::memset(a, 0, sizeof a); 
    for (int ai : a) std::cout << ai; 
} 

我用於循環擴展的Java編寫,但從來沒有在C++。這段代碼運行良好。我想知道循環如何工作?以及如何在任何C++代碼中實現。

+5

該回路循環。 – DimChtz

+2

它們被稱爲[基於範圍的循環](http://en.cppreference.com/w/cpp/language/range-for),並且自C++ 11起可用。 – Ron

+0

不理解。請你詳細說明或給出一個鏈接來研究這個? –

回答

0

for (int ai : a) std::cout << ai; 

用於陣列 - int a[20];它可以與

for (int i = 0; i < sizeof(a)/sizeof(a[0]); i++) 
     std::cout << a[i]; 

for (int *ai = a; ai < a + (sizeof(a)/sizeof(*a)); ai++) 
     std::cout << *ai; 

但與其他收集,例如工作被取代vector迭代將被要求:

std::vector<int> v(20); 
// for (auto i : v) std::cout << i; 
for (std::vector<int>::iterator vi = v.begin(); vi != v.end(); vi++) 
    std::cout << *vi;