Ran cppcheck sulla mia base di codice e ha ricevuto il seguente errore:Perché non posso usare l'operatore <on 'std :: deque'?
Dangerous iterator comparison using operator< on 'std::deque'.
Ma iteratore di una deque è un iteratore ad accesso casuale, e iteratori ad accesso casuale supportare gli operatori di disuguaglianza. Quindi cosa dà?
Esempio:
#include <deque>
int main()
{
std::deque<int> d;
std::deque<int>::iterator di1 = d.begin();
std::deque<int>::iterator di2 = d.end();
if (di1 < di2)
{
// (error) Dangerous iterator comparison using operator< on 'std::deque'.
}
return 0;
}
Edit: Questo bug è stato presentato e fissato tramite cppcheck ticket #5926.
assicurarsi che si sta confrontando due iteratori dallo stesso contenitore. Non so fino a che punto si trova cppcheck, quindi potrebbe sempre lamentarsi a causa di questa possibilità. – ghostofstandardspast
Mostrare la riga che attiva questo errore. – dasblinkenlight
Abbiamo bisogno di vedere il codice di esempio per rispondere alla domanda –