Como fazer elementos de vetor únicos? (remover duplicatas não adjacentes)

Eu tenho um vetor contendo poucas duplicatas não adjacentes.

Como um exemplo simples, considere:

2 1 6 1 4 6 2 1 1

Eu estou tentando fazer issovector exclusivo removendo as duplicatas não adjacentes e mantendo a ordem dos elementos.

Resultado seria:

2 1 6 4 

As soluções que eu tentei são:

Inserindo em um std :: set, mas o problema com esta abordagem é que isso irá perturbar a ordem dos elementos.Use a combinação de std :: sort e std :: unique. Mas novamente o mesmo problema de ordem.

Eliminação duplicada manual:

    Define a temporary vector TempVector.
    for (each element in a vector)
    {
        if (the element does not exists in TempVector)
        {
            add to TempVector;
        }
    }
    swap orginial vector with TempVector.

Minha pergunta é:

Existe algum algoritmo STL que possa remover as duplicatas não adjacentes do vetor? qual é a sua complexidade?

questionAnswers(11)

yourAnswerToTheQuestion