Можно ли выполнить этот тип сравнения с циклом foreach?
Краткий ответ: Нет.
Длинный ответ:
Ближайшее, что вы можете получить:
for(int& x : s){
int* p1 = &x;
int* p2 = p1 + 1;
if ( *p1 == *p2 ) { ... }
}
Однако, когда x
соответствует последнему элементу массива, p2
указывает на элемент за пределамипоследний элемент массива.Разыменование p2
в этой точке является причиной неопределенного поведения.
Будет лучше придерживаться первого метода после того, как вы исправите ошибки компилятора и логические ошибки.
int s[] = {1,2,3,3,3,4,5};
int size = sizeof(s)/sizeof(s[0]);
for(int i = 0 ; i < size - 1; i++){
if(s[i] == s[i+1]){
//instructions
}
}