glaube, ich habe 2 (oder mehrere) Behälter I gleichzeitig durch iterieren wollen - beispielsweise das Skalarprodukt zweier Vektoren zu berechnen:Bereich für Schleife mit mehreren Behältern
std::vector<double> vector1;
std::vector<double> vector2; // identical size to vector1
Was die C + bevorzugt ist +11 Möglichkeit, eine Range-for-Schleife über beide (oder alle) Container gleichzeitig zu spezifizieren? Beinhaltet es die Auswahl eines Containers/Iterators, um Short-Hand (d. H. for (auto i : c)
) in eine Range-for-Schleife zu schreiben, während alle anderen Container/Iteratoren lang- hand gehandhabt werden müssen? Gibt es einen Grund die Syntax in Zukunft nicht kurz Hand für beide/alle Container erweitert werden könnten, um Unterstützung, wie unten gezeigt ... die wirklich lesbar scheint:
double dotProduct(0.0);
for (auto const & value1 : vector1, auto const & value2 : vector2) // illegal!
{
dotProduct += value1*value2;
}
Mögliche Duplikate von [Was ist der beste Weg, um über zwei oder mehr Container gleichzeitig zu iterieren] (http://stackoverflow.com/questions/12552277/whats-the-best-way-to-iterate-over-two-or -mehr-containers-simultan) – ildjarn
Auf der Oberfläche, ja ... aber sind irgendwelche der Antworten dort (a) lesbar und (b) allgemein und (c) basierend auf Standard-C++? Nicht, dass ich es gesehen hätte. Von den frühen Tagen von C an könnte man schreiben "für (i = 0, j = 0, k = 0; i
omatai
Werfen Sie einen Blick auf [Miterator] (https://github.com/ClaasBontus/iterator). Es wird alles einfacher werden mit Bereichen, die nicht vor C++ 20 sein werden. –