You can't and you don't need to "create names" on runtime. Instead (and that is every time you wish for a way to create names with numbers appended to them) you use an array (or vector).
In my example I showed some typedefs. The second one is for a vector of vectors of Points. The point of the typedefs is that they can shorted otherwise very long typenames. Instead you could also type:
Code:
std::vector<Point> one_path;
std::vector<std::vector<Point> > lots_of_paths;
You are right about how you would access the coordinates in a single path. In a collection of paths the syntax would be similar to two-dimensional arrays:
Code:
unsigned path_no = 10;
unsigned point_no = 12;
lots_of_paths[path_no][point_no].x = 42;
Or create a reference to a single path if we need to do lots of things with it:
Code:
std::vector<Point>& interesting_path = lots_of_paths[42];
interesting_path[10].y = 3;
//because interesting_path is a reference the last line affects
//lots_of_paths[42][10].y