Zum Inhalt springen

Position in Vector


Technician

Empfohlene Beiträge

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);

Link zu diesem Kommentar
Auf anderen Seiten teilen

@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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...