Originariamente inviato da gulpgiulia
...allora,
io ho esattamente copiato il codice che hai inserito nel precedente post, e lo ho incollato tra la definizione della struttura coordinate e il main. In questo modo non ricevo piu' errori di compilazione. Quindi, OK. (Anche se continuo a non capire cosa esattamente stiamo facendo inserendo questo operatore...)
Ma non sono sicura che stia funzionando... perche' non sono sicura di saper usare correttamente la mappa...
La mia intenzione e' riempire la mappa con il contenuto di un file in lettura, e se provo a stampare i valori della mappa trovo invece solo 0.00
La classe std::map ha bisogno di chiavi per cui sia definito l'operatore "<" (e te l'ha detto il compilatore in fase di compilazione). E' un operatore matematico che restituisce true se il primo argomento è minore del secondo.
Il compilatore purtroppo non può minimamente immaginare quale valore restituire per una chiave che tu hai definito. Perciò il criterio lo devi definire tu (come ho scritto nel commento del codice che ti ho postato).
Evidentemente il criterio dovrà essere matematicamente sensato, ad esempio se a < b restituisce true, evidentemente b < a deve restituire false. Se, come hai detto, hai semplicemente copia/incollato il codice che ti ho postato, allora si cade nel paradosso che il primo argomento è sempre minore del secondo. Ovvero a < b ma anche b < a.
Evidentemente la cosa non è gradita alla std::map e purtroppo non viene emesso alcun errore di compilazione.

Tuttavia, trovare un criterio per l'operatore "<", che abbia senso matematicamente parlando non mi pare molto complicato, ad esempio potresti fare il confronto tra la somma delle coordinate, oppure la lunghezza (magari al quadrato, così eviti una radice quadrata) del vettore matematico individuato dalle coordinate.