問題タブ [iota]
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.
enums - 型付き定数宣言一覧
次のプロパティを持つ定数の「列挙型」リストを作成したいと思います。
- 各識別子の値は連続しており、いくつかのギャップがあります。(私は、iota と空白の識別子がこの点で役立つと信じています)。
- 識別子はモジュール専用です。
- 定数は、同じ型の他の定数とのみ比較できます。
列挙はFUSEenum fuse_opcode
からのものに基づいています。これが私が達成しようとしていることのコードです(そして非常に間違っています):
c++ - なぜ彼らはiotaのオペレーターバージョンを追加しなかったのですか?
値のシーケンスを増やしてイテレータ範囲を埋めるために、iotaテンプレート関数が標準ライブラリに追加されました。
の他のほとんどのテンプレートに<numeric>
は、ユーザー指定の演算子を受け入れるバージョンがあります。これを持っている:
Tpのoperator++()をオーバーロードしたくない(またはオーバーロードできない)場合に便利です。このバージョンは、デフォルトのoperator ++()バージョンよりも広く使用できると思います。<
c++ - std::fill() に C++0x ラムダローカル変数を使用するには?
そこで、C++0x FAQS ページ ( http://www2.research.att.com/ ) の Bjarne による簡単な例に基づいて、ラムダが使用されているスコープ内のローカル変数にアクセスするラムダをテストしようとしました。 ~bs/C++0xFAQ.html#ラムダ
この簡単なテスト コードを試すと、次のようになります。
エラーが発生します:
この errmsg は、 std::fill() 署名が新しい値要素の割り当てに使用するために const Type& を必要とすることを示していると思います。
しかし、Bjarne の例で示されているように、この目的で fill() を使用できるようにするには、ラムダ キャプチャ句内で参照 '[&count]' を使用して元の値を再割り当てできるようにする必要があるのではないでしょうか。 'return ++count;' を介してインクリメントするカウント var で要素値をインデックス付けします。ラムダステートメントブロック?
私はまだこれらのラムダについて完全に理解していないことを認めます! :)
c++ - iota_n の適切な実装は何でしょうか (STL にアルゴリズムがありません)
C++11 では、STL にstd::iota
関数が追加されました (参照を参照)。ただし、 とは対照的にstd::fill_n
、std::generate_n
はありませんstd::iota_n
。そのための良い実装は何でしょうか? 直接ループ (代替 1) またはstd::generate_n
単純なラムダ式による委任 (代替 2)?
代替案 1)
代替案 2)
両方の選択肢は、最適化コンパイラで同等のコードを生成しますか?
UPDATE : @Marc Mutz の優れた点を組み込み、目的のポイントでイテレータも返すようにしました。これはstd::generate_n
、C++98 と比較して C++11 で更新された方法でもあります。
haskell - Haskell での Iota の実装
Iota は、コンビネータを 1 つしか使用しない、とてつもなく小さな「プログラミング言語」です。それがどのように機能するかを理解することに興味がありますが、使い慣れた言語での実装を確認すると役に立ちます。
私は、Scheme で書かれた Iota プログラミング言語の実装を見つけました。Haskellに翻訳するのに少し苦労しました。かなり単純ですが、私はHaskellとSchemeの両方に比較的慣れていません。
Haskell で同等の Iota 実装をどのように記述しますか?
c++ - std::vector を設定範囲に
std::vector<int>
3 から 16 までのすべての数値など、範囲を設定する最良の方法は何ですか?
static - 静的配列の展開されたループ
関数を呼び出すと
静的配列を使用するとforeach
、リリースモードで自動的に展開されますか?
できなければ
の代わりにアンローリングを実現するために使用されforeach
ます。
さらに、DMD によって生成されたコードを将来私自身が調査できるように、アセンブリ コードを生成する DMD へのフラグはありますか?
更新:これまでの私の解決策は次のとおりです。
それは大丈夫ですか?
go - Goマップでキーを定義するIota?
map[int]string
があり、次のように定義したいとしましょう。
パターンはありませんが、キーにはパターンがあるため、値を手動で維持したいと思います。を使用して列挙値を処理するのと同じように、キー リストを維持する方法はあります1 << 1 + iota
か?
定義されたシーケンスでキーを作成するための同様にエレガントな方法がある場合に限り、 iota をマップキーとして使用できるかどうかを尋ねているわけではありません (残念ながら、それは私の知る限りではありません)。