Praktyczna uwaga - nie powinieneś nazywać tablicy imion jako "Nazwiska". Poprawną nazwą jest "imiona". Mała/Wielka litera jest w nazwach również istotnym aspektem. W konwencji C/C++ zmienne powinny rozpoczynać się małą literą. Duża litera zarezerwowana jest dla nazw klas, struktur, typów numerowanych, etc. Dobrze, że nazwy zmiennych opisują to co reprezentują. Użycie znanych skrótów (w tym przykładzie "j". "k" jako zmienne iterowane) jest również dobrą praktyką. Więcej szczegółów znajdziesz np. tutaj
Kod: Zaznacz cały
https://google.github.io/styleguide/cppguide.html#Naming
. Dodatkowo - nie jest to pisana reguła, ale - zwykle pisząc w C++ posługujemy się nazwami angielskimi. Jeżeli nie znasz dobrze tego języka, pozostań przy polskich nazwach, ale miej na uwadze to, że duża część zasobów z którymi się spotkasz przy nauce programowania będzie po angielsku.
Co do problemu zasadniczego.
W bazach danych istnieje pojęcie atrybutu kluczowego, od którego zależą wszystkie pozostałe atrybuty w relacji (tabeli). Oznacza to, że na podstawie atrybutu kluczowego jesteś w stanie określić wartość wszystkich innych parametrów. Takim atrybutem może być na przykład numer PESEL. Jeden pesel przypisany jest do jednego człowieka i wszystkich związanych z nim atrybutów. Na podstawie PESELu możemy podać jego imię, nazwisko, datę urodzenia, numer buta... w Twojej bazie danych takiego atrybutu prawdopodobnie nie ma.
W praktyce, projektując bazę danych, nie wykorzystujemy atrybutów mających swoje odzwierciedlenie w rzeczywistości. Dużo wygodniej jest użyć atrybutu "sztucznego", np. "identyfikator". Jeżeli chcesz, żeby twoja baza danych przypominała prawdziwe, relacyjne bazy danych, to taki atrybut powinien być jednym z pól klasy reprezentującej jedną osobę.
Z drugiej strony obiekt, jest samodzielną instancją reprezentującą wszystkie cechy tego obiektu. W związku z tym można go wykorzystać jako identyfikator danej osoby.
Zatem rozwiązania Twojego problemu są trzy. Powyżej zostały opisane dwa pierwsze. Trzecie to rozwiązanie, które doraźnie rozwiązuje Twój problem nie wprowadzając pojęcia identyfikatora.
Rozwiązanie pierwsze: sortowanie według nie zwraca tablicy nazwisk, a tablicę identyfikatorów,
Rozwiązanie drugie: sortowanie według nazwisk nie zwraca tablicy nazwisk, a tablicę obiektów (to rozwiązanie zostało zaproponowane powyżej, z tym że, zamiast tablicy wykorzystywana jest stl'owa lista),
Rozwiązanie trzecie: w linii 14 ("wewnątrz ifa") Twojego kodu wpisz linijkę o treći
.
Zobaczysz wtedy dlaczego użycie imienia jako identyfikatora jest złym pomysłem.