Skip to content

MapCapacity

Description

Probe-table slot count: the size of the underlying open-addressed hash table, including occupied slots, tombstones, and empty slots. Grows with the policy’s next_capacity. Always >= MapPairCount(m).

Parameters

Name Direction Description
m in Map.

Usage example (Cross-references)

Usage examples (Cross-references)
    
        MapReserve(&map, 32);
        reserved_capacity = (size)MapCapacity(&map);
    
        MapInsertR(&map, 1, 10);
        MapClear(&map);
    
        bool result = (reserved_capacity >= 32) && (MapCapacity(&map) == reserved_capacity) && (MapTombstones(&map) == 0) &&
                      (MapPairCount(&map) == 0) && MapEmpty(&map) && !MapContainsKey(&map, 1) && !MapContainsKey(&map, 2);
        }
    
        result = result && (MapCapacity(&map) == 10);
        result = result && (MapPolicy(&map).next_capacity == custom_next_capacity);
                      (MapPolicy(&map).next_index == MapPolicyLinear.next_index) &&
                      (MapPolicy(&map).max_probe_count == MapPolicyLinear.max_probe_count) && (MapPairCount(&map) == 0) &&
                      (MapCapacity(&map) == 0) && (MapTombstones(&map) == 0) && MapEmpty(&map);
    
        MapDeinit(&map);
        // length must be unchanged, and capacity must grow to at least 64.
        result = MapReserve(&map, 64);
        result = result && (MapCapacity(&map) >= 64);
        result = result && (MapPairCount(&map) == 8);
        MapMustReserve(&map, 48);
    
        bool result = (MapCapacity(&map) >= 48) && (MapPairCount(&map) == 2);
        result      = result && MapGetFirstPtr(&map, 1) && (*MapGetFirstPtr(&map, 1) == 10);
        result      = result && MapGetFirstPtr(&map, 2) && (*MapGetFirstPtr(&map, 2) == 20);
    
        result = result && MapCompact(&map);
        result = result && (MapCapacity(&map) == 16);
    
        result = result && (MapPairCount(&map) == 6);
    
        MapInsertR(&map, 1, 10);
        bool result = (MapCapacity(&map) == 42);
    
        bool reserved = MapReserve(&map, 100);
        bool reserved = MapReserve(&map, 100);
        result        = result && reserved;
        result        = result && (MapCapacity(&map) >= 100);
    
        MapDeinit(&map);
            MapInsertR(&map, k, k);
    
        bool result = (MapCapacity(&map) == 16);
    
        MapDeinit(&map);
            MapInsertR(&map, k, k);
    
        bool result = (MapCapacity(&map) == 8);
    
        MapDeinit(&map);
        for (int k = 0; k < 8; k++)
            MapInsertR(&map, k, k * 100 + 3);
        bool result = (MapCapacity(&map) == 8) && (MapPairCount(&map) == 8);
    
        MapInsertR(&map, 8, 803); // probe budget exhausted -> recover with n = cap+1 = 9
        MapInsertR(&map, 8, 803); // probe budget exhausted -> recover with n = cap+1 = 9
    
        result = result && (MapCapacity(&map) == 16);
        result = result && (MapPairCount(&map) == 9);
        for (int k = 0; k < 9; k++)
        IntIntMap        map   = MapInit(i32_hash, i32_compare, &alloc);
    
        bool result = MapPairCount(&map) == 0 && MapCapacity(&map) == 0 && MapTombstones(&map) == 0 &&
                      MapEntries(&map) == NULL && MapStates(&map) == NULL && MapKeyCompare(&map) == i32_compare &&
                      MapValueCompare(&map) == NULL && MapKeyHash(&map) == i32_hash &&
Last updated on