getSignature() returns an object which means expression like:
className = it->getSignature().mPlayerClassName;
assigns a temporary object to className that does not outlive the statement.
Having className a string view such code leads to a dangling pointer.
Return a reference from getSignature to save on redundant copying.
Change getSignature implementation to make it visible that it finds a maximum
element.
Do not call getSignature multiple times when possible to avoid seaching for the
same max element multiple times.