タグ付けされた質問 「array」

配列は、通常は行と列にある同様のオブジェクトの体系的な配置です。

4
プログラミング言語でゼロから数えることの起源は何ですか?
これは私が長い間疑問に思っていた(そして尋ねられた)質問です。 (ほとんど?すべて?)プログラミング言語では、配列、文​​字列などのインデックスはゼロから始まります。多くの言語で採用され、時間が経つにつれて慣例になったことを認識していますが、だれでもこの起源を指摘できますか? おそらく、それはすべてバイナリに根ざしていることに関係しているのではないかと思いました。しかし、私は10進法での必要性を引き継ぐという考えがわかりません-なぜインデックスを1から始めないのですか? ゼロからインデックスを開始する決定が説明されている可能性があるプログラミング言語の歴史的な知識を持っている人はいますか? ありがとうございました! 編集:ダイクストラの文章は、数学的な観点からさらに役立ちますが、すべての言語がゼロインデックス化されているわけではないことを彼は指摘しました。WBTの説明は、なぜメモリアドレスに基づいてゼロから始めるのかについても理にかなっています。(一部の言語は、配列操作に基づいてわずかに異なるインデックス付けを処理することを知っています。) 私は必ずしも理由を探る必要はありません(理解を深めるのに役立つので非常に感謝しています)が、いつこれが規則になったのか、および/または特定の言語にたどり着くことができるかどうかという線に沿って探します。 したがって、たとえば、K&RのCでは、配列のインデックスについて説明するとき、KまたはRは「配列の添え字は常にCでゼロから始まる...」(p。22)と説明し、後で文字を処理する関数について説明します。配列、「...より有用な設計は、行の長さ、またはファイルの終わりが検出された場合はゼロを返すことです。ゼロは、有効な行の長さになることはないため、許容できるファイルの終わりを返します。」(p.127) K&Rに基づいて、私は次のように収集します。a)規則は他の場所から採用されているため、Cはゼロインデックスの背後にあるインスピレーションではありません。b)2番目の例に基づいて使用する理由はもっと深い可能性があります。私はK&Rがその明確な散文で非常に広く評価されていることを知っています。それが、これを含めるもう1つの理由です。別の文書化された言語がゼロインデックスの背後にある理由を説明するために私が期待したことの例を示すためです。 私はWBTとbtillyの両方が同等に良い理由を提供していると思います。設計の決定を文書化した古い(Cより前の)言語を知っている人はいるかもしれません。同時に、そのような情報が存在しない可能性があることも認識しています。

4
Javaの配列がequals()をオーバーライドしないのはなぜですか?
私はHashSet先日、これを仕様書に書いているので作業していました: [add()]このセットに要素e2が含まれていない場合、指定された要素eをこのセットに追加します(e == null?e2 == null:e.equals(e2))。 私が使っていたchar[]中でHashSet、私は、この契約に基づいて、以下のことを実現するまで、それはよりも良いではなかったですArrayList!オーバーライドされていないを使用しているため.equals()、私の配列は参照の等価性のみがチェックされますが、これは特に有用ではありません。私はそれArrays.equals()が存在することを知っていますが、などのコレクションを使用しているときは役に立ちませんHashSet。 だから私の質問は、Java配列が等号をオーバーライドしないのはなぜですか?

3
順序付けされた列挙:IEnumerableまたは配列(C#で)?
典型的なコンテキスト:要素が順序付けされていると見なすコレクションの拡張メソッドを作成します。関数はインデックス0から始まり、順序が重要です。例:アイテムのシーケンスまたはインデックスによるグループ化。 しかし、私は常に拡張すべきことの困惑:IEnumerable<T>またはT[]。私の理論的根拠は明確な目的でした:配列には順序付けの概念がありますが、IEnumerableは多くの一般的なコレクションによって実装されますが、すべてに順序付けの概念があるわけではありません。 辞書-順不同 HashSet-順不同 LinkedList-順序付け リスト-注文済み キュー-注文済み SortedDictionary-ソート済み(元の順序ではない) SortedList-ソートされた(元の順序ではない) SortedSet-ソート済み(元の順序ではない) スタック-反転 同様に、注文される場合と注文されない場合がある他の実装。 また、列挙が完了していない場合に列挙子がリセットされるかどうかは定かではありません。それが心配な場合は、列挙がどの時点で開始されるのか誰が知っているのでしょうか。配列の列挙は常に最初から始まります。 したがって、私にとっては、を拡張する方が理にかなっていT[]ます。しかし、私はそれを正しいと思いますか?心配しすぎですか?「順序付けされた」列挙を保証するための適切なアプローチは何ですか?
8 c#  array  order 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.