J'utilise un bitset pour représenter une série de données temporelle de données. Par exemple, le premier bit représente la première jour 1, le deuxième bit représente la journée 2, etc.
Je suis confus lorsque j'exécute le code suivant car il retourne toujours la longueur de 0: p> Après avoir joué autour, je vois que c'est parce que les valeurs sont toutes fausses. Je fixe le peu à zéro pour que je suppose que cela compterait dans la longueur et j'en ai besoin pour compter. Y a-t-il un moyen d'obtenir le compte, y compris faux et vrai? P> p>
4 Réponses :
Classe Bitset a un constructeur avec le nombre souhaité de bits .
crée un bit défini dont la taille initiale est suffisamment grande pour explicitement représentent des bits avec des indices dans la plage 0 à NBITS-1. Tous les bits sont initialement faux. P> blockQuote>
retourne le nombre de bits d'espace réellement utilisé par ce bitset à représenter des valeurs de bit. L'élément maximum de l'ensemble est la taille - 1er élément. p> blockQuote>
retourne le nombre de bits définis sur true dans ce bitset. p> BlockQuote>
Bitset est un jeu de bits compacté, il semble que ce ne soit pas votre besoin car vous devez connaître le nombre de bits définis sur true ou false. P>
Ma proposition: P>
xxx pré> Ce programme écho 100, 3 fois. p> p>
Merci pour la réponse, j'ai examiné ces deux méthodes et ils ne retournent pas le nombre de bits que j'ai définis. Taille () retournera 128 dans mon exemple et la cardinalité retournera 0 car aucun bits n'est défini. Je cherche à avoir combien de bits je me suis mis à faux ou vrai. Donc, dans mon exemple, je cherche à retourner 100.
Ce n'est pas possible en utilisant uniquement 1) Gardez la trace de la longueur de la longueur p> 2) Utilisez 3) étendre Bitset code> - J'ai examiné la mise en œuvre, et cela ne stocke tout simplement pas ce que vous voulez. Je ne peux que signaler seulement des solutions que vous avez probablement déjà à l'esprit:
Bitset code> de la bibliothèque (j'ai trouvé Ceci: HTTPS : //www.iro.umontreal.ca/~simul/ssj-2/doc/iro/lecuyer/util/bitvector.html ) P>
Bitset code> (comme indiqué dans des commentaires, pas la meilleure idée): p>
Vous avez manqué une douzaine de surcharges pour # 3.
Je pense que Set (int defindex, intinindex) code> et
Effacer (int defindex, int toindex) code>.
Non, il y a 3 clair () code> surcharges et 4
SET () code> surcharge et
flip () code> et
et () code> et
ou () code> etc. Et qui a pour savoir ce qu'ils vont ajouter dans la prochaine version. C'est une utilisation abusive classique d'héritage.
Ces Set code> appellent ce
définir code>, alors c'est bien. Pour les autres - accepté, vous devriez les remplacer aussi.
Point équitable. Mais c'est un détail de mise en œuvre. Il n'y a aucune garantie une autre mise en œuvre (parallèle ou future) fera de même.
Je vois, accepté. Et oui, la délégation serait meilleure.
Il ne semble pas contenir de méthode de ce que vous attendez.
La longueur retourne la taille du bitset pour la dernière valeur "vraie" ... Donc: P>
false, false, false, true, false, false
Question:
Y a-t-il un moyen d'obtenir le compte, y compris faux et vrai? p> BlockQuote>
Réponse: P>
Non, pas de
Bitset code>, non fiable! ..vous pouvez émettre
bitset.size () code>, qui vous donnera: p>
Le nombre de bits actuellement dans cet ensemble de bits p> blockQuote>
mais
taille () code> (valeur) ne changera pas, aussi longtemps que vous le faites
bitset.set (i, false) code> resp.
bitset.clear (i) code> ..for n'importe quel
i code>. p>
... seulement lorsque
i> = Taille () code > et
bitset.set (i / *, true * /) code>, il aura effet sur (la valeur de)
taille () code>. p>
Et même si vous faites: p>
xxx pré> (initialisez votre bit défini avec "Taille non par défaut"), il est garanti que
Bs.S.SIZE ( )> = NBITS code>, mais pas
bs.Size () == NBITS code>. p> p>
Très similaire à Cette question
Lire la documentation B>, c'est-à-dire le Javadoc de
longueur () code>
: "renvoie la" taille logique "de ce bitset: l'index du bit de jeu le plus élevé dans le bitset plus un. < B> retourne zéro si le bitset ne contient pas de bits de jeu b>. " i>En fait, pourquoi avez-vous besoin de cela?