// Singly-linked list container
#include <algorithm>
#include <iterator>
#include <iostream>
#include <ostream>
#include "slist.h"

int main()
{
  slist<int> sl;
  sl.push_front(10);
  sl.push_front(20);

  sl.insert(sl.begin(), 30);
  sl.insert(sl.end(), 40);
  std::copy(sl.begin(), sl.end(), std::ostream_iterator<int>(std::cout, "\n"));

  sl.erase(sl.begin());    // remove 30
  slist<int>::iterator i = sl.begin(); // points to 20
  ++i;                                 // points to 10
  sl.erase(i);                         // remove 10

  slist<int> s2;
  s2 = sl;
  std::copy(s2.begin(), s2.end(), std::ostream_iterator<int>(std::cout, "\n"));

  sl.erase(++sl.begin(), sl.end());
  sl.resize(4);
  std::cout << "size=" << sl.size() << '\n';
  std::copy(sl.begin(), sl.end(), std::ostream_iterator<int>(std::cout, "\n"));

  slist<char> x(3, 60);
  std::copy(x.begin(), x.end(), std::ostream_iterator<char>(std::cout, "\n"));

  slist<int>::const_iterator j(sl.begin());
}
