2017-08-23 4 views
-1

J'ai essayé de chercher des exemples dans ce tableau, mais je ne les ai trouvés qu'en utilisant le tableau intégré std :: array obj.Plage basée sur pour std :: array multidimensionnel

// array arr of size 5 
array< array<int, 10>, 10> arr = { 0 }; 

srand((unsigned)time(0)); 

// initialize elements 
for() 
{ 
    for() 
    { 
     item = rand() % 100 + 1; 
    } 
} 

exemple de base de l'initialisation tableau 2D de valeurs aléatoires obj. je ne sais pas quoi mettre entre le() de la pour les boucles

Répondre

1
#include <array> 
using namespace std; 

// array arr of size 5 
array< array<int, 10>, 10> arr; 

int main() { 
    // initialize elements 
    for (auto & outer_array : arr) 
    { 
     for(auto & inner_array : outer_array) 
     { 

     } 
    } 
} 

en direct: https://godbolt.org/g/6eLgBk

4

auto& est très utile ici. Eh bien, la première boucle range-for prendra des références à chaque tableau du tableau. la seconde prend des références à chaque élément du tableau le plus interne. Comme:

// initialize elements 
for (auto& inner : arr) 
{ 
    for(auto& item : inner) 
    { 
     item = rand() % 100 + 1; 
    } 
} 
2

au lieu d'utiliser gamme à base de boucles, vous pouvez même utiliser les fonctions

std::for_each(arr.begin(), arr.end(), [](array<int, 10> const& inner) { 
    auto generator = []() { return rand() % 100 + 1; }; 
    std::generate(inner.begin(), inner.end(), generator); 
} 
0
for(int i = 0; i < arr.size() ; i++) 
{ 
    for(int j = 0; j < arr[i].size() ; j++) 
    { 
     arr[i][j] = rand() % 100 + 1; 
    } 
} 
+2

Bien que cela fonctionne, il n'utilise pas réellement C++ basé sur la gamme 'for' ... – ShadowRanger