Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C#] Effacer un array au fur et à mesure

Sujet résolu
    12 juillet 2011 à 4:56:09

    Bonsoir à tous,

    Je vous explique mon résultat souhaité. Je dispose d'un tableau (string[], int[], peut importe le type puisque ça varie), dans une fonction je les remplis avec des données. Jusque là c'est simple, je sais faire :p
    Donc j’obtiens un array de ce type là :
    string[] prenoms = new string[10];
    prenom[0] = "Joachim";
    prenom[1] = "Jacob";
    // ... \\
    prenom[9] = "Michelle";
    


    Dans une autre fonction, j'aimerais lire ce tableau.
    Au début je voudrais peut être lire les 3 premiers prénoms (index 0, 1 et 2). Une fois parcourus, je les efface de ce tableau pour que l'index 3 devienne l'index 0.
    Ainsi si je désire lire 5 prénoms cette fois ci, je parcourrais le tableau encore pour lire les 5 premiers élèments et ainsi de suite.

    Maintenant mon problème c'est la procédure, en effet, je ne sais pas comment effacer les élément déjà parcours.
    S'il n'existe pas de fonction déjà prête à cet effet, je me pencherais sur une solution barbare :
    foreach puis Array.Copy() etc. afin de copier le reste du tableau dans un autre tableau et de remplacer ce dernier par le nouveau tableau.

    Merci de votre aide :p
    • Partager sur Facebook
    • Partager sur Twitter
      12 juillet 2011 à 8:13:54

      Salut,

      Vu ton problème et si tu n'as pas besoin d'acceder à un prénom directement par l'index, tu peux utiliser la classe générique Queue qui réprésente une liste. Celle-ci fournie les méthodes Enqueue pour ajouter un élément et Dequeue pour récupérer et enlever de la liste l'élément le plus ancien.
      • Partager sur Facebook
      • Partager sur Twitter
        12 juillet 2011 à 10:37:14

        Si tu veux ne pas t'emmerder à utiliser les tableaux simples (qui impose je rappelle la gestion des index, j'entends par là que si on supprime une entrée il faut modifier tout les index) tu peux utiliser des collections.
        Voici les différentes collections :

        ArrayList : classe permettant de déplacer des éléments dans un tableau (entre autres)
        Queue : classe implémentant le mécanisme FIFO (premier entré, premier sorti)
        Stack : classe implémentant le mécanisme LIFO (dernier entré, premier sorti)
        Hashtable : équivalent d'un tableau associatif (on accède à l'élément par une clé)
        SortedList : Même fonctionnement que HashTable, sauf qu'il trie automatiquement les résultats par clé.


        Donc si tu as besoin d'accéder et de supprimer n'importe quel élément (pas forcément les premiers), je te conseille l'ArrayList. Sinon, Queue/Stack.
        • Partager sur Facebook
        • Partager sur Twitter
          12 juillet 2011 à 12:07:38

          Le soucis c'est que je ne connais jamais la taille du tableau en questions.
          A vrai dire, ce ne sera que un tableau de type byte[]. Je veux le parcourir avec des méthodes pour lire 4/8/16/24/32/64 bits.
          Mais je ne veux pas utiliser des classes déjà existantes (BinaryReader par exemple).
          • Partager sur Facebook
          • Partager sur Twitter
            12 juillet 2011 à 12:59:56

            Au pire, mémorise le dernier index lu ;)
            • Partager sur Facebook
            • Partager sur Twitter
              12 juillet 2011 à 13:36:38

              Citation : Raphy

              Mais je ne veux pas utiliser des classes déjà existantes (BinaryReader par exemple)



              Pourquoi? Sinon les classes style ArrayList gère la taille dynamiquement, tu n'a pas de souci à ce niveau là.
              • Partager sur Facebook
              • Partager sur Twitter
                12 juillet 2011 à 14:29:07

                A noter que les collections ArrayList et HashTable ont été remplacées par leur équivalents génériques (respectivement List et Dictionary) et ne devraient plus être utilisées. ;)
                • Partager sur Facebook
                • Partager sur Twitter
                  12 juillet 2011 à 14:41:17

                  Car en faite je veux lire dans l'ordre inverse les données :p
                  01101101 sera lu 10110110

                  Mais ce n'est qu'est détail.

                  Mais revenons au problème initial, je pense que je ferais des mises à jour à l'Array.Copy().

                  Merci d'avoir participé et voulu m’aider ^^
                  • Partager sur Facebook
                  • Partager sur Twitter
                    12 juillet 2011 à 15:46:26

                    Citation : Orwell

                    A noter que les collections ArrayList et HashTable ont été remplacées par leur équivalents génériques (respectivement List et Dictionary) et ne devraient plus être utilisées. ;)



                    Au temps pour moi, j'utilise souvent les List, mais je ne savais pas que HashTable = Dictionary, merci pour l'info :)
                    • Partager sur Facebook
                    • Partager sur Twitter

                    [C#] Effacer un array au fur et à mesure

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown