Dynamic Bitsets in GCC

Revision en2, by bitset, 2024-05-13 22:28:59

Hello sirs, you might know that Boost has a dynamic_bitset class, but did you know that GCC also has it? Turns out it's included in the tr2 folder. You can simply include <tr2/dynamic_bitset>, and use it as tr2::dynamic_bitset.

The implementation seems identical to Boost's dynamic bitset, so you can read the full docs here. You can view the source here.

Comparing to std::bitset, here are some notable things I saw: - They include more set operations, such as set difference, and checking if a bitset is a subset of another bitset. - They include lexicographical comparisons between bitsets. - You can append single bits, as well as whole blocks (i.e. integers) - You can also resize it like a vector. - Find first and find next are also supported, without weird function names like std::bitset. Unfortunately, there's still no find previous :(

Of course, it also has all the std::bitset functionality. I'm not sure how good the performance is for this, so you can let me know in the comments.

Tags bitset, gcc, boost

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en22 English bitset 2024-06-12 19:17:27 150 Tiny change: 'gain when it's on Codef' -> 'gain when the fix is on Codef'
en21 English bitset 2024-06-08 23:19:49 50 (published)
en20 English bitset 2024-06-08 23:19:28 11
en19 English bitset 2024-06-08 23:12:35 272 Tiny change: '1157481). \n\nI'll keep ' -> '1157481). I'll keep ' (saved to drafts)
en18 English bitset 2024-05-13 23:50:33 0 (published)
en17 English bitset 2024-05-13 23:45:34 3 Tiny change: 'ames like std::bits' -> 'ames like in std::bits'
en16 English bitset 2024-05-13 23:42:07 1 Tiny change: 'difference and check' -> 'difference, and check'
en15 English bitset 2024-05-13 23:41:38 1 Tiny change: 'difference, and check' -> 'difference and check'
en14 English bitset 2024-05-13 23:39:11 7 Tiny change: 's all the std::bits' -> 's all the normal std::bits'
en13 English bitset 2024-05-13 23:37:23 17
en12 English bitset 2024-05-13 23:35:34 18
en11 English bitset 2024-05-13 23:31:33 14 Tiny change: 'mentation seems ide' -> 'mentation of the bitset seems ide'
en10 English bitset 2024-05-13 23:30:22 9 Tiny change: ' to use a max sized bit' -> ' to use a constant sized bit'
en9 English bitset 2024-05-13 23:29:46 21 Tiny change: 'er>\n\nIn problems with test cases, we migh' -> 'er>\n\nIn some problems, we migh'
en8 English bitset 2024-05-13 23:26:19 59 Tiny change: '] content.' -> '] content.\n\nThanks [user:qmk] for helping with the blog.'
en7 English bitset 2024-05-13 23:19:28 395 Tiny change: '260853192]).\n\n\nT' -> '260853192], original [submission:217308610]).\n\n\nT'
en6 English bitset 2024-05-13 23:04:10 751 Tiny change: 'main() {\n cin.tie(0)' -> 'main() {\n cin.tie(0)'
en5 English bitset 2024-05-13 22:52:28 71
en4 English bitset 2024-05-13 22:39:57 278 Tiny change: 's I saw:\n- They i' -> 's I saw:\n\n- They i'
en3 English bitset 2024-05-13 22:30:54 54
en2 English bitset 2024-05-13 22:28:59 325
en1 English bitset 2024-05-13 22:24:34 908 Initial revision (saved to drafts)