c++ - clase - std set count
¿Hay alguna diferencia entre usar.begin() vs.end() para std:: inserter for std:: set? (2)
Desde http://www.sgi.com/tech/stl/insert_iterator.html
Sin embargo, en el caso de un contenedor asociativo ordenado, 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 que se insertan solo afecta la eficacia: la inserción de un rango ya ordenado en un contenedor asociativo ordenado es una operación O (N).
Si hay alguna diferencia entre it1 y it2?
std::set<sometype> s;
auto it1 = std::inserter(s, s.begin());
auto it2 = std::inserter(s, s.end());
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á un poco más rápido, pero eso es todo. std::insert_iterator
llama a insert
con el iterador; std::set
interpreta como una sugerencia, y se inserta en tiempo constante (en lugar de lg n) si la inserción está inmediatamente antes de la sugerencia. (En realidad, si el set
está vacío, creo que ambos harán exactamente lo mismo).