Q:

Is reassigning a std vector to default constructor vector a good way to erase?

There are so many questions and answers about clearing an std::vector and I'm wondering why, in all the ones I read, no one just says:
existingVector = std::vector<whatever>();
Is this not a simple way to clear a vector?

A:

It is indeed simple, but there is a simpler and more straightforward way: 
existingVector.clear();

You could also do:
existingVector.resize(0);

But I like the first approach as it does exactly what it says it does.
Similarly, I prefer checking if(myVec.empty()) instead of if(myVec.size() == 0)
Update: If you want a "true reset", i.e. you not only want the size to become 0 but also the capacity then there are a couple of things you could do.

shrink to fit
vec.clear();
vec.shrink_to_fit();

As the comments correctly point out though, shrink_to_fit, too, is a non-binding request which the compiler may ignore.

swap with a newly constructed vector
vector<whatever>().swap(vec);

A:

Assigning is okay, but an optimizing implementation may be allowed to hold on to the raw memory buffer, to avoid reallocation.
Conventional wisdom for forcefully freeing the vector, is "swapping with a temporary":
#include <vector>
#include <iostream>

int main() {

    std::vector<int> a(256);

    std::vector<int>().swap(a);

    std::cout << a.size() << " / " << a.capacity();

    return 0;
}

The above will always print 0 / <minimum_capacity_for_vec_impl> because the vectors must swap their internal buffers. The temporary is then immediately destroyed, freeing the memory along with it.

<minimum_capacity_for_vec_impl> Will usually be 0, since the default constructor is noexcept, and by that virtue shuoldn't do dynamic memory allocation. But Library implementors can be creative sometimes with their optimizations.

