How to filter a vector in-place with C++

1 Answer

0 votes
#include <iostream>
#include <vector>
#include <algorithm> // for std::remove_if

int main() {
    std::vector<int> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};

    // Define the condition
    // isEven: The name you're giving to the lambda, so you can call it later like a regular function
    /// [](int num) { ... }: The lambda function.
    auto isEven = [](int num) { return num % 2 == 0; };

    // Use std::remove_if to filter in-place
    auto newEnd = std::remove_if(numbers.begin(), numbers.end(), isEven);

    // Resize the vector to remove the "removed" elements
    numbers.erase(newEnd, numbers.end());

    // Print the filtered vector
    std::cout << "Filtered numbers: ";
    for (int num : numbers) {
        std::cout << num << " ";
    }
}



/*
run:

Filtered numbers: 1 3 5 7 9 11 

*/


 



answered Jul 13, 2025 by avibootz
...