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 :

Questions sur l'opérateur <<


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut Questions sur l'opérateur <<
    Salut,

    j'ai deux questions sur l'opérateur "décalages de bits".

    Je sais qu'on peut l'utiliser sur un entier unique, mais est-ce que l'on pourrait l'utiliser carrément sur une zone mémoire pour par exemple décaler les cases d'un tableau?

    Sinon, si c'est possible, de quelle facon augmente le temps pris par cette action? Est-ce de l'ordre de n, log(n)...? Par exemple, dans la vie réelle, si j'ai un jeu de cartes, quand je met une carte au milieu (et que je décale les autres cartes donc), ca ne dépend du nombre de cartes que très faiblement.

    Merci de vos réponses

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 966
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 966
    Par défaut
    Dio,
    Citation Envoyé par coyotte507 Voir le message
    Par exemple, dans la vie réelle, si j'ai un jeu de cartes, quand je met une carte au milieu (et que je décale les autres cartes donc), ca ne dépend du nombre de cartes que très faiblement.
    Mais imagine que les cartes soient disposées dans une série de cases, ce qui t'obligerait à en décaler la moitié avant d'en insérer une.
    Penses-tu qu'il en serait de même ?

  3. #3
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    Si je prend par exemple les 7 lettres de scrabble côte à côte, il me suffit de pousser celle du milieu vers la gauche (ca décalera les autres en même temps) et d'en mettre une autre au milieu.

    Ta réponse veut dire que ca prend un temps linéaire?

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Par défaut
    L'opérateur << ou >> ne fonctionne pas sur des positions arbitraires en mémoire. Tu ne peux donc pas décaler un ensemble de valeurs en temps constant (du moins sur les architectures classiques).

    Une insertion dans un tableau demande de décaler, dans le pire des cas, tous les éléments du tableau. Chaque décalage a un coût constant, donc c'est linéaire. Il est également parfois nécessaire de ré-allouer un nouveau bloc de mémoire plus grand si l'insertion provoque une augmentation du tableau à une taille supérieure à celle allouée. En ce cas, il est de plus nécessaire de copier le contenu entier du tableau de l'ancien bloc vers le nouveau bloc et de libérer la mémoire occupée par l'ancien bloc.

    Une structure de données linéaire permettant de faire des insertions en temps constant est la liste chaînée.

    David.
    --

  5. #5
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    D'accord merci. Ca me servirait donc à rien de savoir comment décaler un bloc de plus de 32 bits.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Question Sur l'Opérateur d'affichage C++ <<
    Par chercheur111 dans le forum C++
    Réponses: 24
    Dernier message: 19/04/2014, 21h28
  2. question sur la surcharge d'opérateur ++
    Par deubelte dans le forum Débuter
    Réponses: 13
    Dernier message: 26/04/2010, 18h28
  3. question sur l'opérateur new
    Par deubelte dans le forum Débuter
    Réponses: 54
    Dernier message: 29/03/2010, 10h47
  4. Question sur l'opérateur ::
    Par johnkro dans le forum Langage
    Réponses: 8
    Dernier message: 14/03/2008, 10h13
  5. question sur les opérateurs
    Par isidore dans le forum C++
    Réponses: 10
    Dernier message: 25/02/2005, 18h46

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