VecDeleteFast
Description
Delete the element at idx using the fast (order-not-preserving) path.
Parameters
| Name | Direction | Description |
|---|---|---|
v |
in,out | Vector handle. |
idx |
in | Position in [0, length). |
Success
Returns to the caller. The vector length shrinks by one; the previously-last element now occupies idx (when idx was not already the last index). When copy_deinit is configured it is invoked on the dropped element.
Failure
Function cannot fail. An out-of-range idx is a caller bug and aborts via LOG_FATAL.
Usage example (Cross-references)
Usage examples (Cross-references)
- In
VecCharPtr.c:464:
if (VecLen(vec) > 0 && *offset + 4 <= data_size) {
size_t index = extract_u32(data, offset, data_size) % VecLen(vec);
VecDeleteFast(vec, index);
}
break;- In
VecStr.c:441:
if (VecLen(vec) > 0 && *offset + 4 <= data_size) {
size_t index = extract_u32(data, offset, data_size) % VecLen(vec);
VecDeleteFast(vec, index);
}
break;- In
VecInt.c:382:
uint16_t idx = extract_u16(data, offset, data_size);
if (idx < VecLen(vec)) {
VecDeleteFast(vec, idx);
}
break;- In
Vec.Remove.c:175:
// Test VecDeleteFast function
bool test_vec_delete_fast(void) {
WriteFmtLn("Testing VecDeleteFast");
// Create a vector of integers
- In
Vec.Remove.c:192:
// Delete element at index 1 (value 20) using fast delete
VecDeleteFast(&vec, 1);
// Check new length
- In
Vec.Remove.c:467:
int valueToBeDeleted = VecAt(&vec, fast_index);
int lastValue = VecAt(&vec, VecLen(&vec) - 1); // Should move to deleted position
VecDeleteFast(&vec, fast_index);
// Print after state
- In
Vec.Remove.c:549:
// Test R-value fast delete operation
VecDeleteFast(&vec, 2);
// Print after state
// Test VecDeleteFast (fast delete)
// This replaces the deleted element with the last element
VecDeleteFast(&vec, 2); // Delete 30
// Check vector length after fast deletion
- In
Remove.h:106:
/// TAGS: Str, Delete, Fast, Unordered
///
#define StrDeleteFast(str, idx) VecDeleteFast((str), (idx))
///
Last updated on