Wie vektor Iterator in C ++ in int konvertieren

7

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.

    
jason 18.11.2014, 13:38
quelle

3 Antworten

18

Sie müssen die Standardfunktion std::distance

verwenden %Vor%

Versuchen Sie immer, std::distance auch mit Direktzugriffs-Iteratoren zu verwenden. Diese Funktion ist in den neuen und alten C ++ - Standards verfügbar.

    
Vlad from Moscow 18.11.2014, 13:43
quelle
6

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.

    
Mike Seymour 18.11.2014 13:44
quelle
2

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.

    
CoryKramer 18.11.2014 13:39
quelle

Tags und Links