Ich suche nach einem Element in einem C ++ - Vektor, und wenn ich es finde, möchte ich den Index des Elements in einer numerischen Form (Integer, Float) finden.
Mein naive Versuch ist das:
%Vor%Dieser Code gibt einen Fehler aus. Können Sie mir sagen, wie ich den Iterator in den int konvertieren kann (wenn möglich), oder können Sie mir sagen, wie ich den Index des Elements auf andere Weise finden kann? Danke.
Sie müssen die Standardfunktion std::distance
Versuchen Sie immer, std::distance
auch mit Direktzugriffs-Iteratoren zu verwenden. Diese Funktion ist in den neuen und alten C ++ - Standards verfügbar.
Wenn Sie den Index des gefundenen Elements haben wollen, dann ist das der Abstand vom Anfang der Sequenz:
%Vor%oder, seit C ++ 11,
%Vor%, das mit jedem Vorwärts-Iterator-Typ arbeitet, nicht nur mit Random-Access-Typen wie denen eines Vektors.
Sie können den Iterator einfach so dereferenzieren
%Vor%Allerdings solltest du zuerst sehen, ob du tatsächlich etwas gefunden hast
%Vor%Um den Index zu finden, in dem die Übereinstimmung gefunden wurde, können Sie den gefundenen Zeiger vom Anfang des Vektors subtrahieren.
%Vor% Außerdem haben Sie hoffentlich in Ihrem tatsächlichen Code x
definiert, wie in dem Ausschnitt, den Sie gezeigt haben, x
ist nicht initialisiert, was zu einem undefinierten Verhalten führt.