我想以相反的順序遍歷一個向量,並檢查是否連續出現數字1.我如何防止在檢查第一個(最後一個)時出界 )元素。 這是我寫到現在爲止的代碼。提前致謝。反向遍歷一個向量並獲取相鄰元素的值
vector<int> bits;
for (vector<int>::reverse_iterator i = bits.rbegin();i != bits.rend(); ++i) {
int ctr = 0;
auto be = bits.rbegin();
auto prev = std::next(be, ctr);
auto nx = std::next(be, ctr - 1);
if ((*nx) == 1 && (*be) == 1)
{
count_one++;
}
ctr++;
}
爲什麼你需要向後迭代?拋開錯誤,無論是向前還是向後迭代,所示示例都會給出相同的結果。 –
在循環中使用'std :: adjacent_find'。 – PaulMcKenzie
*並檢查連續存在* - 什麼是「檢查」應該包含?如果只是說某處有連續的'1',那麼就如我的評論所述,這是一個使用'std :: adjacent_find'的單行程序。 – PaulMcKenzie