Come descritto nella risposta da Chad, il tuo ciclo for itera sopra il vostro vector
, utilizzando i suoi iteratori begin
e end
. Questo è il comportamento della sintassi del colon :
.
quanto riguarda la tua const auto &
sintassi: si dovrebbe immaginare che il codice viene fuori di esso:
// "i" is an iterator
const auto& ioDev = *i;
L'espressione *i
è (un riferimento a) il tipo di elementi nel contenitore: Device *
. Questo è il tipo dedotto di auto
. Perché devi const &
allegato al vostro auto
, la variabile ioDev
è un const
riferimento al tipo dedotta (un puntatore), come se fosse dichiarato in questo modo:
const Device *& ioDev = *i;
Sembra inutilmente complicato; se avete bisogno di iterazione solo normale (e non ad esempio manipolare l'indirizzo del puntatore, che credo sia altamente improbabile), utilizzare una pianura non modificata auto
:
for (auto ioDev : deviceList)
o un tipo esplicito:
for (Device* ioDev : deviceList)
Google "C++ auto" e "range-based for". – emlai