C++ Iterator zum Index konvertieren

UeB

Admiral Special
Mitglied seit
25.05.2002
Beiträge
1.084
Renomée
3
Standort
Stuttgart
Konkret habe ich 2 vectoren:
Code:
	vector<Real> AB(3);
	vector<Real> absAB(3); //holds the absolut values of AB
	
	AB[0] = 2*dRho2;
	AB[1] = 2*dRho2/3.0 + dRho1/3.0;
	AB[2] = 2*dRho1;
	
	absAB[0] = abs( AB[0] );
	absAB[1] = abs( AB[1] );
	absAB[2] = abs( AB[2] );
dann such ich mir die Stelle an der das kleinste Element in absAB steht:

Code:
vector<Real>::const_iterator locOfMin = min_element( absAB.begin(), absAB.end() );
nun will ich das Element aus AB und nicht absAB das an der gleichen Stelle im vector steht wie das min_element aus absAB.

aber dazu sollte ich ja den index wissen der nun dem interator locOfMIn entpricht...

Falls ich das ganze falsch angehe:
was ich eigentlich will, ist die Zahl in AB finden, die den kleinsten Abstand zur 0 hat OHNE, dass ihr Vorzeichen verlohren geht.

danke!
 
Zuletzt bearbeitet:
Am einfachsten könnte es so sein:
PHP:
bool myCompare (Real& r1, Real& r2)
{
  // falls Real ein Double wäre, ginge es so, ggf. nächste Codezeile anpassen
  // fabs liefert den Absolutwert
  return fabs(r1) < fabs(r2);
}

vector<Real>::const_iterator locOfMin = min_element( AB.begin(), AB.end(), myCompare);
Obiger Code sollte das Minimum des Absolutwertes des Vektors AB finden. Es kann aber sein, dass man da noch feilen muss, ich habe bei der Funktion noch nie eine compare-Funktion benutzt und jetzt auch nicht ausprobiert. Falls das Maximum gefunden wird, den Vergleich in myCompare umdrehen.
 
Zuletzt bearbeitet:
Zurück
Oben Unten