clase c++ stl stdset insert-iterator

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).