Cześć,
mam taka strukturę:
struct sStudent {
public:
//atrubuty
string imie;
string nazwisko;
int rok_urodzenia;
vector<pair<string, float>> oceny;
//metody
void pobierz();
void pobierz_oceny(vector<sStudent> studenci);
void wyswietl();
void wyswietl_oceny();
sStudent zwroc();
};
i mam
vector <sStudent> studenci;
metoda
void sStudent::pobierz_oceny(vector<sStudent> studenci);
raczej jest poprawna.
Problem leży w linijce gdzie do iteratora "itr" (który potem pozwoli mi przypisać oceny za pomocą funkcji "pobierz_oceny" do odpowiedniego studenta z vectora "studenci") chcę przypisać wartość zwracaną przez funkcje find(). Wiem już, że find() działa tylko dla typów wbudowanych, a nie do stworzonych struktur, ale w takim razie jak zapisać pierwszy i drugi argument funkcji find() aby odnieść się do przeszukiwania vectora stringów "nazwisko" jako atrybutów struktur "student". Próbowałem napisać również swoją funkcję która by rozwiązywała problem, nie posługując się algorytmami STL-a , ale jedyne co moja funkcja zdołała ustalić to to czy student o wprowadzonym nazwisku istnieje w vectorze "studenci", nie potrafiła zwrócić iteratora vektorowego do tego studenta.
oto fragment kodu:
cout << "Podaj nazwisko studenta, ktorego oceny chcesz wprowadzic" << endl;
string nazwisko;
cin.ignore();
getline(cin, nazwisko);
vector<sStudent>::iterator itr;
itr = find(studenci.begin(), studenci.end(), nazwisko); // tutaj jest blad
system("cls");
if (itr == studenci.end()) { cout << "Blad wprowadzania, nie istniejacy student" << endl; system("pause"); system("cls"); break; }
else { cout << "Student znaleziony" << endl; }
itr->pobierz_oceny(studenci);