VecDeleteRangeFast
Description
Delete count elements starting at start using the fast (order-not-preserving) path.
Parameters
| Name | Direction | Description |
|---|---|---|
v |
in,out | Vector handle. |
start |
in | First deleted index. |
count |
in | Number of elements to delete. |
Success
Returns to the caller. The vector length shrinks by count; [start, start + count) is populated by elements pulled from the tail (no defined order). When copy_deinit is configured it is invoked on each dropped element.
Failure
Function cannot fail. start + count exceeding length is a caller bug and aborts via LOG_FATAL.
Usage example (Cross-references)
Usage examples (Cross-references)
- In
VecCharPtr.c:297:
size_t index = extract_u32(data, offset, data_size) % VecLen(vec);
size_t count = extract_u32(data, offset, data_size) % (VecLen(vec) - index + 1);
VecDeleteRangeFast(vec, index, count);
}
break;- In
VecStr.c:303:
size_t index = extract_u32(data, offset, data_size) % VecLen(vec);
size_t count = extract_u32(data, offset, data_size) % (VecLen(vec) - index + 1);
VecDeleteRangeFast(vec, index, count);
}
break;- In
VecInt.c:257:
uint64_t len = VecLen(vec);
if (len > 0 && start < len && count > 0 && start + count <= len) {
VecDeleteRangeFast(vec, start, count);
}
break;- In
Vec.Remove.c:248:
// Test VecDeleteRangeFast
bool test_vec_delete_range_fast(void) {
WriteFmtLn("Testing VecDeleteRangeFast");
// Create a vector of integers
- In
Vec.Remove.c:280:
}
VecDeleteRangeFast(&vec, start_index, count);
// Print after state
- In
Vec.Remove.c:699:
int fast_start = 2;
int fast_count = 3;
VecDeleteRangeFast(&vec, fast_start, fast_count);
// Print after state
- In
Vec.Remove.c:776:
// Test R-value fast delete range operation
VecDeleteRangeFast(&vec, 2, 3);
// Print after state
// Test VecDeleteRangeFast (fast delete range)
VecDeleteRangeFast(&vec, 0, 2); // Delete 10 and 20
// Check vector length after fast range deletion
- In
Remove.h:115:
/// TAGS: Str, Delete, Range, Fast, Unordered
///
#define StrDeleteRangeFast(str, start, count) VecDeleteRangeFast((str), (start), (count))
#ifdef __cplusplus
Last updated on