¿Hay una diferencia entre el uso.begin() y end() para std::inserción de std::set?
Si hay alguna diferencia entre it1 e it2?
std::set<sometype> s;
auto it1 = std::inserter(s, s.begin());
auto it2 = std::inserter(s, s.end());
2 answers
En la práctica, no mucho. Si está insertando un gran número de elementos ya en orden en un set
vacío, el segundo será algo más rápido, pero eso es todo. std::insert_iterator
llama a insert
con el iterador; std::set
lo interpreta como una pista, e inserta en tiempo constante (en lugar de lg n) si la inserción está inmediatamente antes de la pista. (En realidad, si el set
está vacío, creo que ambos harán exactamente lo mismo.)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-18 18:03:31
De http://www.sgi.com/tech/stl/insert_iterator.html
En el caso de un Contenedor Asociativo Ordenado, sin embargo, el iterador en el constructor insert_iterator es casi irrelevante. Los nuevos elementos no necesariamente formarán un rango contiguo; aparecerán en la ubicación apropiada en el contenedor, en orden ascendente por clave. El orden en el que se insertan solo afecta a la eficiencia: insertar un rango ya ordenado en un Contenedor Asociativo Ordenado es una operación O (N).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-29 10:41:19