Find me on github
vector<bool> est un ovni qu'il vaut mieux éviter... Vaut mieux préférer les alternatives de chez boost.
"Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu
Il peut faire plus d'un byte.
Celui du C et du C++. Le compilateur se debrouille avec.
Il y a le probleme de ce qui est faisable efficacement. Mais il y a un effet de retro-action (les langages essaient de rendre accessibles ce que le hard propose -- mais bon, voir l'acces aux flags d'overflow... -- et les archi essaient de rendre efficace ce dont les langages populaires ont besoin -- et dans ce sens la je ne trouve pas de contre-exemple, par contre on trouve facilement des instructions qui sont implementees peu efficacement parce que non utilisees dans les langages populaires)
Il ne faut pas non plus oublier qu'ouvrir la possibilite pour une implementation la force a l'utiliser (dans le cas present, la pression serait forte pour qu'elle le soit pour les tableaux, mais AMA faible dans les autres cas).
L'equivalent deParce que si bool prend 1 unique bit, comment est défini bool* ?
Il y a deja des implementations de C qui font ca pour les char*.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 struct boolptr { word* base; unsigned bit_in_word; };
Ca en fait partie mais ce n'est pas rédhibitoire, voir ci-dessus et ci-dessous.Il me semble qu'avoir un type qui tienne moins en mémoire que l'unité de l'espace d'adressage est très problématique dans un langage à pointeurs. Ou alors tu englobes ça dans le "modele du C++" ?
[/quote]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 struct pair_bool { bool b1; // 1 bit bool b2; // 1 bit } // pair_bool fait 2 bits, donc sizeof(pair_bool) == 1 byte
Tu peux aussi te mettre des contraintes d'alignement qui font que la struct ait deux bytes au moins sans une indication qu'il faut accorder plus d'importance a l'espace (mot cle ou pragme packed ou meme une notation de bitfield qui n'empecherait pas de prendre l'adresse -- les deux ouvrant des choix supplementaires, concevoir un langage, ce n'est pas simple). Mais avoir sizeof() qui te retourne un nombre de bytes est un aspect vraisemblablement a changer.
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager