Le tri de Tableau de Pointeurs en C++

En espérant que je peux obtenir un peu de conseils sur une méthode de tri que j'ai fait.

Le but de ce code est de créer un pointeur de int tableau et trier les pointeurs dans ce tableau par le contenu de l'ordinaire int tableau. Puis à assigner des valeurs d'une variable différente en fonction de l'emplacement de l'original du tableau int.

L'étrangeté je suis en train de vivre avec ce code, c'est que le code de test qui ne devrait pas l'effet de quelque chose d'aussi loin que je sache... EST en fait effectuer le contenu de mes pointeurs.
Peut-être que les valeurs ne changent pas, mais la façon dont je suis en train d'écrire le code de test est à l'origine des erreurs.

 //create array
 int c[8] = {3,1,5,7,8,2,6,4};
 //create pointer array
 int *newptr[8];
 for(int k = 0; k<8; k++)
 {
     newptr[k] = &c[k];
 }
//sort pointer array
for(int j = 0; j<8; j++)
{
    for(; j > -1 && *newptr[j] < *newptr[j+1]; j--)
    {
        int *temp = newptr[j+1];
        newptr[j+1] = newptr[j];
        newptr[j] = temp;
    }
}
//set lookuplocation
int lookuplocation;
for(int i = 0; i<8; i++)
{
    cout << *newptr[i];

    if(newptr[i] == &c[0])
    {
        cout << *newptr[i] << endl;

        //If I use endl or \n to test the pointers values I end up with only
        //a part of the correct data. 

        cout << "\nSuccess!\n";
        lookuplocation = 0;
    }
}
//Also for my last test sometimes the first element gets messed up as well
//test arrays
for(int k = 0; k<8; k++)
{
    cout << "Element " << k << ": " << *newptr[k] << endl;
    cout << "Element " << k << ": " << newptr[k] << endl;
}
votre tri est foiré
Boucles imbriquées avec le même compteur j ? Comment peut-il travailler à tous?
Avez-vous besoin d'écrire le code pour trier le tableau de pointeurs, ou avez-vous besoin de trier un tableau de pointeurs? Veuillez préciser lesquels. Si vous n'avez pas besoin d'écrire votre propre code, la solution est triviale.
"je n'ai pas vraiment appris à les utiliser (conteneurs STL) dans la classe." - bien sûr, vous n'étiez pas, parce que l'ensemble d'entre nous le sait C++ est mieux enseignée par l'enseignement de la "C avec cout" en premier. 😉
Votre code a un bug. Dans le tri boucle, lorsque j==7 l'expression newptr[j+1] accède à un élément après la fin du tableau.

OriginalL'auteur Connor | 2013-08-05