2015-07-03 6 views

risposta

24

begin restituirà un iterator o un const_iterator a seconda della const-qualification dell'oggetto su cui è chiamato.

cbegin restituirà un const_iterator incondizionatamente.

std::vector<int> vec; 
const std::vector<int> const_vec; 

vec.begin(); //iterator 
vec.cbegin(); //const_iterator 

const_vec.begin(); //const_iterator 
const_vec.cbegin(); //const_iterator 
+0

Questo è tutto? Quindi, in effetti, abbiamo due funzioni che si comportano completamente allo stesso modo su oggetti const ... Ha un senso solo di significato? – user3663882

+0

Sì, capisco, ha un senso. Grazie. – user3663882

+0

È per la flessibilità. Se sai che hai bisogno di un 'const_iterator', chiama' cbegin'. Se sai che hai bisogno di un 'iteratore', chiama' begin' e riceverai un errore se non è valido. Se non ti interessa, chiama 'begin'. – TartanLlama