1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| /* La structure de 50 bytes */
struct Data
{
char[50] values;
};
class Buffer
{
public:
class Myiterator :public iterator <RandomAccessIterator, Data>
{
Data *p;
public:
myiterator(Data* x) :p(x) {}
myiterator(const myiterator& mit) : p(mit.p) {}
myiterator& operator++() {++p;return *this;}
myiterator& operator++(int) {p++;return *this;}
bool operator==(const myiterator& rhs) {return p==rhs.p;}
bool operator!=(const myiterator& rhs) {return p!=rhs.p;}
Data& operator*() {return *p;}
};
myiterator begin(){return buf[0]}
myiterator end(){return buf[lastutil+1];}
void readSection(size_t sectionNumber)
{
if(sectionNumber!=section) // on ne lit la section que si ce n'est
// pas celle qu'on a déjà lue avant
{
std::ifstream ifs(/* ouverture du ficher "classique" */);
/* on se place sur la bonne section et on lit */
}
}
private:
Data buf[1000];
size_t lastutil; // pour le cas où on n'a pas su lire les 1000 données
size_t section; // pour savoir quelle section a été lue
std::string filename; // pour pouvoir ouvrir le fichier
}; |