Fila de vetores

Preciso criar uma fila em que cada posição/item da fila armazene um vetor de inteiros, não faço ideia de como implementar isso, ja tenho a fila de apenas um inteiro. (Fila circular)

fila.h:

#include <iostream>
using namespace std;

#define MAX 5
typedef struct

{
	int inicio, fim;
	int vetor[MAX];

}Fila;

int incremento(int i)
{
	return ((i + 1) % MAX);
}

Fila* cria()
{
	//Nova instância para a estrutura 
	//alocação dinâmica de memoria

	Fila* f = new Fila();//cria ponteiro, não pode der ponteiro sem indereço ou locação dinamica de endereço
						 //Fila* f = new Fila();- cria uma nova fila
	f->inicio = 0;
	f->fim = 0;

	return f;
}

int cheia(Fila* f)

{
	return(incremento(f->fim) == f->inicio);
}

int vazia(Fila* f)
{
	return (f->inicio == f->fim);
}

void enqueue(Fila*f, int carac)
{
	if (cheia(f))
	{
		//Se entrar aqui para o codigo, por causa do exit
		// por isso não precisa de else
		cout << "Fila cheia";
		exit(1);
	}

	//iNSERIR VALOR NA FILA
	f->vetor[f->fim] = carac;
	f->fim = incremento(f->fim);

}

int dequeue(Fila*f)
{
	if (vazia(f))
	{
		cout << "Fila vazia";
		exit(1);
	}

	//retira valor da fila
	int valor;

	valor = f->vetor[f->inicio];
	f->inicio = incremento(f->inicio);

	return valor;

}
//remove memoria alocada dinamicamente
void libera(Fila* f)
{
	delete f;
}

fila.cpp

#include <iostream>
#include "fila.h"
#include <locale>
using namespace std;

    void main() {
	setlocale(LC_ALL, "Portuguese");
	int opc = 0, vlr;

	Fila* f = new Fila();

	while (opc != 3)
	{
		cout << endl << "1- Inserir" << endl;
		cout << "2- Remover" << endl;
		cout << "3- Sair" << endl;
		cout << "Digite a opção" << endl;
		cin >> opc;

		switch (opc)
		{
			case 1:
			{
				cout << "Digite o valor a ser inserido" << endl;
				cin >> vlr;
				enqueue(f, vlr);
				break;
			}
			case 2:
			{
				cout << "Item removido: " << dequeue(f) << endl;
				break;
			}
		}
	}
}