Alocação dinâmica em c++

Uma matriz é na verdade um vetor bidimensional, ou seja, um vetor composto por outro vetor. Basicamente, em C++, basta criar um vetor de ponteiros e para cada ponteiro apontar para um novo vetor.Faça uma função em C++ que usando ponteiros de ponteiros aloque dinamicamente um vetor bidimensional de dimensão nL(números de linhas) e nC(números de Colunas). A função deve ser:
int ** alocarMatriz(int nl, int nc);
Fazer uma função de deletar o qual irá deletar todos os elementos da matriz. A função deve ser:
Void deletarMatriz(int ** Pmatriz, int nl);

Segue o que consegui mais ou menos até agora:

#include
using namespace std;

int** alocarMatriz(int nl, int nc) {
int** matriz = new int*[nl];
for(int i = 0; i < nl; i++)
matriz[i] = new int[nc];

}

void deletarMatriz(int** Pmatriz, int nl){
int i;

for(int i = 0; i < nl; i++){
	delete [] Pmatriz;
}

delete [] Pmatriz;

}
int main(){
int nl, nc;
cout << "Insira o numero de linhas: ";
cin >> nl;
cout << "Insira o numero de colunas: ";
cin >> nc;

}

Alguém pode me ajudar? Já não sei mais o que preciso fazer para concluir. Desde já agradeço.

se vc ja resolveu, posta aqui como fez e marca como resolvido.

pense q outras pessoas podem ter a mesma dificuldade q vc um dia