and get an Iterator to the beginning of the match by
matches->at(i)->begin()
How can I get the relative position of the match within the entire target string (i.e. "Unseen University", where, in this case, the positions should be 0 and 7)??
You would have to store your original string in a string variable, or at least store a pointer to it in a pointer variable, and keep it around so you can call distance() or substract the pointers later. Or you could have your regex-matching function calculate these positions and return them.
BTW, "new std::vector" is kinda crazy. Why don't you just make your function return a vector of strings (or strings, position pairs if you like?)