IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[langage] redimensionner un tableau quelconque.


Sujet :

C#

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Février 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 33
    Points : 139
    Points
    139
    Par défaut [langage] redimensionner un tableau quelconque.
    Bonsoir à tous

    Je me posais une question

    Est-il possible de redimensionner un tableau quelconque en C#.


    Merci pour vos réponses.

  2. #2
    Membre confirmé
    Avatar de nouanda
    Homme Profil pro
    Hobbyist
    Inscrit en
    Mai 2002
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Activité : Hobbyist

    Informations forums :
    Inscription : Mai 2002
    Messages : 246
    Points : 627
    Points
    627
    Par défaut
    Tu peux. La fonction Array.Resize le fait sur les tableaux a 1 dimension. Pour des tableaux a n dimension, la documentation propose une fonction.
    Cf documentation
    Mais si tu dois souvent redimensionner un tableau, autant utiliser une liste ou autre chose.
    " Entre le Savoir et le Pouvoir, il y a le Vouloir "

    Desole pour les accents, je suis en QWERTY...

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Février 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 33
    Points : 139
    Points
    139
    Par défaut
    Citation Envoyé par nouanda Voir le message
    Tu peux. La fonction Array.Resize le fait sur les tableaux a 1 dimension. Pour des tableaux a n dimension, la documentation propose une fonction.
    Cf documentation
    Mais si tu dois souvent redimensionner un tableau, autant utiliser une liste ou autre chose.
    Merci je viens de faire un essai et ça marche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    string[] tableau = { "Un", "deux", "trois", "quatre"};
     
    Array.Resize(ref tableau, tableau.Length * 2);
     
    tableau[4] = "cinq";
    tableau[5] = "six";
    tableau[6] = "sept";
    tableau[7] = "huit";
    C'était juste à titre d'information, puisque j'utilise déjà List<> régulièrement. Par ailleurs je me suis toujours demandé pourquoi on appelait ça une liste alors que réellement ce n'en est pas une et que cela serait plutôt un vecteur.

  4. #4
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 900
    Points : 1 918
    Points
    1 918
    Par défaut
    En fait c'est un peu plus subtil que ça. Ce n'est pas un vrai resize, il y aura en fait l'allocation mémoire d'un nouveau tableau et une copie des éléments sur ce second tableau. La variable est passée en référence pour recevoir l'adresse du nouveau tableau. Les List<T> elles-même fonctionnent avec un tableau interne et font un réallocation et copie pour augmenter la capacité lorsque la taille atteint la capacité actuelle et qu'on veut insérer un nouvel élément.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    static void Main(string[] args)
    {
        var array = new[] { 1, 2, 3 };WriteLine);
        var refCopy = array;
        Console.WriteLine($"array==refCopy:{ReferenceEquals(array, refCopy)}");
        Array.Resize(ref array, array.Length * 2);
        Console.WriteLine($"array==refCopy:{ReferenceEquals(array, refCopy)}");
        Console.ReadLine();
    }

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Février 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 33
    Points : 139
    Points
    139
    Par défaut
    Oui c'est ce que j'ai vu dans le code source. La capacité de départ est nulle si on utilise le constructeur List<>(). Dès l'ajout d'un premier élément, la capacité du tableau interne passe à 4. Et à chaque fois que l'on dépasse la capacité (en ajoutant des éléments), un nouveau tableau avec une capacité double est créé, on recopie le contenu dans le nouveau tableau.

Discussions similaires

  1. Redimensionner un tableau
    Par saidus dans le forum C++Builder
    Réponses: 12
    Dernier message: 28/11/2005, 23h41
  2. [Tableaux] redimensionner un tableau
    Par falcon dans le forum Langage
    Réponses: 6
    Dernier message: 23/11/2005, 09h38
  3. [langage] tri dans tableau de hachage
    Par mimilou dans le forum Langage
    Réponses: 2
    Dernier message: 10/03/2004, 16h10
  4. [langage] Parcourir un tableau
    Par Jibees dans le forum Langage
    Réponses: 13
    Dernier message: 22/04/2003, 14h18
  5. [langage] Réinitialiser un tableau associatif.
    Par totox17 dans le forum Langage
    Réponses: 2
    Dernier message: 28/01/2003, 16h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo