如何在向量C ++中查找下一个元素

时间:2016-04-05 22:40:25

标签: c++ vector

我在C ++程序中使用class Stack(): def __init__(self): self.items = [] def is_empty(self): return self.items == [] def push(self,items): return self.items.append(items) def pop(self): if self.is_empty() == True: raise IndexError("The stack is empty!") else: return self.items.pop() def peek(self): if self.is_empty() == True: raise IndexError("The stack is empty!") else: return self.items[len(self.items) - 1] def size(self): return len(self.items) ,我希望在循环浏览时找到vector中的下一个元素,类似于链接列表创建下一个元素的方式节点。我打算使用这个循环来检查vector中当前元素与下一个元素是否相同。

4 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

你可以使用这个循环:

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

简单

答案 2 :(得分:2)

您可以使用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

答案 3 :(得分:0)

如果将向量用作循环列表(即,将第一个元素视为最后一个元素的“下一个”),则可以对向量的长度使用取模运算符。

例如:

int getNext(std::vector<int> vect, size_t i) {
    return vect[ (i+1) % v.size() ];
}

如果您需要以“循环”方式选择下一个元素,尤其是在循环之外,则此解决方案很有用。