¿Por qué usar funciones begin y end no miembro en C++11?
Cada contenedor estándar tiene un método begin
y end
para devolver iteradores para ese contenedor. Sin embargo, C++11 aparentemente ha introducido funciones libres llamadas std::begin
y std::end
que llaman a las funciones miembro begin
y end
. Así que, en lugar de escribir
auto i = v.begin();
auto e = v.end();
Escribirías {[15]]}
using std::begin;
using std::end;
auto i = begin(v);
auto e = end(v);
En su charla, Escribiendo C++moderno, Herb Sutter dice que siempre debe usar las funciones libres ahora cuando desee el iterador de inicio o fin para un contenedor. Sin embargo, él no entra en detalles sobre por qué usted querría hacerlo. Mirando el código, te salva a todos de un carácter. Por lo tanto, en lo que respecta a los contenedores estándar, las funciones libres parecen ser completamente inútiles. Herb Sutter indicó que había beneficios para los envases no estándar, pero de nuevo, no entró en detalles.
Entonces, la pregunta es qué hacen exactamente las versiones de función libre de std::begin
y std::end
más allá de llamar a su función miembro correspondiente versiones, ¿y por qué querrías usarlas?
Warning: Undefined property: agent_blog_content::$date_asked in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 32
Warning: Undefined property: agent_blog_content::$count_answers in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 52