Pour l'insertion de masse suivante, étant donné que les entrées sont ordonnées, y a-t-il de (légères) optimisations?STL Set: insérer deux millions de nombres ordonnés de la manière la plus efficace
set<int> primes;
for (int i = 2; i <= 2000000; i++) {
primes.insert(i);
}
// then follows Sieve of Eratosthenes algorithm
Nouvelle amélioration, deux fois plus vite:
set<int> primes;
for (int i = 2; i <= 2000000; i++) {
primes.insert(primes.end(), i);
}
// then follows Sieve of Eratosthenes algorithm
Mieux encore, ne mettez que les nombres premiers réels dans votre ensemble, plutôt que tous les nombres. – luke
@luke: La prochaine étape de son code ferait exactement cela. Ou filtrera au moins l'ensemble à seulement les nombres premiers. –
En outre, vous savez exactement quelle taille ce vecteur sera à la fin. Vous devez allouer une fois (via le constructeur) et pas plusieurs fois ce qui va vraiment nuire à la performance. – luke