Voglio mantenere un buffer di 5 secondi di dati del sensore. I dati del sensore comprendono, tra le altre cose, le letture dell'accelerometro nelle dimensioni x, y, z, le letture del giroscopio in dimensione x, y, z e il magnetometro nella dimensione x, y, z.
La mia idea iniziale è di utilizzare un std::deque<SensorReading>
che memorizza 5 secondi della seguente struttura di SensorReading:
struct SensorReading {
double time
gyroscope g;
accelerometer a;
magnetometer m;
//more substructs
} S;
Un'operazione comune sul buffer è che l'utente fornisce un tempo di inizio e di fine e vuole due iteratori che segnano la prima e l'ultima lettura del giroscopio (o magnetometro o accelerometro) entro questo intervallo di tempo dal buffer (deqeue). (A volte l'utente della lettura del giroscopio potrebbe anche essere interessato ai timestamp corrispondenti della struttura principale S.)
Nella mia mente ho l'idea di fornire una sorta di "vista" del buffer, che consente all'utente di vedere solo la sottostruttura a cui è interessato. Ma non ho un'idea chiara su come raggiungere questo obiettivo.
L'unica soluzione concettuale che ho finora è di introdurre Iteratori personalizzati alla deque, un magnetometro, un giroscopio, un acceleratore, un acceleratore e quindi esporre solo la corrispondente sottostruttura all'utente.
Non mi piace l'idea di mantenere più buffer, uno per ogni sottostruttura, perché aggiunge ridondanza al codice.
Quale sarebbe un modo per raggiungere questo obiettivo?