Mi è stata fatta questa domanda che non so davvero perché.In C++, perché non possiamo confrontare gli iteratori usando> e <?
Se si dispone di un puntatore int * x;
È possibile confrontare i puntatori con >
e <
perché sta per la cosa posizione memoria come 0x0000 0x0004 0x0008
, ecc So iteratori e puntatori sono diversi, ma si comportano in modo molto simile.
Ad esempio:
vector<int> myVector;
for(int i = 1; i < 101; i++)
{
myVector.push_back(i);
}
vector<int>::iterator it = myVector.begin();
while(it != myVector.end()) //Why can't we write it < myVector.end()
{
cout << *it << endl;
it++;
}
Perché non possiamo scriverlo < myVector.end()
nella dichiarazione while
? So che ha a che fare senza sovraccaricare in STL. Tuttavia, scrivere &*it < &*myVector.end()
funziona perché ottiene la posizione di memoria che rivela dire 0x0004 0x0008
, ecc.
Perché è questo?
[Cosa intendi?] (Http: //coliru.stacked-crooked.com/a/4b5dfc7353b93dc6) – LogicStuff
Relazionato anche: [Perché è meglio usare '! = "di' <'in un loop vettoriale? (C++)] (http://stackoverflow.com/questions/871666/why-is -i-meglio-da-usare-di-in-un-vettore-ciclo-c) – iammilind
Attenzione, puoi usare '<' su due puntatori _ allo stesso array_, ma non su puntatori non collegati – MSalters