Attention, ceci n'est pas du C++, c'est du C.
Pour éviter les temps de latence, utiliser mmap est effectivement la meilleure solution. (Sous unix: man mmap. Sous windows, ça fonctionne avec une autre API). Ca te permet de considérer que le fichier est tout entier en mémoire, et c'est l'OS et le CPU qui font le reste (tu économises énormément de copies entre l'OS et ton appli, et ça t'évites de passer du temps CPU dans les APIS de fread(), etc.)
Et comme le dit el muchacho, pre-stocker les positions de début de chaque ligne, c'est franchement pas con (pas dans une hash-map: plutôt un simple tableau linéaire qui te donne l'offset (l'équivalent de ftell() ) de chaque début de ligne, ou même de chaque ligne paire, ou chaque ligne sur 5, etc. Après, avec une recherche dichotomique de base, tu as tout ce que tu veux (où un indexage direct si le temps est représenté de façon linéaire dans ton fichier)...
De longues explications Sous Windows : http://msdn.microsoft.com/library/ [...] namemo.asp
Message édité par Lam's le 18-09-2004 à 09:59:04