問題タブ [generic-programming]

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.

0 投票する
3 に答える
12081 参照

java - Java: 整数 obj は Comparable にキャストできません

ドライバー クラスから整数オブジェクトを、作成した SortedArray ジェネリック クラスの関数の引数として渡そうとすると問題が発生します。ドライバー クラスから、ユーザーの int 入力を Integer オブジェクトに変換して、SortedArray クラスの Comparable にキャストします。

「スレッド "main" java.lang.ClassCastException の例外: java.lang.Integer を Comparable にキャストできません」というエラーが引き続き表示されます。私はクラスメートのソースコードのいくつかを見て、引数/パラメータの設定にほとんど違いがないことを発見しましたが、彼らのコードはうまく機能しています. 私は自分が犯したエラーを見つけようと何時間も探していましたが、Integer オブジェクトを Comparable にキャストできない理由をまだ見つけられません。

ここに私のSortedArrayクラスからのビットがあります

これは、Integer Object insertObj を SortedArray の挿入関数の引数として渡すドライバ クラスのコードです。

0 投票する
1 に答える
1817 参照

java - Java: 配列サイズの拡張、すべての値を元の場所に保持できないように見える

私の現在の宿題では、ユーザーが値をその場所に挿入するときに、ジェネリック クラスを介して配列を並べ替えようとしています。サイズが完全にロードされたものとして読み取られると、配列クラスは、教授のメモに従って、適切な場所に値を保持しながら配列のサイズを増やす拡張メソッドを呼び出します。なんらかの理由で、location[0] を除くすべての値が配置されていないか、配列から消去されているようです。問題は展開方法に起因していると思いますが、これを修正する方法がわかりません。

たとえば、初期サイズは現在 5 に設定されていますが、展開メソッドが呼び出されると 3 ずつ増加します。ユーザーは値 1、2、3、4、5 を完全に入力できます。ただし、1、6、null、null、null、null の配列を出力する新しい値 6 をユーザーが入力すると、展開が呼び出されます。それ以上の場合、「スレッド "main" java.lang.NullPointerException で例外が発生しました」というエラーが発生します。

ここに私の並べ替えられた配列クラスがあります:

これは、SortedArray クラスで挿入メソッドを呼び出すドライバー クラスです。

0 投票する
3 に答える
246 参照

c++ - 汎用プログラミング/TMP の世界では、モデル/ポリシーと「概念」とは正確には何ですか?

これら 3 つの概念の正確かつ簡潔な定義を 1 か所で知りたいです。回答の質は、次の 2 点に依存する必要があります。

  1. コンセプト/テクニックがどのように、また何のために使用されているかを示す簡単なコード スニペットを示します。
  2. この分野に触れていないプログラマーが理解できるように、理解するのに十分なほど単純にしてください。

ノート:

それぞれの概念には多くの異なる側面があるため、おそらく多くの正解があります。良い回答がたくさんある場合は、最終的に質問を CW に変えて回答を集計します。

-- 投稿承認編集 --

Boost には、ジェネリック プログラミングの概念に関する優れた記事があります。

0 投票する
2 に答える
1574 参照

scala - Scala:Numeric[T]のサブタイプの実装

Numeric [T]のサブタイプを実装するにはどうすればよいですか?私はこれに関するガイドを探していましたが、何も見つかりませんでした。サブタイプの例は、RationalまたはComplexでしょうか?

よろしくお願いしますTroels

0 投票する
2 に答える
1791 参照

c++ - C ++のvalue_typeをiterator_traitsからすべての型に拡張できますか?

同じ構文を使用してすべての型に対してシームレスに機能できるstd::iterator_traits::value_typeに似た構造を作成したいと思います。次のようなものがあると想像してください。

これはPODタイプで機能します。私はそれを自分のクラスに特化することができます:

ただし、理想的な世界では、余分なvalue_typeのインスタンス化は避けたいと思います。

問題はSTLイテレータにあります。イテレータ階層に到達するための専門分野が必要です。コンパイラが基本ケースを選択するため、これは失敗します。

階層の上位にあるクラス(value_typeが定義されている場所であるため、_Iterator_with_baseが最も自然です)を選択すると、すべてのイテレーター特性をテンプレート引数として指定する必要があるため、失敗します。

私がやろうとしていることはC++でも可能ですか?

0 投票する
4 に答える
2859 参照

c# - 誰かがそれが何を意味するのか、いつそれが使われるべきか、そしてこの構造がどのように協力すべきかを説明できますか?

私はジェネリックをかなり長い間使用していますが、のような構造を使用したことはありませんList<? super T>

どういう意味ですか?それの使い方?消去後はどのように見えますか?

私も疑問に思います:それはジェネリックプログラミング(テンプレートプログラミング?)の標準的なものですか、それとも単なるJavaの「発明」ですか?たとえば、c#は同様の構造を許可しますか?

0 投票する
4 に答える
2291 参照

haskell - haskell でツリーをトラバースしてフィルタリングする

私は Haskell にはかなり慣れていません (まだモナドを完全に理解することに取り組んでいます)。ツリーのような構造を持つ問題があります

私がやりたいことは、これをトラバースして、フィルターを使用して新しいツリーを生成できるようにすることです。たとえば、ツリー内のすべての DataB2 を「foo」に変更したい場合があります。

ツリーが同じデータ セクションにあり、コンストラクターが似ている場合の例を見てきました。

Python の世界では、リストをたどり、必要なものに一致させ、値を置き換えるだけでした。

Haskell では、ツリーをコピーできるようにする必要があると推測していますが、コンストラクターやさまざまなデータ型に埋め込まれたリストをどのように処理しますか?

0 投票する
3 に答える
375 参照

c++ - 任意の型の与えられた引数を使用して任意の操作を行うための提案はありますか?

基本的には、任意の型の引数を使用して任意の操作を実行したいだけです。

引数タイプの基本クラスはVarであり、Operationは、指定された引数に対して実行される操作の基本クラスです。

opIdを使用してマップされた演算子のコレクションを保持するEvaluatorクラスがあります。Evaluatorは、evaluate()メンバー関数で指定されたopId引数に基づいて操作を実行し、evaluate()関数は、引数の型とopIdを受け入れるサポートされている演算子を検索します。

私が聞きたいのは、dynamic_cast<>や演算子コレクションのループなしでこれを行う効率的なパターンやアルゴリズムはありますか。

`

`

0 投票する
1 に答える
97 参照

delphi - ジェネリック TypeIdentifier 変換。どのように?

TypeIdentifier をクラス型に変換するにはどうすればよいですか? 暗黙の変換を使用する必要があります。

暗黙的な変換「TTypeIdenitifierParentClass(elem).TestField:=0;」で「無効な型キャスト」が発生します。

私が使用したい原則は、TypeIdentifier が TTypeIdenitifierParentClass から派生したクラスを表すということです。多くのクラス タイプがありますが、それらはすべてそのクラスを継承しています。

どうすればいいですか?