Initialisieren Sie std :: set effizient mit einer Folge von Zahlen

Ein naheliegender (naiver?) Ansatz wäre:

std::set<int> s;
for (int i = 0; i < SIZE; ++i) {
    s.insert(i);
}

Das ist einigermaßen lesbar, aber meines Wissens nicht optimal, da wiederholt nach der Einfügeposition gesucht wird und die Tatsache, dass die Eingabereihenfolge bereits sortiert ist, nicht ausgenutzt wird.

Gibt es eine elegantere / effizientere (oder eine de facto) Art der Initialisierung vonstd::set mit einer Folge von Zahlen?

Oder allgemeiner: Wie fügt man eine geordnete Liste von Einträgen effizient in eine Sammlung ein?

Aktualisieren:

Beim Durchsehen der Dokumente ist mir gerade der Konstruktor aufgefallen, der einen Iterator akzeptiert, um die Position für das Einfügen anzugeben:

iterator insert ( iterator position, const value_type& x );

Das heißt, dies wäre effizienter:

std::set<int> s;
std::set<int>::iterator it = s.begin();
for (int i = 0; i < SIZE; ++i) {
    it = s.insert(it, i);
}

Das sieht vernünftig aus, aber ich bin immer noch offen für weitere Vorschläge.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage