@blackglory/structures 0.10.21 → 0.10.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6238,7 +6238,7 @@
6238
6238
  }
6239
6239
 
6240
6240
  class BitSet {
6241
- constructor(bitsPerElement = 31) {
6241
+ constructor(bitsPerElement = 8) {
6242
6242
  this.bitsPerElement = bitsPerElement;
6243
6243
  this.array = [];
6244
6244
  this.length = 0;
@@ -6343,8 +6343,8 @@
6343
6343
  const bitsPerElement = array.BYTES_PER_ELEMENT * 8;
6344
6344
  es2018Exports$1.assert(Number.isInteger(bitsPerElement), 'The parameter bitsPerElement must be an integer');
6345
6345
  es2018Exports$1.assert(bitsPerElement > 0, 'The parameter bitsPerElement must be greater than 0');
6346
- // `32`是该数据结构中能够处理的最大值
6347
- es2018Exports$1.assert(bitsPerElement <= 32, 'The mask of bitsPerElement must be less than or equal to 32');
6346
+ // `31`是该数据结构中能够处理的最大值
6347
+ es2018Exports$1.assert(bitsPerElement <= 31, 'The mask of bitsPerElement must be less than or equal to 31');
6348
6348
  this.bitsPerElement = bitsPerElement;
6349
6349
  }
6350
6350
  get [Symbol.toStringTag]() {
@@ -6360,26 +6360,15 @@
6360
6360
  if (this.length > 0) {
6361
6361
  // maxArrayLength = Math.ceil(this.length / this.bitsPerElement)
6362
6362
  const maxArrayLength = ~~(this.length / this.bitsPerElement) + 1;
6363
- const remainder = this.bitsPerElement
6364
- - (maxArrayLength * this.bitsPerElement - this.length);
6365
- const lastIndex = maxArrayLength - 1;
6366
- for (let index = 0; index < lastIndex; index++) {
6363
+ for (let index = 0; index < maxArrayLength; index++) {
6367
6364
  let element = this.array.internalTypedArray[index];
6368
- for (let bit = 0; bit < this.bitsPerElement; bit++) {
6369
- // if (isOdd(element)) {
6370
- if (element % 2) {
6371
- yield index * this.bitsPerElement + bit;
6372
- }
6373
- element >>= 1;
6374
- }
6375
- }
6376
- let lastElement = this.array.internalTypedArray[maxArrayLength - 1];
6377
- for (let bit = 0; bit < remainder; bit++) {
6378
- // if (isOdd(lastElement)) {
6379
- if (lastElement % 2) {
6380
- yield lastIndex * this.bitsPerElement + bit;
6365
+ let offset = 0;
6366
+ let indexOfBit;
6367
+ while ((indexOfBit = trailingZeros(element)) !== 32) {
6368
+ yield index * this.bitsPerElement + offset + indexOfBit;
6369
+ offset += indexOfBit + 1;
6370
+ element >>= indexOfBit + 1;
6381
6371
  }
6382
- lastElement >>= 1;
6383
6372
  }
6384
6373
  }
6385
6374
  }