std :: deque: как получить итератор, указывающий на элемент по указанному индексу? - PullRequest
10 голосов
/ 09 апреля 2010

У меня есть 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 ]

22 голосов
/ 09 апреля 2010
void insertThing ( deque<Thing> & things, Thing thing, size_t index )
{
   deque<Thing>::iterator it = things.begin() + index;
   things.insert ( it, thing );
}
10 голосов
/ 09 апреля 2010

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

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