Witajcie!
W celu poznania kontenerów, tworzę prosty projekt (aplikację konsolową do nauki słówek po ang metodą qwerty).
Mam taki dylemat. Gdy użytkownik będzie chciał się pouczyć słówek, wciśnie literę a, wywoła się metoda z klasy learn.
void learn::LearnVocabularyAngPol(map<string,string>temp)
for (auto it = temp.begin(); it != temp.end(); ++it)
{
string temp_pol, temp_ang;
cout << it->first << " - ";
cin >> temp_pol;
transform(temp_pol.begin(), temp_pol.end(), temp_pol.begin(), ::tolower);
temp_ang = it->second;
transform(temp_ang.begin(), temp_ang.end(), temp_ang.begin(), ::tolower);
if (temp_pol == temp_ang)
{
cout << "Prawidlowa odpowiedz." << endl;
}
else
{
cout << "Prawidlowa odpowiedz to: " << it->second<< endl;
}
}
Za każdym razem użytkownik będzie pytany o słówka w dokładnie tej samej kolejności co poprzednio. To trochę bez sensu.
Czy jest jakiś sposób by losowo przechodzić przez mapę bez powtórzeń?
Myślałem nad takim rozwiązaniem - osobna metoda, która stworzy mapę <int,map<string,string>::iterator> i dla wartości klucza będzie losowo dobierać iterator. Ale jak? :/ Siedzę i myślę i nic nie wymyśle... Macie jakieś pomysły?