Conjunto de bits XOR cuando el conjunto de bits 2D se almacena como 1D

Contestar¿Cómo almacenar datos binarios cuando solo te importa la velocidad?, Estoy tratando de escribir algunos para hacer comparaciones, así que quiero usarstd::bitset. Sin embargo, para una comparación justa, me gustaría un 1Dstd::bitset para emular un 2D.

Entonces, en lugar de tener:

bitset<3> b1(string("010"));
bitset<3> b2(string("111"));

Me gustaría usar:

bitset<2 * 3> b1(string("010111"));

para optimizar la localidad de datos. Sin embargo, ahora estoy teniendo problemas con¿Cómo debo almacenar y calcular la distancia de Hamming entre códigos binarios?, como se ve en mi ejemplo mínimo:

#include <vector>
#include <iostream>
#include <random>
#include <cmath>
#include <numeric>
#include <bitset>

int main()
{
    const int N = 1000000;
    const int D = 100;
    unsigned int hamming_dist[N] = {0};
    std::bitset<D> q;
    for(int i = 0; i < D; ++i)
        q[i] = 1;

    std::bitset<N * D> v;
    for(int i = 0; i < N; ++i)
        for(int j = 0; j < D; ++j)
            v[j + i * D] = 1;


    for(int i = 0; i < N; ++i)
        hamming_dist[i] += (v[i * D] ^ q).count();

    std::cout << "hamming_distance = " << hamming_dist[0] << "\n";

    return 0;
}

El error:

Georgioss-MacBook-Pro:bit gsamaras$ g++ -Wall bitset.cpp -o bitset
bitset.cpp:24:32: error: invalid operands to binary expression ('reference' (aka
      '__bit_reference<std::__1::__bitset<1562500, 100000000> >') and
      'std::bitset<D>')
                hamming_dist[i] += (v[i * D] ^ q).count();
                                    ~~~~~~~~ ^ ~
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/bitset:1096:1: note: 
      candidate template ignored: could not match 'bitset' against
      '__bit_reference'
operator^(const bitset<_Size>& __x, const bitset<_Size>& __y) _NOEXCEPT
^
1 error generated.

que ocurre porque no sabe cuándo parar! ¿Cómo puedo decirle que se detenga después de procesar bits D?

Quiero decir sin usar un 2Destructura de datos.

Respuestas a la pregunta(1)

Su respuesta a la pregunta