Эффективно инициализировать std :: set с помощью последовательности чисел

Очевидный (наивный?) Подход будет:

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

Это разумно читаемо, но, насколько я понимаю, не оптимально, поскольку включает в себя многократный поиск позиции вставки и не использует тот факт, что входная последовательность уже отсортирована.

Есть ли более элегантный / эффективный (или де-факто) способ инициализацииstd::set с последовательностью чисел?

Или, в более общем смысле, как эффективно вставить упорядоченный список записей в коллекцию?

Update:

Просматривая документы, я только что заметил конструктор, который принимает итератор для указания позиции для вставки:

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

Что означает, что это будет более эффективным:

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

Это выглядит разумно, но я по-прежнему открыт для новых предложений.

Ответы на вопрос(4)

Ваш ответ на вопрос