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;
}