Ciao di nuovo,
allora ho messo come dicevi tu la dichiarazione del metodo:
template <typename T>
struct MyArrayCompare {
bool operator()(const T& a, const T& b) {
// massimo indice confrontabile, se serve
std::size_t maxComparingSize = std::min(a.size(),b.size());
// implementazione del contronto tra array
// ad esempio.
return (a[0] < b[0]);
}
};
ho dichiarato globale la struttura map e un'array di tre elementi:
map< vector<int>,DataMsg,MyArrayCompare <vector<int> > > mp;
int current[3];
all'interno della procedura SaveMessage ora ho scritto:
void saveMessage(*packdata){
//inserisco gli elementi all'interno dell'array
current[0]=packdata->getCurrent(0);
current[1]=packdata->getCurrent(1);
current[2]=packdata->getCurrent(2);
//creo il vector come appunto mi avevi detto
vector<int> v1(¤t[0],¤t[3]);
//stampo gli elementi
for( map<vector<int>,DataMsg,MyArrayCompare <vector<int>>>::iterator ii=mp.begin(); ii!=mp.end(); ++ii){
cerr <<"Node datas into Hash : node "<<(*ii).first[0]<< "timestmp :" << (*ii).first[2] << " data :" << (*ii).second.getSd() << endl;
}
}
Quello che accade è che la stampa fa vedere ogni volta solo un elemento all'interno della struttura...o meglio i problemi rispetto a prima non sono per niente risolti, ho voluto fare una prova allora e ho tolto la parte relativa al confronto all'interno della struttura map e le cose funzionano o meglio inserisce tutti gli elementi che gli dico...la stampa infondo alla procedura saveMessage mi fa vedere tutti gli elementi che intendevo memorizzare
praticamente ho dichiarato il map in questo modo:
map< vector<int>,DataMsg> mp;
Secondo te ho sbagliato in pieno?
In teoria la parte relativa al confronto di chiave in un'hash map non ci sarebbe più?
Detto proprio sinceramente non riesco a capire quel terzo campo che prende la definizione di map..
Grazie Giuseppe