//  remove3.cpp - Erase all the zero elements in a vector.
//                This is an effective method.  It is 
//                exactly what remove does.

#include <vector>
#include <iostream>
using namespace std;

void showVec(const vector<int> &v) {

  cout << "\n  ";
  int i;
  for(i=0; i<v.size()-1; i++)
    cout << v[i] << ", ";
  cout << v[v.size()-1] << "\n\n";

}

void main() {

  vector<int> v;
  v.push_back(5);
  v.push_back(1);
  v.push_back(0);
  v.push_back(-1);
  v.push_back(0);
  v.push_back(3);
  v.push_back(0);
  v.push_back(0);
  v.push_back(-4);
  v.push_back(0);
  showVec(v);

  vector<int>::iterator dest = v.begin();
  vector<int>::iterator src;
  for(src=v.begin(); src!=v.end(); src++)
    if(*src != 0)
      *dest++ = *src;
  v.erase(dest,v.end());
    
  showVec(v);
}


  5, 1, 0, -1, 0, 3, 0, 0, -4, 0


  5, 1, -1, 3, -4

