G
Es ist mir ja selbst peinlich, aber es klappt einfach nicht.
multimap benötige ich, um die Zahlen aus einem Value zu speichern und aufsteigend zu sortieren.
in .h so deklariert
private:
std::multiset<double> museMedianParams;
in .cpp sieht es dann so aus
//Median: ist der mittlere Wert einer Zahlenreihe oder der Mittelwert der zwei mittleren Werte
for ( unsigned
u(0),
uEnd(vecParas[0].GetSize());
uEnd > u;
++u)
{ //for 1 auf
const double*
pdParam( vecParas[0].Get<double>(u)); //jeweiliger Wert von u
//museMedianParams.insert(3.); //zum probieren, ob multiset Werte einfügt
museMedianParams.insert(*pdParam); //übernimmt wert aus u
} //for 1 zu
museMedianParams.size(); //Anzahl der Paramerter mit .size, sollten derzeit 4 Testwerte sein (aus CValue Val1("n[7][3.][4][5]"));
//solange ich in der for-Schleife war, hatte ich die richtige Anzahl in Überwachte Ausdrücke,ab hier bekomme ich dann laufend ansteigende Werte ab 32 aufwärts (heul)
fmod(museMedianParams.size(),2.); //fmod um Rest zu berechnen
if(fmod(museMedianParams.size(),2.) == 0) //wenn Rest gleich null
{
//brauche ich den Mittelwert der beiden mittleren Werte
std::multiset<double>::iterator museIt; //Iterator bilden
museIt = museMedianParams.find(7.); //funktioniert
//museIt = museMedianParams.begin(); //funktioniert nicht
//[C++ Fehler] sfc_fun_Median.cpp(168): E2034 Konvertierung von '__rwstd::__rb_tree<double,double,__rwstd::__ident<double,double>,less<double>,allocator<double> >::const_iterator'
//nach '__rwstd::__rb_tree<double,double,__rwstd::__ident<double,double>,less<double>,allocator<double> >::iterator' nicht möglich
}
else if(fmod(museMedianParams.size(),2.) != 0) //wenn Rest nicht null
{
//brauche ich den mittleren Wert
}
return 0;
}
Ich kapiers einfach nicht, bekomme immer diese Warnung
C++ Warnung] sfc_fun_Median.cpp(150): W8037 Nicht-konstante Funktion multiset<double,less<double>,allocator<double> >::insert(const double &) für konstantes Objekt aufgerufen
oder Fehlermeldung nach dem kompilieren und linken
werde aus den Erklärungen, die ich so gefunden habe nicht wirklich schlau,
die Auskünfte hier sind auch nicht das wahre und außerdem klappt das mit dem Iterator auch nicht
Warum bekomme ich für mein museMedianParams.size() plötzlich 32,33,34 etc.?
Warum klappt zwar das: museIt = museMedianParams.find(7.);
aber das nicht: museIt = museMedianParams.begin(); ?
Sollte jemanden also irgendwas direkt anspringen, was hier nicht stimmt, bitte ich um Hilfe.