À l'aide d'une fonction pour supprimer les doublons d'un tableau en C++

Je suis en train d'écrire un programme qui a une entrée de l'utilisateur entiers dans un tableau, appelle une fonction qui supprime les doublons à partir de ce tableau, puis imprime le tableau modifié. Quand je le lance, il me permet de valeurs d'entrée dans le tableau, mais alors donne moi un "Segmentation fault" message d'erreur lorsque j'ai terminé l'entrée des valeurs. Ce que je fais mal?

Voici mon code:

#include <iostream>

using namespace std;

void rmDup(int array[], int& size)
{
        for (int i = 0; i < size; i++)
        {
            for (int j = i + 1; j < size; j++)
            {
                if (array[i] == array[j])
                {
                    array[i - 1 ] = array[i];
                    size--;
                }
            }
        }
}
int main()
{
    const int CAPACITY = 100;
    int values[CAPACITY], currentSize = 0, input;

    cout << "Please enter a series of up to 100 integers. Press 'q' to quit. ";

    while (cin >> input)
    {
       if (currentSize < CAPACITY)   
       {
           values[currentSize] = input;
           currentSize++;
       }
    }

    rmDup(values, currentSize);

    for (int k = 0; k < currentSize; k++)
    {
            cout << values[k];
    }

    return 0;
}

Merci.

Pour c++ pensez à utiliser std::vector<int> au lieu de int array[]
Pourquoi ne pas utiliser la Bibliothèque Standard? using namespace std; sort(begin(values), end(values)); size = unique(begin(values), end(values)) - begin(values);
Je ne connais pas ces commandes (tri, à la fin, unique), mais je vais certainement se familiariser avec eux.
pensez à la limite de la ligne de cas ( general technic lorsque vous traitez avec des tableaux ). Lorsque i = taille - 1 , j deviendra taille . Il mneans tableau[j], tableau[taille] . Cela signifie que crash:)

OriginalL'auteur Carlos | 2013-12-10