Como gerar uma matriz de 256 números distintos

Eu tenho isto:

#include <iostream>    
using namespace std;   
int main()
{
    int a[256];
    int b;
    int k;
    for (int i = 0; i < 256; i ++){
    b = rand()%256;
    k = 0;
        for (int j = 0; j< i; j ++)
        {
            if (a[j] == b){k = 1;}  
        }
    if (k == 0){a[i] = b;}
    if (k==1){i--;}
    }

    return 0;
}

Isso gera uma matriz de números inteiros de 0 a 255. Cada número inteiro ocorre apenas uma vez na matriz. Meu problema é que esse código demora um pouco para ser executado porque, para cada novo número inteiro aleatório, verifico se o número inteiro já está na matriz. Então eu tenho que esperar até que todos os números inteiros de 0 a 255 apareçam como um número aleatório. Minha pergunta é:

Existe uma maneira melhor de fazer isso?

questionAnswers(4)

yourAnswerToTheQuestion