# replace_copy_if **Description** : Copies elements from the range `[first, last)`, to another range beginning at `d_first`, replacing the elements which satisfy specific criteria by a `new_value`. **Example**: ```cpp auto isOdd = [](int i) { return ((i%2) == 1); }; std::vector origin {1, 2, 3, 4, 5}; std::vector destination; // Copy elements to destination replacing elements that return true for isOdd by 0 std::replace_copy_if(origin.begin(), //first origin.end(), //last std::back_inserter(destination), //d_first isOdd, //condition 0 //new_value ); // origin is still {1, 2, 3, 4, 5} for (auto value : origin) { std::cout << value << " "; } std::cout << std::endl; // destination is {0, 2, 0, 4, 0} for (auto value : destination) { std::cout << value << " "; } std::cout << std::endl; ``` **[See Sample code](../snippets/algorithm/replace_copy_if.cpp)** **[Run Code](https://rextester.com/ZAAX85552)**