Finde den Index eines Elements im Vektor

8

Ich muss einen Index eines Elements in einem Vektor von Strings finden, das ist, was ich bis jetzt bekommen habe:

%Vor%

es erzeugt einen Fehler

%Vor%

Ich nehme an, das liegt daran, dass enumerate() ein Tupel von <usize, _> zurückgibt (korrigiere mich, wenn ich falsch liege), aber wie konvertiere ich usize in i32 hier? Auch wenn es einen besseren Ansatz gibt, bin ich offen für Vorschläge.

    
Caballero 31.05.2015, 13:54
quelle

2 Antworten

9

Nein, das liegt daran, dass die Indizes usize , nicht i32 sind. Tatsächlich ist i32 für diesen Zweck völlig ungeeignet; Es ist vielleicht nicht groß genug, und es gibt keinen Grund für die Unterzeichnung. Verwenden Sie einfach usize .

Einige weitere Hinweise: Der Aufruf von to_string() ist nicht kostenlos und Sie brauchen ihn nicht für den Vergleich. Sie können String-Slices einfach gut vergleichen!

Auch wenn Sie wirklich ein usize in ein i32 umwandeln möchten, können Sie das mit einem Cast tun: x as i32 , obwohl dies nicht einen Fehler bei Über- oder Unterlauf erzeugen ( dh kann das Ergebnis negativ sein).

Alles, was gesagt wurde, wie in Mathieu Davids Antwort erwähnt, ist ein position Methode für Iteratoren, die das tun, was Sie wollen.

    
DK. 31.05.2015, 14:08
quelle
17

Ich denke, Sie sollten sich die Methode position ansehen stattdessen.

%Vor%

Sie können hier testen .

Beachten Sie, dass dies für jeden Iterator funktioniert, sodass er für Vektoren, Arrays und Slices verwendet werden kann, die alle Iteratoren erzeugen.

    
Mathieu David 31.05.2015 14:09
quelle

Tags und Links