Std:: deque: Как получить итератор, указывающий на элемент по указанному индексу?

У меня есть std:: deque, и я хочу вставить элемент по указанному индексу (я знаю, что std:: list будет лучше в этом). Функция deque:: insert() принимает итератор, чтобы указать место для вставки. Учитывая индекс, как я могу получить итератор, указывающий на это местоположение, чтобы я мог передать этот итератор для insert()?

Например:

void insertThing ( deque<Thing> & things, Thing thing, size_t index )
{
   deque<Thing>::iterator it = /* what do I do here? */
   things.insert ( it, thing );
}

Я уверен, что это очень простой вопрос, и я прошу прощения за это. Прошло много времени с тех пор, как я использовал STL, и я ничего не вижу в списке участников std:: deque, который явно делает то, что я хочу. Спасибо.

Ответ 1

void insertThing ( deque<Thing> & things, Thing thing, size_t index )
{
   deque<Thing>::iterator it = things.begin() + index;
   things.insert ( it, thing );
}

Ответ 2

Deque поддерживает произвольный доступ, поэтому вы должны быть в состоянии сказать

things.insert( my_deque.begin() + index, thing);