2017-12-15 5 views
0

Ich bin ein 2D-std :: Array erstellen, und will das 2D-std :: Array Datensatz für Datensatz (nicht von Indizes)Iterate Datensätze in std :: array

std::array<std::array<int, 2>, 6> m_setSockarr; 
    m_setSockarr = {{{0,1},{1,2},{2,3},{4,5}, 
         {5,6},{6,7}}}; 
    for(auto i=m_setSockarr.begin();i !=m_setSockarr.end();i++) 
    { 
      //code here to print record wise. 
    } 

Ich mag iterieren Werte drucken in Bezug auf die Aufzeichnung, nicht indexweise (ohne eine andere Schleife zu verwenden und schließlich m_setScokarr [i] [j] zu drucken).

In std :: Map wir it- verwenden> erstes und it-> zweiten Datensatz für Datensatz zu drucken (Karte ist assoziativer Container)

Versuchte Druck auf verschiedene Weise, wie ein neuer Indexinkrement usw. Aber kein Fortschritt.

wollte ich die Ausgabe wie mit Iterator von std :: Array in einer for-Schleife

0,1 
1,2 
2,3 
4,5 
5,6 
6,7 

wissen möchten, wenn wir std :: array (Sequenz-Container) drucken Datensatz weise, ähnlich wir nutzen konnten Verwenden Sie für std :: map.

+0

anzeigen gewünschte Ausgabe. Es ist nicht klar, was Sie mit "Rekordweise" meinen. Aber Sie brauchen wahrscheinlich nur zwei bereichsbasierte "for" -Schleifen oder zwei "for" -Schleifen mit Iteratoren oder Indizes. _ "Versucht, das Drucken auf verschiedene Arten, wie ein neues Index-Inkrement, etc .. aber kein Fortschritt." _ So zeigen, was nicht funktioniert ?? Es gibt keinen Grund, dass die Leute es dir wieder vorschlagen, wenn es nicht funktioniert. –

Antwort

1

In C++ 11:

for (const auto& record : m_setSockarr) 
{ 
    std::cout << record[0] << ", " << record[1] << '\n'; 
} 

In C++ 17:

for (const auto& [k, v] : m_setSockarr) 
{ 
    std::cout << k << ", " << v << '\n'; 
}