std::bitset<N>::test
Von cppreference.com
bool test( std::size_t pos ) const; |
(constexpr seit C++23) | |
Gibt den Wert des Bits an der Position pos zurück (gezählt ab 0).
Im Gegensatz zu operator[] führt es eine Bereichsprüfung durch.
Inhalt |
[bearbeiten] Parameter
| pos | - | Position des zurückzugebenden Bits (gezählt ab 0) |
[bearbeiten] Rückgabewert
true, wenn das angeforderte Bit gesetzt ist, andernfalls false.
[bearbeiten] Ausnahmen
Wirft std::out_of_range, wenn pos keiner gültigen Bitposition entspricht.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#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 << "The first set bit is at index " << idx << '\n'; else std::cout << "no set bits\n"; try { std::bitset<0B10'1001'1010> bad; if (bad.test(bad.size())) std::cout << "Expect unexpected!\n"; } catch (std::out_of_range const& ex) { std::cout << "Exception: " << ex.what() << '\n'; } }
Mögliche Ausgabe
The first set bit is at index 4 Exception: bitset::test: __position (which is 666) >= _Nb (which is 666)
[bearbeiten] Fehlerberichte
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 2250 | C++98 | war das Verhalten undefiniert, wenn pos keiner gültigen Bitposition entsprach |
wirft in diesem Fall immer eine Ausnahme |
[bearbeiten] Siehe auch
| greift auf ein bestimmtes Bit zu (public member function) | |
| (C++20) |
zählt die Anzahl der 1-Bits in einer vorzeichenlosen Ganzzahl (Funktion-Template) |
| (C++20) |
prüft, ob eine Zahl eine ganzzahlige Zweierpotenz ist (Funktion-Template) |