Search code examples
c++data-structuresbit-manipulationbitset

how to create an array of Bitset in c++


I want to create an array of Bitset .Binary Bitset(example "100","1010",etc) After that I want to input from user and store in the the Bitset . I have tried the following line but it says error.

#include<bits/stdc++> 
using namespace std;
int main() 
{ 
  int n,i;
  string bit_string; 
  cin>>n  // size of Bitset array.
  bitset<8> brr[n];//  
  for(i=0;i<n;i++)
  {
    cin>>bit_string;
    brr[i](bit_string);
  }



  return 0; 
}  

I want to create n Bitset each of size 8 bits.Where n is given by user. my input is binary string like. "110010","001110" please help


Solution

  • For dynamic count of the objects , Please try vector<> instead of array[]

    
    #include<bits/stdc++> 
    using namespace std;
    int main()
    {
        int n, i;
        string bit_string;
        cin >> n;  // size of Bitset array.
    
        vector<bitset<8>> arr;      //size()=>0
        arr.resize(n);      //size()=>n
    
        for (i = 0; i < n; i++)
        {
            cin >> bit_string;
            bitset<8>& br = arr[i]; //get the i of n
    
            int maxlen = 8;
            if (bit_string.size() <= 8)
                maxlen = bit_string.size();
            else
                cout << "warning invalid len " << bit_string.size() << " of " << bit_string << endl;
    
            for (int j = 0; j < maxlen; j++)
            {
                if (bit_string[j] == '1')
                    br.set(j, true);
            }
    
            //cout << endl << br << endl;   //output test
        }
    
        return 0;
    }
    

    If you still want to use array , please try this way

    
    #include<bits/stdc++> 
    using namespace std;
    int main()
    {
        int n, i;
        string bit_string;
        cin >> n;  // size of Bitset array.
    
        bitset<8>* arr = new bitset<8>[n];
    
        for (i = 0; i < n; i++)
        {
            cin >> bit_string;
            bitset<8>& br = arr[i]; //get the i of n
    
            int maxlen = 8;
            if (bit_string.size() <= 8)
                maxlen = bit_string.size();
            else
                cout << "warning invalid len " << bit_string.size() << " of " << bit_string << endl;
    
            for (int j = 0; j < maxlen; j++)
            {
                if (bit_string[j] == '1')
                    br.set(j, true);
            }
    
            //cout << endl << br << endl;   //output test
        }
    
        delete[] arr;   //IMPROTAND , delete the array and free memory
    
        return 0;
    }