VecInsertR
- Macro
- October 8, 2025
Table of Contents
VecInsertR
VecInsertR
Description
Insert an r-value
into vector of it’s type. Insertion index must not exceed vector length. This preserves the ordering of elements. Best to be used with sorted vectors, if the sorted property is to be preserved. In worst case this would to to O(n)
Parameters
Name | Direction | Description |
---|---|---|
v | in,out | Vector to insert item into |
rval | in | r-value to be inserted |
idx | in | Index to insert item at. |
Usage example (from documentation)
// the data
int x = 10;
int y = 20;
// vector
Vec(int) integers = VecInit();
// insert items
VecInsertR(&integers, x, 0); // x inserted at position 0
VecInsertR(&integers, y, 0); // x shifted one position and y is inserted
VecInsertR(&integers, 5, 1); // x shifted one position and 5 is inserted at index 1
Success
return
Failure
Does not return
Usage example (Cross-references)
// Insert item2 at index 0
VecInsertR(&vec, item2, 0);
// Insert item3 in the middle
// Insert item3 in the middle
VecInsertR(&vec, item3, 1);
// Check vector length
// Test inserting at end index
VecInsertR(&vec, 20, vec.length);
result = result && (vec.length == 2 && VecAt(&vec, 1) == 20);
- In
Vec.Insert.c:87
:
// Insert at index 0 (empty vector)
VecInsertR(&vec, 10, 0);
// Check first element
- In
Vec.Insert.c:93
:
// Insert at the end
VecInsertR(&vec, 30, 1);
// Check elements
- In
Vec.Insert.c:99
:
// Insert in the middle
VecInsertR(&vec, 20, 1);
// Check all elements
- In
Vec.Insert.c:329
:
// Test R-value insert at index
VecInsertR(&vec, LVAL(50), 1);
// Check that the element was inserted
- In
Insert.h:619
:
/// FAILURE : Does not return
///
#define VecPushBackR(v, val) VecInsertR((v), (val), (v)->length)
///
- In
Insert.h:656
:
/// FAILURE : Does not return
///
#define VecPushFrontR(v, val) VecInsertR((v), (val), 0)
///
- In
Insert.h:27
:
/// FAILURE : Returns `NULL` otherwise.
///
#define StrInsertCharAt(str, chr, idx) VecInsertR((str), (chr), (idx))
///