Iteratoren als Key in Maps???
-
Hallo,
kan mir jemand erklären, warum folgender Code nicht funktioniert:
#include <iostream> #include <map> #include <list> using namespace std; map<list<int>::iterator,int> Var; void main() { list<int> li(10); list<int>::iterator ii=li.begin(); Var[li]=0; }
Fehler:
error C2679: Binärer Operator '[': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operator vom Typ 'std::list<_Ty>' akzeptiert (oder keine geeignete Konvertierung möglich)
with
[
_Ty=int
]Danke,
Chrissi
-
Var[ii] ...
-
Der Iterator heißt doch ii und nicht li.
Trotzdem gibts dann noch Fehler. Kann es sein das der Iterator keine Vergleichsfunktion hat?
-
nen != und nen == operator hat der iterator definitiv ....
Aber die map braucht nen < (lesser) , glaub kaum das den iterator hat ....Noch was zu deinem "Construct" ... also haett kein so gutes gefuehl, iteratoren in container zu pappen ... nen iterator kann ja durchaus mal ungueltig werden ....
Kanst du garantieren, das keiner nen sort / erase oder aehnliches auf deine liste macht, waehrend du die itratoren da haelst ...
wenn du garantieren kannst, das keiner da elemente rausnimmt und loescht, sortiert etc, warum arbeitest du nicht mit den zeigern direkt anstatt mit den iteratoren ?
Ciao ...