Heim >Backend-Entwicklung >C++ >Wie kann ich die Zip-Funktion von Python mit C 11 und höher simulieren?
Zippen von Sequenzen in C 11
Mit der Einführung bereichsbasierter For-Schleifen in C 11 ist der Code prägnanter und lesbarer geworden . Es stellt sich jedoch die Frage, ob damit die Zip-Funktion von Python simuliert werden kann, die mehrere Sammlungen gleichzeitig durchläuft.
Zip-Funktionalität steigern
Obwohl die bereichsbasierte Funktion für -loop unterstützt simultane Schleifen nicht direkt, die Boost-Bibliothek stellt einen zip_iterator bereit. Es ermöglicht Benutzern, einen Bereich zu definieren, der parallel über Elemente aus mehreren Containern iteriert.
Verwendung von Boost Zip_iterator
Der folgende Codeausschnitt zeigt, wie Boost verwendet wird:: zip_iterator:
#include <boost/iterator/zip_iterator.hpp> #include <vector> int main() { std::vector<int> a {1, 2, 3}; std::vector<std::string> b {"one", "two", "three"}; for (auto tup : boost::make_zip_iterator(boost::make_tuple(a.begin(), b.begin()))) { int x; std::string y; boost::tie(x, y) = tup; std::cout << x << " " << y << std::endl; } }
Dieser Code wird Ausgabe:
1 one 2 two 3 three
Warnung:
Es ist wichtig zu beachten, dass die Länge aller Eingabecontainer gleich sein muss. Andernfalls kann es zu undefiniertem Verhalten kommen.
Alternativen
Neben Boost gibt es alternative Bibliotheken, die Zip-Funktionalität für C bieten. Beispielsweise stellt die Ranges-Bibliothek eine zip_view bereit, die mit bereichsbasierten For-Schleifen verwendet werden kann:
#include <ranges> int main() { std::vector<int> a {1, 2, 3}; std::vector<std::string> b {"one", "two", "three"}; for (auto [x, y] : std::ranges::zip_view(a, b)) { std::cout << x << " " << y << std::endl; } }
Ob Boost oder andere Bibliotheken verwendet werden sollen, hängt von den spezifischen Anforderungen und der Projekteinrichtung ab.
Das obige ist der detaillierte Inhalt vonWie kann ich die Zip-Funktion von Python mit C 11 und höher simulieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!