Joghurt
30-05-2005, 19:04
Hallo.
Ich habe folgendes Problem: Ich habe eine map, die ich als Ringliste darstellen will. Beispiel:
Die map<int,FOO> enthalte:
M[-24], M[-22], M[5], M[40]
Jetzt muss ich auf das nächste bzw. vorherige Element zugreifen können. Soweit kein Problem: (--M.find(-22))->second liefert mir M[-24]. Jetzt soll aber (--M.find(-24))->second M[40] zurückgeben. Ich möchte nach Möglichkeit vermeiden, immer
it = M.find(x);
if (it == M.begin())
it = M.end();
--it; schreiben zu müssen. Gibt es eine Möglichkeit die Iteratoren anzupassen, ohne alles Wrappen zu müssen? So in der Art
// Pseudocode
class NeuMap : public map<int,FOO>
{
public:
iterator& iterator::operator--();
}?
Ich habe folgendes Problem: Ich habe eine map, die ich als Ringliste darstellen will. Beispiel:
Die map<int,FOO> enthalte:
M[-24], M[-22], M[5], M[40]
Jetzt muss ich auf das nächste bzw. vorherige Element zugreifen können. Soweit kein Problem: (--M.find(-22))->second liefert mir M[-24]. Jetzt soll aber (--M.find(-24))->second M[40] zurückgeben. Ich möchte nach Möglichkeit vermeiden, immer
it = M.find(x);
if (it == M.begin())
it = M.end();
--it; schreiben zu müssen. Gibt es eine Möglichkeit die Iteratoren anzupassen, ohne alles Wrappen zu müssen? So in der Art
// Pseudocode
class NeuMap : public map<int,FOO>
{
public:
iterator& iterator::operator--();
}?