Lecture Notes for CS 509, Advanced Programming II

21 November 2002, Overwriting-Inserting Iterators


Outline


Reading Puzzle Outlines


Reading Puzzle Points

typedef std::pair<double, double> point;
typedef std::vector<point> point_vec;

std::istream &
operator >> (std::istream & is, point & p) {
  double f, s;
  if (is >> f >> s)
    p = std::make_pair(f, s);
  return is;
  }

point_vec
read_puzzle_pts(std::istream & ins) {

  point_vec pts;

  std::copy(
    std::istream_iterator<point>(ins),
    std::istream_iterator<point>(),
    std::back_inserter(pts));

  return pts;
  }


Checking the Error Return

point_vec
read_puzzle_pts(std::istream & ins) {

  point_vec pts;

  std::copy(
    std::istream_iterator<point>(ins),
    std::istream_iterator<point>(),
    std::back_inserter(pts));

  if (!ins.eof()) {
    std::cout << "Bad puzzle outline.\n";
    exit(EXIT_FAILURE);
    }

  return pts;
  }


Setting The Error State


Reading Puzzle Solutions


Overwrite-Back Insert Iterators


The Overwrite-Back Insert Iterator Class


Constructors


Output Iterator Operators


The Assignment Operator


Helper Functions


Using Overwrite Iterators


Shrink to Fit


Trust No One


Points to Remember


This page last modified on 19 December 2002.