According to the documentation (http://www.cplusplus.com/reference/algorithm/remove/), "The function cannot alter the properties of the object containing the range of elements (i.e., it cannot alter the size of an array or a container): The removal is done by replacing the elements that compare equal to val by the next element that does not, and signaling the new size of the shortened range by returning an iterator to the element that should be considered its new past-the-end element".
The right way to do it can be found here: How to remove certain characters from a string in C++?
Note that myvector.erase (myvector.begin()+a,myvector.begin()+b); removes indexes a,a+1,a+2,...,b-1 from myvector (a <= b).
On the other hand, myvector.remove (myvector.begin(),myvector.end(), 'c'); returns the new end iterator of the "correct" myvector without occurrences of 'c'. So, you can assign the returned iterator to an iterator variable like the solution in the link above, then the old start iterator through that iterator variable will be your new "correct" vector.