in der Standard-Map-Bibliothek C++, ein Aufruf an die Iterationsfunktionen gibt einen Iterator Zeiger,Warum werden Iteratoren als Wertobjekte notiert, aber als Zeiger referenziert?
std::map<int, int> map;
std::map<int, int>::iterator ite = map.find(1);
Aber, wenn der Iterator verwendet wird, es als eine Zeigervariable zugegriffen werden muss,
int first = ite->first;
int second = ite->second;
Warum ist das der Fall, wenn wir den erhaltenen Wert aus der find
-Funktion in einen Nicht-Zeiger setzen? Sollte nicht die korrekte Syntax sein:
std::map<int, int>::iterator *pIte = map.find(1)
oder wenn die ursprüngliche Syntax,
int first = ite.first;
int second = ite.second;
da wir Wert sind zu erhalten, und nicht einen Zeiger von der Rückgabewert der Funktion? Es ist auch nicht in der documentation geklärt. Warum ist das der Fall?
Iteratoren * Akt * als Zeiger, und in einigen Fällen sind Zeiger. Ihre vorgeschlagene Syntax ist ein Zeiger auf einen Iterator. – jaggedSpire
das gleiche haben Sie mit 'shared' und' unique_ptr' sie sind Objekte, die wie Zeiger, so dass dies beabsichtigt ist. – Hayt