Ciao
Ho cercato su google e sul forum, ma non sono riuscita a trovare risposta. Ovunque si dice che in una map la key puo' essere di qualsiasi tipo (quindi, anche una coppia di numeri, magari organizzata come struct o come array di due elementi?) ma non ho trovato esempi e i miei tentativi di realizzare quello che cerco producono solo errori...
In breve. In un file in lettura, ho un elenco di valori i j value, cioe' a ogni coppia i j corrisponde un value. Vorrei creare una mappa e ho provato con una struttura:
codice:
// STRUTTURA
struct coordinate
{
int index_i;
int index_j;
};
// MAPPA
map<coordinate,double> value;
// LETTURA
while (!input.eof())
{
input>>ii>>jj>>x;
coordinate coppia;
coppia.index_i=ii;
coppia.index_j=jj;
value[coppia]=x;
}
Ma non va! Orribili errori di compilazione!
/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/bits/stl_function.h: In member function `bool std::less<_Tp>:
perator()(const _Tp&, const _Tp&) const [with _Tp = coordinate]':
/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/bits/stl_tree.h:1156: instantiated from `typename std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::lower_bound(const _Key&) [with _Key = coordinate, _Val = std:
air<const coordinate, double>, _KeyOfValue = std::_Select1st<std:
air<const coordinate, double> >, _Compare = std::less<coordinate>, _Alloc = std::allocator<std:
air<const coordinate, double> >]'
/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/bits/stl_map.h:540: instantiated from `typename std::_Rb_tree<_Key, std:
air<const _Key, _Tp>, std::_Select1st<std:
air<const _Key, _Tp> >, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::lower_bound(const _Key&) [with _Key = coordinate, _Tp = double, _Compare = std::less<coordinate>, _Alloc = std::allocator<std:
air<const coordinate, double> >]'
/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/bits/stl_map.h:336: instantiated from `_Tp& std::map<_Key, _Tp, _Compare, _Alloc>:
perator[](const _Key&) [with _Key = coordinate, _Tp = double, _Compare = std::less<coordinate>, _Alloc = std::allocator<std:
air<const coordinates, double> >]'
ComputeAcpulse.cpp:82: instantiated from here
/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/bits/stl_function.h:227: error: no match for 'operator<' in '__x < __y'
Exit 1
Dove sbaglio?
Cosa suggerite?