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 :

Peut-on faire des tableaux de bits


Sujet :

C++

  1. #1
    Membre habitué Avatar de fomazou
    Inscrit en
    Mars 2004
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 220
    Points : 151
    Points
    151
    Par défaut Peut-on faire des tableaux de bits
    il existe en c++ les unsigned int, les int les double, ...
    et donc on peut faire des tableaux de ces différents type.

    dans la petite application que je fais j'ai besoin de mettre un fichier dans un tableau. où chaque éléments du tableau n'est pas un octect, mais est un bit.

    merci
    "le temps c'est le meilleur des médécins, peut être aussi le meilleur des assassins" Bernis-Francine

  2. #2
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Il n'y a pas de type plus petit que char en C++ et la taille d'un char est toujours au moins 8 bits. Tu peux accéder aux bits à l'aide des opérateurs prévus à cet effet (&, |, etc.).

  3. #3
    Membre éclairé Avatar de befalimpertinent
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2007
    Messages : 561
    Points : 833
    Points
    833
    Par défaut
    Il existe des tableaux de bits :
    bitsets dans la bibliothèque standard

    Mais si je me rappelle bien ils ne sont pas dynamiques et tu dois donc connaitre la taille exacte à la compilation ce qui semble compromis dans le cas d'un chargement de fichier.
    Linux > *

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Bonjour,
    Je ne l'ai jamais utilisée, mais il me semble que la bibliothèque Boost.Dynamic bitset sert à ça. A creuser ici.

  5. #5
    Membre éclairé Avatar de befalimpertinent
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2007
    Messages : 561
    Points : 833
    Points
    833
    Par défaut
    Cela dit entre nous es tu tellement en manque de mémoire au point de vouloir utiliser des tableaux de bits à la place de bête tableau de bool (ou char) ?
    Linux > *

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Dans certain cas ça doit pouvoir être pratique (par expl, les fichiers DWG d'autocad se base sur les bits et non l'octet).

  7. #7
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Pour des tableaux de bits de taille fixe : std::bitset
    Pour des tableaux de bits de taille variable : std::vector<bool> (contrairement aux apparences, il ne gère pas des booléens, mais des bits)

    En général, les accès sont un peu plus long que tableau de booléens, tant que les tableaux sont de petite taille. Mais le gain de taille peut inverser la tendance par une meilleure utilisation du cache.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/11/2007, 20h23
  2. [JavaScript] [FAQ] une autre façon de faire des tableaux à coins arrondis
    Par SpaceFrog dans le forum Contribuez
    Réponses: 6
    Dernier message: 10/01/2007, 09h35
  3. Peut-on faire des colonnes avec "div"
    Par lodan dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 30/07/2006, 06h56
  4. [XSLT] probleme pour faire des tableaux html
    Par Lockless dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 16/06/2006, 16h04
  5. Faire des tableaux croisés dynamique
    Par richard038 dans le forum Bases de données
    Réponses: 6
    Dernier message: 12/04/2006, 21h51

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