std::erase, std::erase_if are placed in the headers of containers for which they're overloaded: std::erase_if(std::vector) placed in <vector>, std::erase_if(std::list) placed in list, etc.
P.S. While reading a book part on standard library algorithms author didn't mention this, so I assumed erase and erase_if were in <algorithm> header - that's false.