std::bitset<N>:: test
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member types | ||||
| Member functions | ||||
|
(until C++20)
|
||||
| Element access | ||||
|
bitset::test
|
||||
| Capacity | ||||
| Modifiers | ||||
| Conversions | ||||
|
(C++11)
|
||||
| Non-member functions | ||||
| Helper classes | ||||
|
(C++11)
|
||||
|
bool
test
(
std::
size_t
pos
)
const
;
|
(constexpr depuis C++23) | |
Retourne la valeur du bit à la position pos (en comptant à partir de 0).
Contrairement à operator[] , il effectue une vérification des limites.
Table des matières |
Paramètres
| pos | - | position du bit à retourner (en comptant à partir de 0) |
Valeur de retour
true si le bit demandé est défini, false sinon.
Exceptions
Lance std::out_of_range si pos ne correspond pas à une position de bit valide.
Exemple
#include <bit> #include <bitset> #include <cassert> #include <iostream> #include <stdexcept> int main() { std::bitset<10> b1("1111010000"); std::size_t idx = 0; while (idx < b1.size() && !b1.test(idx)) ++idx; assert(static_cast<int>(idx) == std::countr_zero(b1.to_ulong())); if (idx < b1.size()) std::cout << "Le premier bit défini est à l'index " << idx << '\n'; else std::cout << "aucun bit défini\n"; try { std::bitset<0B10'1001'1010> bad; if (bad.test(bad.size())) std::cout << "Attendez-vous à l'inattendu !\n"; } catch (std::out_of_range const& ex) { std::cout << "Exception : " << ex.what() << '\n'; } }
Sortie possible :
Le premier bit défini est à l'index 4 Exception : bitset::test: __position (which is 666) >= _Nb (which is 666)
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 | Applicable à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 2250 | C++98 |
le comportement était indéfini si
pos
ne
correspond pas à une position de bit valide |
lève toujours une
exception dans ce cas |
Voir aussi
|
accède à un bit spécifique
(fonction membre publique) |
|
|
(C++20)
|
compte le nombre de bits à
1
dans un entier non signé
(modèle de fonction) |
|
(C++20)
|
vérifie si un nombre est une puissance entière de
2
(modèle de fonction) |