To erase elements from STL containers, you'll need to use the erase-remove idiom: http://en.wikipedia.org/wiki/Erase-remove_idiom
bool is_even(int n) { return 0 == n % 2; }
int main()
{
...
v.erase(std::remove_if(v.begin(), v.end(), is_even), v.end());
...
}
To remove any value (just not multiples of 2), you can use function objects, or functors.
class is_multiple_of
{
int m_div;
public:
is_multiple_of(int div) : m_div(div) {}
bool operator()(int n) { return 0 == n % m_div; }
};
And to use it:
v.erase(std::remove_if(v.begin(), v.end(), is_multiple_of(3)), v.end());
v.erase(std::remove_if(v.begin(), v.end(), is_multiple_of(5)), v.end());