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

dequeはランダムアクセスをサポートしているので、次のように言うことができます。

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