Angenommen, ich habe drei Vektoren A, B und C vom gleichen Typ, und ich habe einen Iterator für den Vektor-Container, wie finde ich heraus, zu welchem Container gehört? DankeGibt es eine Möglichkeit, einen Iterator seinem Container zuzuordnen?
Antwort
Sie können nicht. Ihr Design ist kaputt, überdenken Sie es.
Der ganze Sinn von Iteratoren besteht darin, weg von Containern (und anderen Datensammlungen) zu abstrahieren, Sie können nicht einfach die Abstraktion umkehren.
Ihre Frage Strictly beantworten, können Sie wie folgt überprüfen:
vector<T>::iterator it = ...;
if (it >= A.begin() && it < A.end()) // it is in vector A
if (it >= B.begin() && it < B.end()) // or in vector B
if (it >= C.begin() && it < C.end()) // and here in vector C
Dies funktioniert nur, weil vector
einen Direktzugriffs Iterator verwendet, und wird für viele andere Behälter wie map
und list
nicht halten. Wie @Baum mit Augen sagt, solltest du dies neu gestalten. Vielleicht sollten Sie einen Verweis auf den gewünschten Vektor zusammen mit dem Iterator übergeben?
ein Problem ist, wenn Sie einen Vektor ändern, können Sie ungültige Iterator halten – SHR
Das unmittelbare Problem ist, dass der Vergleich von Iteratoren aus verschiedenen Containern Undefined Behavior. Das ist also nicht wirklich legal. (Wird wahrscheinlich arbeiten, aber nie versucht.) –
Fwiw. Der Debug-Modus von libstdC++ meldet sich. (Zu Recht.) Http://coliru.stacked-crooked.com/a/36d6c1107be7b54f –
- 1. Gibt es eine Möglichkeit, unveränderlichen Entitäten im Entitätsrahmen zuzuordnen?
- 2. Gibt es einen beschreibbaren Iterator in Java?
- 3. Gibt es eine einfache Möglichkeit, einen Iterator in eine Liste in Java zu kopieren?
- 4. Gibt es eine Möglichkeit, den nicht vertrauenswürdigen Container-Scheduler einzuschränken?
- 5. Gibt es einen sortierten Container in AWL
- 6. Gibt es eine Möglichkeit, Container-Namen in Docker-Statistiken anzuzeigen?
- 7. WENIGER CSS-Präprozessor: Gibt es eine Möglichkeit, einer RGB- und RGBBA-Definition eine einzelne Farbe zuzuordnen?
- 8. Gibt es eine semi-standardisierte Möglichkeit, eine URL einem IRC-Benutzer zuzuordnen?
- 9. Gibt es eine Möglichkeit, einen Ertrag erstellt Iterator Weiter zum nächsten Element bei einer Ausnahme?
- 10. Gibt es eine Möglichkeit, eine Aufzählung einer anderen Enumeration in C# .NET 3.5 zuzuordnen?
- 11. Gibt es eine Möglichkeit, ein Tag im Flex zu Komponenten in mehreren Verzeichnissen zuzuordnen?
- 12. Gibt es eine Möglichkeit, einen Wert vor- und abzuleiten?
- 13. Gibt es eine Möglichkeit, einen Radiobutton Vorlage, so dass es
- 14. Gibt es eine Möglichkeit, die Terminalausgabe einer Variablen mit Python zuzuordnen?
- 15. Gibt es eine Alternative zu "Float" für einen Flex-Container?
- 16. Gibt es eine Möglichkeit, einen Befehl in einem Docker-Container zu stoppen
- 17. Gibt es eine Möglichkeit in der data.table IDs nach Gruppe basierend auf einem Bezeichner zuzuordnen?
- 18. Gibt es eine C# -Datenstruktur, um Schlüssel mehreren Werten zuzuordnen?
- 19. Schnellste Möglichkeit, einen Iterator in eine Liste zu konvertieren
- 20. Gibt es eine praktische Möglichkeit, das größte Element im Container mit STL zu finden?
- 21. Gibt es eine Möglichkeit, dieselbe Hibernate-Entität mehreren Tabellen in verschiedenen Schemata zuzuordnen
- 22. Gibt es eine Möglichkeit, alle leeren Felder in CSV-Datei als NULL zuzuordnen mit Microsoft.VisualBasic.FileIO TextFieldParser
- 23. Gibt es eine bessere Möglichkeit, einer Eigenschaft den größten von zwei Werten zuzuordnen?
- 24. Gibt es eine einfache Möglichkeit, DBIx :: Class-Ergebnisse meinen benutzerdefinierten Moose-Klassen zuzuordnen?
- 25. Virtualisierung: Gibt es eine Möglichkeit, generierte Container auch aus verschachtelten ItemsControl zu recyceln?
- 26. Gibt es eine Möglichkeit, den Code eines Objekts anstelle von seinem Wert mit R zu drucken?
- 27. Pass Iterator anstelle von Container
- 28. Gibt es einen Standard zyklischer Iterator in C++
- 29. Warum gibt es eine Methode iterator() in java.util.Collection
- 30. Gibt es eine Möglichkeit, einen Block optional in Django Vorlage
Ich verstehe (natürlich nach dem Testen in einem Code) das war eine schlechte Design-Wahl. Was mich neugierig machte, war, dass der Debugger in der Lage war, Iteratoren aus verschiedenen Vektorcontainern zu erkennen, die verglichen wurden, und ließ mich glauben, dass es eine Möglichkeit gibt, den Iterator dem Container zuzuordnen. Ich wollte nur wissen, ob jemand anderes solche Techniken kennt. Danke! – user6386155
@ user6386155 Eine Implementierung/Debugger/wir. Es ist natürlich erlaubt zu verfolgen, zu welchem Bereich ein Iterator gehört, aber im Allgemeinen ist es eine Einbahnstraße. –