10

我有一个 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 的成员列表中看不到任何明显符合我要求的内容。谢谢。

4

2 回答 2

22
void insertThing ( deque<Thing> & things, Thing thing, size_t index )
{
   deque<Thing>::iterator it = things.begin() + index;
   things.insert ( it, thing );
}
于 2010-04-09T15:22:07.493 回答
10

双端队列支持随机访问,所以你应该可以说

things.insert( my_deque.begin() + index, thing);
于 2010-04-09T15:23:21.683 回答