![]() SourcePro C++ 12.0 |
SourcePro® C++ API Reference Guide |
SourcePro C++ Documentation Home |
Parameterized bit vector of fixed length. More...
#include <rw/tbitvec.h>
Public Member Functions | |
| RWTBitVec () | |
| RWTBitVec (bool val) | |
| RWTBitVec (const RWTBitVec< N > &v) | |
| RWTBitVec< N > & | operator= (const RWTBitVec< N > &v) |
| RWTBitVec< N > & | operator= (bool val) |
| RWTBitVec< N > & | operator&= (const RWTBitVec< N > &v) |
| RWTBitVec< N > & | operator^= (const RWTBitVec< N > &v) |
| RWTBitVec< N > & | operator|= (const RWTBitVec< N > &v) |
| RWBitRef | operator[] (size_t i) |
| RWBitRef | operator() (size_t i) |
| bool | operator== (bool b) const |
| bool | operator!= (bool b) const |
| bool | operator== (const RWTBitVec< N > &v) const |
| bool | operator< (const RWTBitVec< N > &v) const |
| bool | operator!= (const RWTBitVec< N > &v) const |
| RWTBitVec< N > | operator& (const RWTBitVec< N > &v2) const |
| RWTBitVec< N > | operator^ (const RWTBitVec< N > &v2) const |
| RWTBitVec< N > | operator| (const RWTBitVec< N > &v2) const |
| void | clearBit (size_t i) |
| const RWByte * | data () const |
| void | setBit (size_t i) |
| bool | testBit (size_t i) const |
| size_t | firstTrue () const |
| size_t | firstFalse () const |
RWTBitVec<Size> is a parameterized bit vector of fixed length Size. Unlike class RWBitVec, its length cannot be changed at runtime. The advantage of RWTBitVec is its smaller size, and one less level of indirection, resulting in a slight speed advantage.
Bits are numbered from 0 through Size-1, inclusive.
The copy constructor and assignment operator use copy semantics.
#include <rw/tbitvec.h> RWTBitVec<22> // A 22 bit long vector
None
In this example, two 8-bit vectors are exercised:
#include <rw/tbitvec.h> #include <iostream> const size_t VECSIZE = 8; int main () { RWTBitVec<VECSIZE> a, b; // Allocate two vectors. a(2) = true; // Set bit 2 (the third bit) of a on. b(3) = true; // Set bit 3 (the fourth bit) of b on. RWTBitVec<VECSIZE> c = a ^ b; // Set c to the XOR of a and b. std::cout << "V1" << "\t" << "V2" << "\t" << "V1 XOR V2" << std::endl; for(size_t i = 0; i < VECSIZE; i++) { std::cout << a[i] << "\t" << b[i] << "\t" << c[i] << "\n"; } return 0; }
Program output:
V1 V2 V1 XOR V2 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0
Constructs an instance with all bits set to false.
Constructs an instance with all bits set to val.
Constructs a copy of v.
| void RWTBitVec< N >::clearBit | ( | size_t | i | ) | [inline] |
Clears (i.e., sets to false) the bit with index i. The index i must be between 0 and Size-1. No bounds checking is performed. The following two lines are equivalent, although using clearBit(size_t) is slightly smaller and faster than using operator()(size_t):
a(i) = false; a.clearBit(i);
Returns a const pointer to the raw data of self.
| size_t RWTBitVec< N >::firstFalse | ( | ) | const [inline] |
Returns the index of the first OFF (false) bit in self. Returns RW_NPOS if there is no OFF bit.
| size_t RWTBitVec< N >::firstTrue | ( | ) | const [inline] |
Returns the index of the first ON (true) bit in self. Returns RW_NPOS if there is no ON bit.
Returns true if any bit of self is not set to the same value as the corresponding bit in v. Otherwise, returns false.
| bool RWTBitVec< N >::operator!= | ( | bool | b | ) | const [inline] |
Returns true if any bit of self is not set to the value b. Otherwise, returns false.
| RWTBitVec<N> RWTBitVec< N >::operator& | ( | const RWTBitVec< N > & | v2 | ) | const [inline] |
Returns the logical AND of self and v2.
Logical assignments. Sets each bit of self to the logical AND of self and the corresponding bit in v.
Returns a reference to the ith bit of self. This reference can be used as an lvalue. The index i must be between 0 and Size-1, inclusive. No bounds checking is performed.
Returns true if self is logically less than v. Otherwise, returns false.
RWTBitVec<2> v1, v2; v1.setBit(0); // the value 1 in binary v2.setBit(1); // the value 2 in binary assert (v1 < v2); // 1 is less than 2
Sets all bits in self to the value val.
Sets self to a copy of v.
Returns true if each bit of self is set to the same value as the corresponding bit in v. Otherwise, returns false.
| bool RWTBitVec< N >::operator== | ( | bool | b | ) | const |
Returns true if every bit of self is set to the value b. Otherwise, returns false.
Returns a reference to the i th bit of self. This reference can be used as an lvalue.
| RWBoundsErr | thrown if index i is not between 0 and Size-1, inclusive. |
| RWTBitVec<N> RWTBitVec< N >::operator^ | ( | const RWTBitVec< N > & | v2 | ) | const [inline] |
Returns the logical XOR of self and v2.
Logical assignments. Sets each bit of self to the logical XOR of self and the corresponding bit in v.
| RWTBitVec<N> RWTBitVec< N >::operator| | ( | const RWTBitVec< N > & | v2 | ) | const [inline] |
Returns the logical OR of self and v2.
Logical assignments. Sets each bit of self to the logical OR of self and the corresponding bit in v.
| void RWTBitVec< N >::setBit | ( | size_t | i | ) | [inline] |
Sets (i.e., sets to true) the bit with index i. The index i must be between 0 and Size-1. No bounds checking is performed. The following two lines are equivalent, although using setBit(size_t) is slightly smaller and faster than using operator()(size_t).
a(i) = true; a.setBit(i);
| bool RWTBitVec< N >::testBit | ( | size_t | i | ) | const [inline] |
Tests the bit with index i. The index i must be between 0 and Size-1. No bounds checking is performed. The following are equivalent, although using testBit(size_t) is slightly smaller and faster than using operator()(size_t):
if( a(i) ) doSomething(); if( a.testBit(i) ) doSomething();
© Copyright Rogue Wave Software, Inc. All Rights Reserved.
Rogue Wave and SourcePro are registered trademarks of Rogue Wave Software, Inc. in the United States and other countries. All other trademarks are the property of their respective owners.
Contact Rogue Wave about documentation or support issues.