MapUniqueKeyCount
Description
Number of distinct keys stored in the multimap. Walks the slot table once to count canonical probe-anchor slots, so this is O(capacity) – prefer MapPairCount when total pair count is enough.
Parameters
| Name | Direction | Description |
|---|---|---|
m |
in | Map. |
Success
Returns the count of distinct keys present. The map is not modified.
Failure
Cannot fail. LOG_FATAL via ValidateMap(m) when m is uninitialised or corrupted.
Usage example (Cross-references)
Usage examples (Cross-references)
- In
Ops.c:139:
result = result && MapContainsPair(&first, 2, 20);
result = result && (MapPairCount(&first) == 2);
result = result && (MapUniqueKeyCount(&first) == 2);
MapSwap(&first, &second);- In
Ops.c:223:
result = result && !MapContainsKey(&map, 2);
result = result && (MapPairCount(&map) == 2);
result = result && (MapUniqueKeyCount(&map) == 2);
MapDeinit(&map);- In
Ops.c:260:
result = result && (MapValueCountForKey(&map, 2) == 2);
result = result && (MapPairCount(&map) == 3);
result = result && (MapUniqueKeyCount(&map) == 2);
MapDeinit(&map);- In
Access.c:161:
result = result && (MapValueCountForKey(&map, 9) == 1);
result = result && (MapValueCountForKey(&map, 8) == 0);
result = result && (MapUniqueKeyCount(&map) == 2);
MapDeinit(&map);- In
Access.c:226:
result = result && !MapContainsPair(&map, 7, 0); // map_contains_pair early-out
result = result && (MapValueCountForKey(&map, 7) == 0); // map_value_count early-out
result = result && (MapUniqueKeyCount(&map) == 0);
result = result && (MapPairCount(&map) == 0);- In
Access.c:352:
MapInsertR(&map, k, k * 100 + 7);
bool result = (MapPairCount(&map) == 8) && (MapUniqueKeyCount(&map) == 8);
for (int k = 0; k < 8; k++) {
int *v = MapGetFirstPtr(&map, k);- In
Access.c:399:
MapInsertR(&map, k, k * 100 + 7);
bool result = (MapPairCount(&map) == KEY_COUNT) && (MapUniqueKeyCount(&map) == KEY_COUNT);
// Lookup: every inserted key must return ITS OWN value, not a neighbour's.
- In
Access.c:416:
// Count dropped by exactly one; the removed key is gone.
result = result && (MapPairCount(&map) == (KEY_COUNT - 1));
result = result && (MapUniqueKeyCount(&map) == (KEY_COUNT - 1));
result = result && !MapContainsKey(&map, removed) && (MapGetFirstPtr(&map, removed) == NULL);
Last updated on