Some comments:
while a set of users is semantically correct, it is unnecessarily complex and loses order of in which users are added...vectors actually tend to be faster for small datasets as well
the locklists bit would probably be better off with a getCS and a scoped_lock to prevent missing unlocks (this needs fixing in the other parts of dc++ as well)
in transfer, I think there's a good reason why a copy of the user is returned, not a reference (probably a threading thing)...it can still be consitified when returning a copy (it's actually more correct that way)
Some comments:
while a set of users is semantically correct, it is unnecessarily complex and loses order of in which users are added...vectors actually tend to be faster for small datasets as well
the locklists bit would probably be better off with a getCS and a scoped_lock to prevent missing unlocks (this needs fixing in the other parts of dc++ as well)
in transfer, I think there's a good reason why a copy of the user is returned, not a reference (probably a threading thing)...it can still be consitified when returning a copy (it's actually more correct that way)