Ваша проблема в том, что каждый вызов menu () создает новый вектор, который скрывает предыдущий, поэтому вам кажется, что они пусты. Если вы действительно хотите вызывать меню рекурсивно, передайте ему векторную ссылку, созданную вами в main.
При этом системы меню редко бывают рекурсивными. Вы, вероятно, хотите, чтобы вокруг вызова () в main выполнялся цикл, который повторяется до тех пор, пока пользователь не решит выйти.