我在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
中当前元素与下一个元素是否相同。
答案 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() ];
}
如果您需要以“循环”方式选择下一个元素,尤其是在循环之外,则此解决方案很有用。