Będę starał się napisać jak najprościej. Jeśli zbyt prosto... nie bij :-)
Jak masz w wierszu 3 elementy to powinnaś się zastanowić według którego lub których będzie wykonywane wyszukiwanie. 3 dane tworzą rekord. Nie wiem jakie struktury już znasz jeśli chodzi o język C++. Dość że te 3 dane powinny być "połączone" w 1 agregat (czyli zespół danych).
Taki agregat możesz następnie umieścić w:
- tablicy - czego nie polecam bo możesz łatwo popełnić błąd :-)
- vector - to już lepiej
- map 'ie - struktura zawierająca klucz wskazujący na wartość. Automatycznie "się sortuje"
- unordered_map ' ie - tak jak wyżej ale nie jest posortowana więc ... jesz bardzo szybka :-)
Dla pierwszych 2 podpunktów, potencjalne wyszukiwanie będzie w czasie liniowym zależnym od ilości wpisów. Dla punktu 3 i 4 będzie to o wiele szybsze (dla 4 czas stały). Punkt 1 będzie obarczony również pewną uciążliwością związaną z rozmiarem. Jeśli nie przeczytasz całego pliku, nie wiesz jak duża ma być taka tablica. Chyba że... w 1 wierszu pliku umieścisz ilość rekordów :-)