VecPushBackR

Table of Contents

VecPushBackR

Description

Push item into vector back.

Parameters

NameDirectionDescription
vin,outVector to push item into
rvalinr-value to be pushed back

Success

return

Failure

Does not return

Usage example (Cross-references)

    /// FAILURE : Returns `NULL` otherwise.
    ///
    #define StrPushBack(str, chr) VecPushBackR((str), (chr))
    
    ///
    int values[] = {10, 20, 30, 40, 50};
    for (int i = 0; i < 5; i++) {
    VecPushBackR(&vec, values[i]);
    }
    int values[] = {10, 20, 30, 40, 50};
    for (int i = 0; i < 5; i++) {
    VecPushBackR(&vec, values[i]);
    }
    int values[] = {10, 20, 30, 40, 50};
    for (int i = 0; i < 5; i++) {
    VecPushBackR(&vec, values[i]);
    }
    int values[] = {10, 20, 30, 40, 50};
    for (int i = 0; i < 5; i++) {
    VecPushBackR(&vec, values[i]);
    }
    int values[] = {10, 20, 30, 40, 50};
    for (int i = 0; i < 5; i++) {
    VecPushBackR(&vec, values[i]);
    }
    int values[] = {10, 20, 30, 40, 50};
    for (int i = 0; i < 5; i++) {
    VecPushBackR(&vec, values[i]);
    }
    int values[] = {10, 20, 30, 40, 50};
    for (int i = 0; i < 5; i++) {
    VecPushBackR(&vec, values[i]);
    }
    int values[] = {10, 20, 30, 40, 50};
    for (int i = 0; i < 5; i++) {
    VecPushBackR(&vec, values[i]);
    }
    
    // Add some data
    VecPushBackR(&vec, 10);
    VecPushBackR(&vec, 20);
    VecPushBackR(&vec, 30);
    // Add some data
    VecPushBackR(&vec, 10);
    VecPushBackR(&vec, 20);
    VecPushBackR(&vec, 30);
    VecPushBackR(&vec, 40);
    VecPushBackR(&vec, 10);
    VecPushBackR(&vec, 20);
    VecPushBackR(&vec, 30);
    VecPushBackR(&vec, 40);
    VecPushBackR(&vec, 50);
    VecPushBackR(&vec, 20);
    VecPushBackR(&vec, 30);
    VecPushBackR(&vec, 40);
    VecPushBackR(&vec, 50);
    VecPushBackR(&vec, 30);
    VecPushBackR(&vec, 40);
    VecPushBackR(&vec, 50);
    
    // Check values using VecAt
    
    // Add some data
    VecPushBackR(&vec, 10);
    VecPushBackR(&vec, 20);
    VecPushBackR(&vec, 30);
    // Add some data
    VecPushBackR(&vec, 10);
    VecPushBackR(&vec, 20);
    VecPushBackR(&vec, 30);
    VecPushBackR(&vec, 10);
    VecPushBackR(&vec, 20);
    VecPushBackR(&vec, 30);
    
    // Get pointers to elements
    
    // Add some data
    VecPushBackR(&vec, 10);
    VecPushBackR(&vec, 20);
    VecPushBackR(&vec, 30);
    // Add some data
    VecPushBackR(&vec, 10);
    VecPushBackR(&vec, 20);
    VecPushBackR(&vec, 30);
    VecPushBackR(&vec, 10);
    VecPushBackR(&vec, 20);
    VecPushBackR(&vec, 30);
    
    // Check first and last elements
    
    // Add some data
    VecPushBackR(&vec, 10);
    VecPushBackR(&vec, 20);
    VecPushBackR(&vec, 30);
    // Add some data
    VecPushBackR(&vec, 10);
    VecPushBackR(&vec, 20);
    VecPushBackR(&vec, 30);
    VecPushBackR(&vec, 10);
    VecPushBackR(&vec, 20);
    VecPushBackR(&vec, 30);
    
    // Get begin and end pointers
    
    // Add some data
    VecPushBackR(&vec, 10);
    VecPushBackR(&vec, 20);
    VecPushBackR(&vec, 30);
    // Add some data
    VecPushBackR(&vec, 10);
    VecPushBackR(&vec, 20);
    VecPushBackR(&vec, 30);
    VecPushBackR(&vec, 10);
    VecPushBackR(&vec, 20);
    VecPushBackR(&vec, 30);
    
    // Check size and length after adding elements
    
    // Add some data
    VecPushBackR(&aligned_vec, 10);
    VecPushBackR(&aligned_vec, 20);
    // Add some data
    VecPushBackR(&aligned_vec, 10);
    VecPushBackR(&aligned_vec, 20);
    
    // Check size and length with alignment
    int values[] = {10, 20, 30, 40, 50};
    for (int i = 0; i < 5; i++) {
    VecPushBackR(&vec, values[i]);
    }
    
    // Push some elements first
    VecPushBackR(&vec, 10);
    VecPushBackR(&vec, 20);
    // Push some elements first
    VecPushBackR(&vec, 10);
    VecPushBackR(&vec, 20);
    
    // Push an array at a specific index
    
    // Test R-value insert operations
    VecPushBackR(&vec, LVAL(42));
    
    // Check that the element was added
    int    merge_vals[] = {140, 150, 160};
    for (int i = 0; i < 3; i++) {
    VecPushBackR(&vec2, merge_vals[i]);
    }
    int values[] = {10, 20, 30, 40, 50};
    for (int i = 0; i < 5; i++) {
    VecPushBackR(&vec, values[i]);
    }
    int values[] = {10, 20, 30, 40, 50};
    for (int i = 0; i < 5; i++) {
    VecPushBackR(&vec, values[i]);
    }
    int values[] = {10, 20, 30, 40, 50};
    for (int i = 0; i < 5; i++) {
    VecPushBackR(&vec, values[i]);
    }
    int values[] = {10, 20, 30, 40, 50};
    for (int i = 0; i < 5; i++) {
    VecPushBackR(&vec, values[i]);
    }
    
    // Add the item to the vector
    VecPushBackR(&vec, item);
    
    // Check that the vector now has one item
    
    // Push items to the vector
    VecPushBackR(&vec, item1);
    VecPushFrontR(&vec, item2);
    VecPushBackR(&vec, item3);
    VecPushBackR(&vec, item1);
    VecPushFrontR(&vec, item2);
    VecPushBackR(&vec, item3);
    
    // Check vector length
    
    // Add item1 to the vector
    VecPushBackR(&vec, item1);
    
    // Insert item2 at index 0
    
    // Add items to vectors
    VecPushBackR(&vec1, item1);
    VecPushBackR(&vec2, item2);
    VecPushBackR(&vec2, item3);
    // Add items to vectors
    VecPushBackR(&vec1, item1);
    VecPushBackR(&vec2, item2);
    VecPushBackR(&vec2, item3);
    VecPushBackR(&vec1, item1);
    VecPushBackR(&vec2, item2);
    VecPushBackR(&vec2, item3);
    
    // Merge vec2 into vec1
    // Add some initial elements
    for (int i = 0; i < 5; i++) {
    VecPushBackR(&vec, i * 10);
    }
    // Add some initial elements
    for (int i = 0; i < 5; i++) {
    VecPushBackR(&vec2, i * 10);
    }
    
    // Test pushing to empty vector
    VecPushBackR(&vec, 10);
    bool result = (vec.length == 1 && VecAt(&vec, 0) == 10);
    const int large_count = 1000;
    for (int i = 0; i < large_count; i++) {
    VecPushBackR(&vec, i);
    }
    
    // Push an element (should auto-resize)
    VecPushBackR(&vec, 42);
    result = result && (vec.length == 1 && VecAt(&vec, 0) == 42);
    // Add some elements
    for (int i = 0; i < 5; i++) {
    VecPushBackR(&vec, i * 10);
    }
    // Add some elements
    for (int i = 0; i < 6; i++) {
    VecPushBackR(&vec, i * 20);
    }
    // Add several elements
    for (int i = 0; i < 6; i++) {
    VecPushBackR(&vec, i * 15);
    }
    // Add several elements
    for (int i = 0; i < 7; i++) {
    VecPushBackR(&vec, i * 25);
    }
    // Add several elements
    for (int i = 0; i < 8; i++) {
    VecPushBackR(&vec, i * 35);
    }
    // Add several elements
    for (int i = 0; i < 9; i++) {
    VecPushBackR(&vec, i * 45);
    }
    // Add several elements
    for (int i = 0; i < 5; i++) {
    VecPushBackR(&vec, i * 30);
    }
    
    // Add some data
    VecPushBackR(&vec, 10);
    VecPushBackR(&vec, 20);
    VecPushBackR(&vec, 30);
    // Add some data
    VecPushBackR(&vec, 10);
    VecPushBackR(&vec, 20);
    VecPushBackR(&vec, 30);
    VecPushBackR(&vec, 10);
    VecPushBackR(&vec, 20);
    VecPushBackR(&vec, 30);
    
    // Check that the data was added correctly
    item.id       = 1;
    item.value    = 3.14;
    VecPushBackR(&test_vec, item);
    
    // Check that the item was added correctly
    
    // Add some data
    VecPushBackR(&src, 1);
    VecPushBackR(&src, 2);
    VecPushBackR(&src, 3);
    // Add some data
    VecPushBackR(&src, 1);
    VecPushBackR(&src, 2);
    VecPushBackR(&src, 3);
    VecPushBackR(&src, 1);
    VecPushBackR(&src, 2);
    VecPushBackR(&src, 3);
    
    // Create a destination vector
    int values[] = {10, 20, 30, 40, 50};
    for (int i = 0; i < 5; i++) {
    VecPushBackR(&vec, values[i]);
    }
    int values[] = {10, 20, 30, 40, 50};
    for (int i = 0; i < 5; i++) {
    VecPushBackR(&vec, values[i]);
    }
    int even_values[] = {10, 20, 30, 40};
    for (int i = 0; i < 4; i++) {
    VecPushBackR(&vec, even_values[i]);
    }
    int values[] = {30, 10, 50, 20, 40};
    for (int i = 0; i < 5; i++) {
    VecPushBackR(&vec, values[i]);
    }

Share :