use list instead of vector
get_or_create returns iterator