- PR -

構造体配列のソートの仕方

投稿者投稿内容
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-03-10 10:22
引用:

一郎さんの書き込み (2004-03-10 09:40) より:

えーと、私が書いてるのはIComparerです。
複数キー指定でソートというのが、その時その時でソートするために見る項目を変えるという意味なら、IComparableで比較の仕方を固定で持たせるわけにはいきませんよね。


 「I(インタフェース)」から「〜できる(able)」と、勝手に思いこんでいました (つまり、タイプミスと勝手に思いこんでいました。失礼)


引用:

なちゃさんの書き込み (2004-03-10 10:01) より:

ちょっと質問なんですが、クラスを〜と仰っているのはなぜなんでしょう?
構造体配列のソートは(場合によっては)効率が悪いかもとか、インスタンスの関係に注意が要るかもとか、以外に何かありましたっけ?


 何に使うのか、わからないから。
 アンマネージドな世界とリンクするなら、メモリ上の配置の順番を固定しなければなりませんよね。クラスって、メモリ配置の順番を指定できましたっけ?あ、「StructLayoutAttribute」って、「Struct」って付くのにstructだけでなく、クラスにも使えるんだ。
いのつち
ベテラン
会議室デビュー日: 2002/05/14
投稿数: 73
投稿日時: 2004-03-10 10:41
DOBON.NET
IComparer での良いサンプルが上記にあります。

IComparer 側で、いろいろ検索条件に使用するキーや、昇順降順を設定して、Sortすれば
対応できます。

私も元質問者さんのようなことがしたかったとき、上記のサイトを参考にしました。
御参考になれば・・。
999
会議室デビュー日: 2003/05/17
投稿数: 14
投稿日時: 2004-03-10 11:14
皆さんと別の考えの為、書込みさせて頂きました。

きゅきゅ〜さんの質問を見た時、
データベース的な振る舞いを望んでいると思い、
単純にDataViewを思い浮かべました。

XMLスキーマ(xsdファイル)を作成し、
DataSetオブジェクトのテーブルにデータを追加後、
DataViewオブジェクトのTableにDataSetオブジェクトのテーブルをセットすれば
DataViewの機能が使えます。

DataViewのSort()より
「データベースでいうOrder byみたいな事」
は可能(複数キー指定)になると思います。

ただし、構造体配列ではありません。

IComparerを使用する方法については、
独自の比較が出来るため、有効な方法だと思ってます。

スキルアップ/キャリアアップ(JOB@IT)