This is a full implementation on any type with given parameter.
template<typename T>
void TrimVector(vector<T>& vec, const T& _t)
{
auto end_index = find_if(vec.crbegin(), vec.crend(), [_t](const T& t) { return t != _t; } ).base();
vec.erase(end_index, vec.cend());
auto start_index = find_if(vec.cbegin(), vec.cend(), [_t](const T& t) { return t != _t; } );
vec.erase(vec.cbegin(), start_index);
}
to use it,
//TrimVector<int>(MyVec, 0);
//changed as suggested below,
TrimVector(MyVec,0);
TEST:
int main()
{
vector<int> myVec = { 0, 0, 0, 1, 2, 3, 56, 0, 2, 4, 0, 0 };
TrimVector(myVec, 0);
cout << "myVec:" << endl;
for (auto it = myVec.begin(); it != myVec.end(); ++it)
cout << "\t" << *it << endl;
return 0;
}