問題タブ [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.
stl - カスタムクラスオブジェクトのベクトルでstd::find / std :: find_ifを使用する方法は?
と呼ばれるユーザーを表すクラスがあり、そのクラスでNick
使用std::find_if
したいのですが、userlistベクトルに、渡したのと同じユーザー名のオブジェクトが含まれているかどうかを確認しますNick
。テストしてオーバーロードし、オブジェクト== operator
で使用しようとしているユーザー名:find/find_if
オーバーロードした== operator
ので、Nick == Nick2を比較すると機能するはずですが、関数はを返しますerror C2678: binary '==' : no operator found which takes a left-hand operand of type 'Nick' (or there is no acceptable conversion)
。
参考までに、私のNickクラスは次のとおりです。
c++ - istream_iteratorは無効なデータを解析しようとします
こんにちは、私は誰かが以下のコードのこの振る舞いを理解するのを手伝ってくれることを望んでいました。
これは機能しますが、いくつか質問があります。すべての有効な反復が行われた後、それは頭に行き、必然的に失敗する別の反復を解析しようとします(したがってif(!is.good())...
_)。解析を試みますが、最終的な不正な構造体をラムダ式に渡すことはありません。なんでそうじゃないの?ストリームがgood()ではないので、わざわざそれを渡そうとしないからですか?
また、最終的な構造体をわざわざ解析しようとしないようにするにはどうすればよいですか(各スタンザは改行(0x0a)で終わるので、改行までストリームを無視すると、最後の有効な反復でEOFが発生すると思いましたしかし、そうではありません。
ご指導ありがとうございます。
また、別のコーディングの正しさのコメントを自由に渡してください。
PS:私のファイルはこのように見えます
c++ - C++ 配列から重複を削除するにはどうすればよいですか?
構造体の配列があります。配列のサイズは N です。
配列から重複を削除したい。つまり、インプレース変更を行い、配列を変換して各構造体の外観を 1 つにします。さらに、新しいサイズ M (削減された配列の最大インデックス) を知りたいです。
構造体にはプリミティブが含まれているため、それらを比較するのは簡単です。
C ++で効率的に行うにはどうすればよいですか?
次の演算子を実装しました。
ただし、実行時にエラーが発生します。
ここで何が問題なのですか?
c++ - ペア ベクトル c++ の上限
ペア ベクトルを並べ替え、ペア内のベクトルの 1 つの upper_bound の値を取得しようとしていますが、位置 = 0 で upper_bound が得られます。
私はC ++の初心者であり、学びたいと思っています。このコードの修正にご協力ください。ありがとうございました
multithreading - 移動コンストラクターがfill_nで呼び出されないのはなぜですか
私が得るエラーは、fill_n
以下の行が削除されたコピーコンストラクターを使用しようとしていることを示しています:なぜそれは移動コンストラクターを使用しようとしないのですか?私はそれを包んでみましたstd::move
が、それは役に立ちませんでした。
ただし、fill_n
行をに変更すると
それはうまくいきます。これらは、以前に似たようなコードで変更を加えたのと本質的に同じだと思いました。
c++ - stdlibの「一意の」メソッドが機能しない
unique
C ++標準ライブラリアルゴリズム(を使用)を使用しようとしていますBinaryPredicate
。
ペアのベクトルを作成しました。各ペアは「(first = 4つのdoubleのベクトル、second =整数)」のようなものです。2番目の要素はインデックスとして機能するため、 `uniqueを使用した後でも、元のインデックスを確認できます。
以下の例では、次のようなものを作成しました。
次に、一意の関数を使用して、各ペアの最初の要素のみを比較します。カスタマイズバイナリ予測子を使用しましたuniquepred
。確かに、それは機能しますが、ベクトルは使用後に縮小されませんunique
。
期待される結果
実結果
最小限の作業例を次に示します。これをデバッグするのを手伝ってください。
c++ - クイックソートイテレータの要件
tl;dr: 双方向リンク リストに効率的にクイックソートを実装することは可能ですか? それについて考える前の私の理解は、いや、そうではありませんでした。
先日、基本的なソート アルゴリズムのイテレータ要件について検討する機会がありました。基本的な O(N²) のものはかなり簡単です。
- バブル ソート - 2 つの順方向イテレータが適切に機能し、一方が他方をドラッグします。
- 挿入ソート - 2 つの双方向反復子で十分です。1 つは順不同の要素用、もう 1 つは挿入ポイント用です。
- 選択ソート - 少しトリッキーですが、前方イテレータがそのトリックを実行できます。
クイックソート
std::sort の introsort_loop (gnu 標準ライブラリ/ hp(1994) / Silicon Graphics(1996) など) では、random_access である必要があります。
私が期待するようになったように。
よく調べてみると、クイックソートにこれを必要とする本当の理由が見つかりません。random_access_iterators を明示的に必要とする唯一のものstd::__median
は、中間要素の計算を必要とする呼び出しです。通常のバニラのクイックソートは中央値を計算しません。
パーティショニングはチェックで構成されています
双方向の有用なチェックではありません。ただし、これを前のパーティショニング トラベル (左から右/右から左) のチェックに置き換えることができるはずです。単純な条件は次のとおりです。
双方向イテレータのみを使用してかなり効率的にクイックソートを実装することは可能ですか? 再帰的な深さは引き続き保護できます。
注意。私はまだ実際の実装を試みていません。
c++ - コンテナ内のすべてのオブジェクトを削除するSTLアルゴリズム?
delete *the_object_iterator;
すべてのオブジェクトに対して実行する STL ユーティリティ/アルゴリズムはありますか? clear()
無事に行けるように?STL コンテナは でset
、オブジェクトは で作成された C++ クラスへのポインタnew
です。
ブーストが最適なソリューションのようです。私の目標は、コピー不可能なクラスでのコピー構築を避けることでした。
c++ - C++ での for_each の使用法
基本的に、私は各Abstract
オブジェクトのデストラクタを呼び出そうとしていm_abs_list
ます. for
これは、ループによって簡単に実現できます。しかし、私はfor_each
この文脈で使用しようとしています。
コンパイル時にエラーが発生します:
コンパイルエラーを回避するにはどうすればよいですか?