2016-04-05 13 views
-2

Ich verwende ein vector in einem C++ Programm, und ich möchte finden das nächste Element in den vector zu finden, wenn durch sie Looping, ähnlich wie es mit einer verknüpften Liste erstellen eine funktionieren würde nächster Knoten. Ich plane, diese Schleife zu verwenden, um das aktuelle Element in einem vector gegen das nächste Element zu überprüfen, um zu sehen, ob sie gleich sind.Wie nächstes Element in einem Vektor C++

+1

Welchen Code haben Sie? – Tas

Antwort

3
for (auto i = v.begin(); i < v.end()-1; ++i) { 
    if (i[0] == i[1]) { 
     // do stuff 
    } 
} 
1

Sie können nur diese Schleife verwenden:

for (size_t i = 0; i < v.size()-1; ++i) { 
    if (v[i] == v[i+1] { // if current element equals next element 
    ... // do something 
    } 
} 

Einfache

+0

Mit dieser for-Schleife versuche ich eine if-Anweisung zu implementieren, die jedes Mal prüft, ob das i + 1 nichts anderes zu überprüfen hat. Ich habe Fehler dabei. Im Moment habe ich eine Überprüfung für if (v [i + 1]! = NULL), aber es wirft Fehler, dass es keine Übereinstimmung für den Operator! = Gibt. Ist das möglich, um es mit dieser Schleife zu überprüfen? – Ddoi

+0

Sie müssen diese Überprüfung nicht tun, es ist redundant. Die if-Anweisung ist vollkommen sicher, sie wird niemals außerhalb der Grenzen des Containers liegen, da der Zähler nur bis v.size() - 1 hochgeht. –

1

Sie std::next verwenden können.

// Example copied from page linked to. 
#include <iostream> 
#include <iterator> 
#include <vector> 

int main() 
{ 
    std::vector<int> v{ 3, 1, 4 }; 
    auto it = v.begin(); 
    auto nx = std::next(it, 2); 
    std::cout << *it << ' ' << *nx << '\n'; 
} 
// Output: 
// 3 4 
Verwandte Themen