const std::vector<Point>& get_path() const {return path;}
// void set_path(const std::vector<Point>& v) {path = v;}
void set_path( std::vector<Point> v ) { using std::swap ; swap( path, v ) ; } // pass by value
// exception safe, and in certain kinds of usage, would be more efficient
// copy-and-swap idiom: https://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Copy-and-swaptemplate < typename ITERATOR> void set_path( ITERATOR begin, ITERATOR end ) { path = {begin,end} ; }
// more flexible; allows setting the path with any sequence of Point objects
// (for instance, to set the path from data in a file, the type ITERATOR could be std::istream_iterator<Point>)