Si hay un limite en el máximo de palabras del historial y este es relativamente pequeño basta con declarar un array de arrays de caracteres:
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
#include <cstring>
using std::strcmp;
using std::strcpy;
const int max_palabras = 4;
const int chars_x_palabra = 32;
int main()
{
char palabra[max_palabras][chars_x_palabra];
char aux[chars_x_palabra];
int num_palabras = 0;
for (int i = 0; i != max_palabras; ++i){
cout << "Introduce una palabra: ";
cin >> aux;
int j;
for (j = 0; j != num_palabras && strcmp(aux, palabra[j]); ++j)
;
if (j == num_palabras)
strcpy(palabra[num_palabras++], aux);
else
cout << "Palabra repetida" << endl;
}
for (int i = 0; i != num_palabras; ++i)
cout << "Palabra " << (i + 1) << ": " << palabra[i] << endl;
return 0;
}
Pero si debes aceptar un numero arbitrario de palabras lo mejor es utilizar un puntero de tipo "char **" junto con las funciones malloc, calloc y realloc.
Un detalle que debe cambiarse si o si en el programa es el uso de cin por una forma segura de leer una palabra evitando el desbordamiento.
Ya por ultimo yo no lo haría de esa forma, si estas aprendiendo C++ lo políticamente correcto es utilizar vector + string + getline y así terminas con un programa mas corto y seguro.
Un saludo