- size_t i = idx / sizeof(uint32_t);
- size_t j = idx % sizeof(uint32_t);
- grow(allocforsize(idx+1));
- if (idx >= _size)
- _size = idx+1;
- uint32_t mask = 1 << j;
- if (b)
- _vector[i] |= mask;
- else
- _vector[i] &= ~mask;
+ size_t i = idx / W;
+ size_t j = idx % W;
+ grow(allocforsize(idx+1));
+ if (idx >= _size)
+ _size = idx+1;
+ uint32_t mask = 1 << (W - 1 - j);
+ if (b)
+ _vector[i] |= mask;
+ else
+ _vector[i] &= ~mask;
+}
+void bit_vector::set_le(size_t idx, bool b)
+{
+ size_t i = idx / W;
+ size_t j = idx % W;
+ grow(allocforsize(idx+1));
+ if (idx >= _size)
+ _size = idx+1;
+ uint32_t mask = 1 << j;
+ if (b)
+ _vector[i] |= mask;
+ else
+ _vector[i] &= ~mask;