Namespaces
Variants

std::bitset<N>::operator[]

Du site fr.cppreference.net
 
 
Bibliothèque d'utilitaires
Support linguistique
Support de type (types de base, RTTI)
Macros de test de fonctionnalités de la bibliothèque (C++20)
Utilitaires de programme
Fonctions variadiques
Support des coroutines (C++20)
Support des contrats (C++26)
Comparaison à trois voies
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilitaires généraux
Opérateurs relationnels (obsolète en C++20)
 
 
bool operator[]( std::size_t pos ) const;
(1) (constexpr depuis C++11)
reference operator[]( std::size_t pos );
(2) (constexpr depuis C++23)

Accède au bit à la position pos.

1) Renvoie la valeur du bit.
2) Renvoie un objet de type std::bitset::reference qui permet de modifier la valeur.

Si pos < size() est false, le comportement est indéfini.

(jusqu'à C++26)

Si pos < size() est false:

  • Si l'implémentation est durcie, une violation de contrat se produit.
  • Si l'implémentation n'est pas durcie, le comportement est indéfini.
(depuis C++26)

Paramètres

pos - position du bit à retourner

Valeur de retour

1) La valeur du bit demandé.
2) Un objet de type std::bitset::reference , qui permet d'écrire dans le bit demandé.

Exceptions

Ne lance rien.

Exemple

#include <bitset>
#include <cstddef>
#include <iostream>
int main()
{
    std::bitset<8> b1{0b00101010}; // littéral binaire pour 42
    for (std::size_t i = 0; i < b1.size(); ++i)
        std::cout << "b1[" << i << "]: " << b1[i] << '\n';
    b1[0] = true; // modifie le premier bit via bitset::reference
    std::cout << "Après avoir défini le bit 0, b1 contient " << b1 << '\n';
}

Sortie :

b1[0]: 0
b1[1]: 1
b1[2]: 0
b1[3]: 1
b1[4]: 0
b1[5]: 1
b1[6]: 0
b1[7]: 0
After setting bit 0, b1 holds 00101011

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Appliqué à Comportement publié Comportement corrigé
LWG 11 C++98 1. la description était manquante dans le standard C++
2. il n'y avait que la surcharge non-const
1. description ajoutée
2. ajout de la surcharge const
LWG 907 C++98 le comportement de lecture du bit à pos était équivalent
à celui de test(pos) , mais test() peut lever des exceptions
évite de mentionner test()

Voir aussi

accède à un bit spécifique
(fonction membre publique)