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, который, очевидно, делает то, что я хочу. Спасибо.

2 ответов


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

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

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