私は、ベクトルの内容全体をC++のキューにコピーしようとしています。これは組み込み関数ですか、それとも各要素をループするのは自然でしょうか?ベクトル全体をどのようにしてキューにコピーできますか?
答えて
あなたは新しいキューを作成する場合は、コンストラクタを使用することができますすでにキュー場合
std::vector<int> v = get_vector();
std::queue<long int, std::deque<long int>> q(std::deque<long int>(v.begin(),
v.end()));
(deque
はおそらく最高ですが、あなたは、味に根本的なコンテナを変更することができます。)
を存在している、何の範囲ベースのアルゴリズムはありません、しかし、あなたは簡単に独自のを書くことができます:余談として
template <typename Iter, typename Q>
push_range(Q & q, Iter begin, Iter end)
{
for (; begin != end; ++begin)
q.push(*begin);
}
:あなたのアルゴリズムはflexibiの量を必要とする場合あなたはおそらく最初にstd::deque
を使用したほうがよいでしょう。コンテナアダプタ(queue
とstack
)は、「これは必要な動作です」(プッシュ/ポップ)と明示的に言う場合にのみ使用してください。
OPは 'deque'ではなく' queue'について尋ねています。 –
一般的なアルゴリズムでは、コードを3行長くしても、高価なコピーを潜在的に(この場合はIter :: value_typeに依存して)避けるので、常に++開始から 'begin ++ 'を優先します。 –
@BjörnPollex:いいえ、同じ行数:-)もう一度おねがいします! –
次のようにキューのコンストラクタは次のとおりです。
explicit queue (const Container& ctnr = Container());
だから、あなたには、いくつかのベクトルvを持って、それからキューを構築することができます。
vector<int> v;
deque<int> d;
/* some random magic code goes here */
queue<int, deque<int>> q(d(v));
ただし、既に初期化されたqのpush_back要素にはこれを実行できません。別のコンテナを使用し、キューを空にし、そのコンテナにベクターを追加し、そのベクトルから新しいキューを作成することができます。しかし、私はそれをすべてやっているのではなく、繰り返します。
最終回答:いいえ、キューに実装されているメソッドはありません。ベクターをデクエートまたは反復処理することができます。
おそらく最も良い方法は、要素をキューに直接プッシュすることです。あなたは、アダプタ(Insert into an STL queue using std::copy)でキューをラップする必要があるため
でもSTDを使用してstd::vector<T> v;
...
std::queue<T> q;
for (const auto& e: v)
q.push(e)
::コピーが面倒です。
真実ですが、何が必要なのかによって異なります。私はベクトルを与えられた状況を持っていたので、それを待ち行列に入れたいと思っていました(実際に要素を削除せずにpopメソッドが必要でした)。また、私は要素をコピーしたくない(ミリ秒ごとに)。このような状況では、引数として与えられたベクトルをとる独自の単純なキューを単純に実装するほうがはるかに簡単です。残りは自明です。 –
- 1. ディスプレイ全体をどのようにミラーリングできますか?
- 2. キュー全体をコピーしていますか?<T>演算子「=」スレッドセーフ(C#)
- 3. githubからリポジトリ全体をどのように取得できますか?
- 4. Eclipse 3.4(Ganymede)でソースツリー全体をどのようにフォーマットできますか?
- 5. どのようにしてループなしでベクトルを乗算できますか?
- 6. C++:ポインタのベクトルを完全にコピー
- 7. iPhone Reachability - アプリ全体でどのように使用できますか?
- 8. テーブル全体をどのように伸ばすのですか?
- 9. Ruby on Rails:ssl_required:アプリ全体でどのように有効にしますか?
- 10. Railsアプリケーション全体をコピー&ペーストできますか?
- 11. Rデータフレーム全体でどのように表を作成しますか?
- 12. 構造体のベクトルを持つ構造体のベクトルのベクトルを構築できますか? (はい、実際に)
- 13. ペアの空のベクトルを別のベクトルにどのように戻しますか?
- 14. どのように行列を固有ベクトルでベクトル化しますか?
- 15. ディレクトリ全体をコピーする
- 16. どのように私はPHPでtarantoolのキューを使用できますか?
- 17. HBaseはどのようにしてMapReduceの新しいリージョンをクラスタ全体に配布しますか?
- 18. プロセス全体のシングルトンオブジェクトはどのように作成しますか?
- 19. 単体テストGCはどのようにしてできますか?
- 20. QT:reject()アプリケーション全体を閉じますか?どうして?
- 21. ファイル全体でどのように列選択を行うことができますか?
- 22. Pythonでは、どのようにしてマルチプロセスにキューを送ることができますか。
- 23. ベクトルをベースマップマップ投影にどのように回転できますか?
- 24. .resxリソースファイルはどのように単体テストできますか?
- 25. C#コンソールアプリケーションのコマンドライン全体を、入力時にどのように読むことができますか?
- 26. ディレクトリ全体を出力フォルダにコピーし、フォルダ構造を維持しますか?
- 27. phingでディレクトリ全体をコピーする
- 28. どのように私はPHPのサイクルから全体の配列を送ることができますか?
- 29. どのようにファイルとフォルダツリーをリモートマシンにコピーしますか?
- 30. 参照ベクトルを使用して構造体を作成するにはどうすればよいですか?
関連する質問を参照してください:http://stackoverflow.com/questions/1723515/insert-into-an-stl-queue-using-stdcopy – yairchu
'std :: vector'と' std :: queue '?もしそうでなければ 'std :: deque'を使います。 –