2016-04-05 6 views
-2

Я использую vector в программе на C++, и я хотел бы найти следующий элемент внутри vector при прохождении через него, подобно тому, как он будет работать со связанным списком, создающим следующий узел. Я планирую использовать этот цикл, чтобы проверить текущий элемент в vector на следующий элемент, чтобы узнать, совпадают ли они.Как найти следующий элемент в векторе C++

+1

Какой у вас код? – Tas

ответ

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

Вы можете просто использовать этот цикл:

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

Простой

+0

Используя этот цикл for, я пытаюсь реализовать оператор if, который будет проверять каждый раз, если i + 1 не имеет ничего другого, чтобы проверить. У меня возникают ошибки. На данный момент у меня есть проверка на то, что (v [i + 1]! = NULL), но он бросает ошибки, которые не соответствуют оператору! =. Это что-то, что можно проверить с помощью этого цикла? – Ddoi

+0

вам не нужно делать эту проверку, она избыточна. Оператор if полностью безопасен, он никогда не выйдет за пределы контейнера, поскольку счетчик только поднимается до v.size() - 1. –

1

Вы можете использовать std::next.

// 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 
Смежные вопросы