Эта ошибка:
E0158 expression must be an lvalue or a function designator
Error C2102 '&' requires l-value
означает, что вы пытаетесь получить временный адрес (в данном случае значение r), который является недопустимым.Использование &
для какого-либо объекта означает получение его адреса - поэтому он должен где-то существовать в памяти.l-значения - это объекты, которые могут храниться в регистре процессора, поэтому нет смысла брать его адрес.
В вашем случае вы пытаетесь сравнивать адреса вместо значений, поэтому вместо:
&(a.at(max / 2)) == &(b.at(max / 2))
^ ^
вам следует:
(a.at(max / 2)) == (b.at(max / 2))
После исправления вы, вероятно, найдете множество других ошибок, но я полагаю, что вы сами справитесь с ними.