std::partition
は素晴らしいですが、インプレースです。 std::partition_copy
もうまくいきますが、2つの出力イテレータが必要です。つまり、同じ出力配列を使用する場合は、少なくとも述語を満たす要素の数を事前に数えなければなりません。アウトオブプレイスstd::partition
、または単一出力イテレータstd::partition_copy
が、<algorithm>
に存在しないのはなぜですか?おそらくstd :: partitionにアウトオブプレイスバリアントがないのはなぜですか?
答えて
機能がすでにいずれかによって達成することができるので:
- は元の容器をコピーし、その場で
partition
使用。 - 単一の宛先コンテナを正しいサイズにサイジングし、
begin()
とrbegin()
イテレータを使用して、前面から入力し、背面にpartition_copy
と入力します。
あなたの2番目の提案は、おそらく私には起こり得なかった巧妙な考えです。 –
どちらの提案も、組み合わせた操作よりも多くの時間を必要とします。最低でも入力全体をもう一度繰り返す必要があります。これは別の変種に匹敵する問題ではないでしょうか?また、 '
@einなぜ 'rbegin'ソリューションに問題がありますか?基本的にrbeginのやり方(要素を構成する出力イテレータを使用する)をしない、妥当なアウトオブパーティションを考えることはできません。アウトオブプレースのパーティションに書き込むには、2つの別々の場所が必要です。 – Yakk
- 1. std :: shared_ptrに[]演算子がないのはなぜですか?
- 2. なぜstd :: unique_ptrにstd :: shared_ptrのようなエイリアシングコンストラクタがないのですか?
- 3. std :: stoiとstd :: arrayがg ++でコンパイルされないのはなぜですか?
- 4. std :: listの演算子[]がないのはなぜですか?
- 5. std :: timed_mutex :: try_lock_forが機能しないのはなぜですか?
- 6. std :: stouがないのはなぜですか?
- 7. std :: on_exitがないのはなぜですか?
- 8. std :: protectがないのはなぜですか?
- 9. なぜstd :: pairにイテレータがないのですか?
- 10. std :: to_stringのstd :: stringのオーバーロードがなぜ発生しないのですか
- 11. なぜstd :: functionにfunction_typeまたは同等のメンバータイプがないのですか?
- 12. C++のstd :: weak_ptrにstd :: hashが定義されていないのはなぜですか?
- 13. なぜstd :: fstreamクラスはstd :: stringをとらないのですか?
- 14. `std`モジュールが宣言されていないのはなぜですか?
- 15. なぜstd :: copy_nはstd :: size_tではなくテンプレートパラメータを取るのですか?
- 16. なぜstd :: uncaught_exceptionをstd :: uncaught_exceptionsに変更するのですか?
- 17. std :: lockでタイムアウトがサポートされないのはなぜですか?
- 18. int型のstd :: numeric_limits :: digits10が1つ少ないのはなぜですか?
- 19. なぜstd :: map.begin()+ 1を実行できないのですか?
- 20. なぜstd :: bitset :: sizeが非staticなのですか
- 21. なぜstd :: functionインスタンスにデフォルトのコンストラクタがあるのですか?
- 22. std :: for_eachに似たreturn stateを生成しないのはなぜですか?
- 23. いつもstd :: forwardを使うのはなぜですか?
- 24. なぜstd :: array < T, 0 >が空でないのですか?
- 25. なぜstd :: count(_if)がsize_tではなくiterator :: difference_typeを返すのですか?
- 26. なぜstd :: chrono :: durationが秒に基づいているのですか
- 27. なぜOpenGLはstd :: vectorからオブジェクトを描画しないのですか?
- 28. なぜ、__cache_hash_codeは、std :: __ unordered_mapにのみ使用できますか?
- 29. なぜのstd ::マップが奇妙な動作しますか?
- 30. C++ 11:なぜstd :: condition_variableはstd :: unique_lockを使用しますか?
これはあなた自身のコピーと 'std :: partition'それに何の利点がありますか? – user2357112
@ user2357112:パフォーマンス?...しかし、私はあなたがパフォーマンスを気にするならば、まずは ' 'コードを使うべきではないと言えるでしょう。 –
einpoklum