Vorrei trovare una struttura efficiente (velocità e volume) per memorizzare i nodi e il loro vicinato.
Il mio input è formato da punture nel seguente formato
./X/Y.log
dove X ∈ [0,359] e Y ∈ [0,169] e ciascuna coppia di ( X, Y ) hanno definito le coordinate di cella su una griglia della dimensione [170x360].
Vorrei trovare quali celle sono vicine (sopra, sotto, destra e sinistra), al massimo 4 possibilità e memorizzare queste informazioni (coordinate e direzione). La struttura, in cui verranno archiviate le informazioni, non deve contenere informazioni duplicate (ad esempio, la cella (50,50) è vicina alla cella (51,50) dal lato sinistro, ma la cella (51,50) è anche vicina alla cella (50,50) dal lato destro. Dovrebbe essere memorizzato solo uno di questi ".
Un'informazione aggiuntiva, il numero di stringhe di input (formato ./ X / Y.log ) non è più del 5% della quantità totale di celle possibili (360 * 170 = 61200 celle possibili ).
Quale struttura di archiviazione dovrei essere all'altezza del mio problema? (Il codice dovrebbe essere scritto in C ++)