Untitled
unknown
plain_text
11 hours ago
950 B
65
Indexable
#pragma once #include<cstddef> #include<cstdint> #include <cmath> #include <iostream> typedef unsigned char uchar_t; template<int bufferSize, size_t boolNum> class BoolArray { private: uchar_t m_buffer[bufferSize]; uint16_t sizeOfLastBuffer = 0; void initializeBuffer() { for(uchar_t c : m_buffer) c = 0; } public: BoolArray(bool* boolArray) { initializeBuffer(); sizeOfLastBuffer = boolNum % 8; // initialize all the bytes for (size_t i = 0; i < boolNum; i++) { // calculate the desired buffer int desiredBuffer = std::ceil(i / 8) - 1; // Apply bit at desired location m_buffer[desiredBuffer] |= boolArray[i] << i; } } // debug functions void print() { for (uchar_t c : m_buffer) { std::cout << (int)(c); } } void printLastBufferSize () { std::cout << sizeOfLastBuffer; } void printBoolNum() { std::cout << boolNum; } };
Editor is loading...
Leave a Comment