問題タブ [stl-algorithm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - std::copyを使用して任意の数の値を読み取る方法は?
私はこれと反対の行動をコード化しようとしています:
次のようになります。
しかし、私は 'end' イテレータに固執しています。入力インターレータは std::advance を使用できず、同じソースで 2 つのストリームを使用することもできません...
これを解決するエレガントな方法はありますか? もちろん、for ループを使用することもできますが、もっといいものがあるかもしれません :)
c++ - STLセットで静的とメンバーのfindメソッドを使用していますか?
セットなどのソートされたコンテナーのクイックルックアッププロパティを使用したいので、セットを使用しています。並べ替えられたコンテナーの利点を得るためにメンバーの検索メソッドを使用する必要があるのか 、それとも STL アルゴリズムで静的検索メソッドを使用できるのか疑問に思っています。
私の推測では、静的バージョンを使用すると、私が望むようにバイナリ検索ではなく線形検索が使用されるということです。
c++ - STL アルゴリズムでのローカル クラスの使用
なぜローカルに定義されたクラスを STL アルゴリズムの述語として使用できないのか、私はずっと疑問に思っていました。
質問: Approaching STL algorithms, lambda, local classes and other approachで、BubbaT は「C++ 標準ではローカル型を引数として使用することを禁止しているため」と述べています。
コード例:
標準のどこに制限があるか知っている人はいますか? ローカル型を許可しない理由は何ですか?
EDIT : C++11 以降、ローカル型をテンプレート引数として使用することは合法です。
c++ - std キューが swap メソッドの特殊化を定義しないのはなぜですか?
私は、すべての stl コンテナーがスワップ アルゴリズムの特殊化を提供して、コピー コンストラクターと、既定のメソッドが使用する 2 つの代入操作の呼び出しを回避することを読みました。ただし、作業中のコードでキューを使用すると便利だと思ったとき、(ベクターやデキューとは異なり) キューがこのメソッドを提供していないことに気付きました。キューの代わりに両端キューを使用することに決めましたが、それでもその理由を知りたいですか?
c++ - STLベクトルreserve()およびcopy()
ご挨拶、
次の2行の短縮コードを使用して、あるベクトル(vec1)から別のベクトル(vec2)へのコピーを実行しようとしています(完全なテストアプリが続きます)。
vec2の呼び出しはベクトルvec2の容量を設定しますが、vec2へのデータのコピーはvec1からvec2への値を入力しないようです。
copy()関数をpush_back()の呼び出しに置き換えると、期待どおりに機能します。
ここで何が欠けていますか?
ご協力いただきありがとうございます。vectest.cppテストプログラムとそれに続く結果の出力は次のとおりです。
コンパイラ:cygwin上のgcc3.4.4。
ナット
出力:
c++ - for_eachを使用したベクトル内の各要素の2乗の合計
for_eachで受け入れられる関数は、1つのパラメーター(ベクトルの要素)のみを受け取るためstatic int sum = 0
、for_eachを呼び出した後にアクセスできるように、どこかに定義する必要があります。これは厄介だと思います。これを行うためのより良い方法はありますか(まだfor_eachを使用してください)?
Rubyでは、次のように実行できます。
for_each
(各要素を印刷するだけでなく)実際のプログラミングで通常どのように使用されるかについて、他の例を示していただけますか?for_each
マップのような「プログラミングパターン」をシミュレートし、Ruby(またはHaskellではマップ/フォールド)で注入することは可能ですか?
編集:ありがとうございました。私はあなたの返事から多くを学びました。C ++で同じことを行う方法はたくさんあるので、学ぶのは少し難しいです。しかし、それは興味深いです:)
c++ - for_each と bind を使用してベクトル内の文字列を逆にする
単一のコマンドを使用して、単一の「単純な」行でstring
に含まれる s をどのように逆にすることができるかを考えていました。vector
for_each
ええ、私はそれがカスタムファンクターで簡単であることを知っていますが、それを使用して実行できないことを受け入れることはできませんbind
(少なくとも私はできませんでした)。
編集: これらの素晴らしいソリューションに感謝します。ただし、私にとっての解決策は、Visual Studio 2008 機能パック/SP1 に付属するtr1::bindを使用しないことでした。期待どおりに動作しない理由はわかりませんが、その通りです ( MS でさえバグがあることを認めています)。たぶん、いくつかの修正プログラムが役立つでしょう。
boost::bind を使用すると、すべてが希望どおりに機能し、非常に簡単になります (ただし、面倒なこともあります :))。そもそもboost::bindを試してみるべきだった...
c++ - テンプレートで std::transform を使用する方法
変換をテンプレート クラスで動作させることができない理由を見つけるのに苦労しています。
テンプレート クラスの簡略版を次に示します。
そして、これは私がトランスフォームを使用して、メンバー追加関数からのすべてのブール出力をキャプチャしようとしている場所です:
目的は、base::add または base::addTo のいずれかを使用して toAdd コンテナーの各メンバーを挿入し、bool の結果をベクターの結果にキャプチャすることです。
c++ - c++ STL アルゴリズムとコンテナーは、プラットフォームとパフォーマンス全体で同じですか?
かなりの量の c++ を学んだ後、私は STL コンテナーとアルゴリズム テンプレート ライブラリに夢中になりました。私の主な関心事は、
1) このライブラリは、MS、Linux、その他の OS などの異なるプラットフォーム間で同じですか?
2)STLコンテナとアルゴリズムの使用が増えると、プログラムのC++モジュールの品質または効率が低下します。すべてのニーズに合わせてカスタマイズすることはできないと思います。
3) このテンプレート ライブラリは、Linux システム プログラミングやカーネル モジュールで使用するのに適していますか?
4) 最後に、これをプログラミング コンテストで使用できますか?
c++ - C ++のfindメソッドはconstではありませんか?
constとして宣言したいメソッドを作成しましたが、コンパイラーが文句を言います。トレースしてみると、メソッドのこの部分が問題の原因であることがわかりました。
メソッドにはそれ以上のことが起こっていますが、他のすべてが取り除かれているため、これはメソッドをconstにすることができなかった部分でした。stl findアルゴリズムがメソッドのconstを妨げるのはなぜですか?それは何らかの形でリストを変更しますか?