Функция
swap() делает размен состояния между двумя контейнерами.
В этой строке у тебя сперва создается вектор из N элементов равных -1, а потом его состояние разменивается с состоянием
cache. При размене не происходит дополнительных выделений памяти, состояния векторов в буквальном смысле меняются местами.
Далее исполнение выходит за область видимости временного контейнера, что приводит к его удалению. У нас на руках остается нужный нам
cache с набором из
-1.
Подозреваю, что это сброс кеша, перевод его состояния к изначальному виду.
Тут справка по
вектору.
Там описан весь интерфейс вектора.