Technician Geschrieben 13. März 2003 Geschrieben 13. März 2003 Hallo, wie kann ich feststellen, auf die wievielte Positon im Vector der Iterator gerade zeigt? Technician Zitieren
Wasi Geschrieben 13. März 2003 Geschrieben 13. März 2003 So: /* kleines Testarray */ long lArray[12] = {0,1,2,3,4,5,6,7,8,9,10,11}; /* Pointer zeigt aufs fünte!! Element (zero-based counting)*/ long* plPointer = &lArray[4]; /* Einfache Addresssubtraktion (vorher könnte man noch testen welcher Werte größer, gültig... ist) */ int iPos = (plPointer - lArray); /* Ausgabe der Ergebnisse */ printf("Array starts at %x, pointer is at %x\n", lArray, plPointer); printf("Pointer points to %dth element of array\n", iPos); Zitieren
Klotzkopp Geschrieben 13. März 2003 Geschrieben 13. März 2003 @Wasi: Ich glaube, es geht um std::vector und std::vector::iterator, nicht um Arrays @Technician: Ich glaube, dir bleibt nichts übrig, als mit einem weiteren Iterator den vector durchzugehen, und auf Gleichheit mit dem anderen Iterator zu prüfen. Was auf den meisten Plattformen funktionieren sollte, aber nicht standardkonform ist: Vom gesuchten Iterator begin() abziehen. Das funktioniert dann, wenn der Vector als Array implementiert ist. Das ist zwar meistens der Fall, ist aber AFAIK nicht im Standard festgeschrieben. Mit vector<bool> wird es aber mit hoher Wahrscheinlichkeit nicht gehen. Zitieren
Technician Geschrieben 14. März 2003 Autor Geschrieben 14. März 2003 Originally posted by Klotzkopp @Wasi: Ich glaube, es geht um std::vector und std::vector::iterator, nicht um Arrays genau Originally posted by Klotzkopp Was auf den meisten Plattformen funktionieren sollte, aber nicht standardkonform ist: Vom gesuchten Iterator begin() abziehen. Das funktioniert dann, wenn der Vector als Array implementiert ist. Das ist zwar meistens der Fall, ist aber AFAIK nicht im Standard festgeschrieben. ja, das habe ich jetzt auch gemacht: ((MyIt - MyVect.begin())+1) Was mich nur gewundert hat: warum gibt es dafür keine eingebaute Methode? Bestimmen, auf welche Position im Vector der Iterator gerade zeigt, ist doch etwas, dass man häufig benötigt! Originally posted by Klotzkopp Mit vector<bool> wird es aber mit hoher Wahrscheinlichkeit nicht gehen. In meinem Fall handelt es sich um vector<int> Wie kommst du darauf, dass es mit vector<bool> höchstwahrscheinlich nicht funktionieren wird? *ist-mir-nämlich-überhaupt-nicht-klar* :confused: Grüße, Technician Zitieren
Klotzkopp Geschrieben 14. März 2003 Geschrieben 14. März 2003 Originally posted by Technician Wie kommst du darauf, dass es mit vector<bool> höchstwahrscheinlich nicht funktionieren wird? *ist-mir-nämlich-überhaupt-nicht-klar* :confused:vector<bool> ist in allen mir bekannten Implementierungen eine template-Spezialisierung, die die Elemente nicht als bool-Array, sondern als Bitfeld speichert. Aber inzwischen denke ich, dass es doch gehen müsste. Es kommt auch nicht darauf an, wie die vector-Klasse implementiert ist. Solange es ein Random-Access-Iterator ist, sollte das mit dem begin() funktionieren. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.