Что значит такое выражение?
Откройте для себя C++11. Это новый стандарт языка, в котором улучшен синтаксис.
for (auto val : x) - это цикл по коллекции x, в переменную x будет копироваться каждый элемент коллекции.
Цикл эквивалентен такому: 
for (auto val = x.begin(); val != x.end(); val++) 
т.е. цикл с использованием итераторов
auto - автоматический подбор типа переменной.  Не рекомендую злоупотреблять ею.
Не обязательно.
Фича из C++11;