1 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 10:15:52 ] (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。 前スレ C#, C♯, C#相談室 Part51 pc12.2ch.net/test/read.cgi/tech/1233757615/ Visual C# 2008 Express Edition 日本語版 www.microsoft.com/japan/msdn/vstudio/express/vcsharp/ その他テンプレ>>2-5 くらい
677 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 02:58:36 ] >>673 C++のコンパイル速度の遅さは文法の複雑さが主な原因。
678 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 03:10:57 ] >>674 VC++はリンク時の最適化というのがあって、 それ使えば全部ひとまとめにしたのと同じような効果が得られる。 まあこれ使うとさらにリンク時間が長くなるんだが。
679 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 03:47:29 ] >>675 SIMDが使える環境では使うようにJITコンパイルされる。 Mono.SIMDはSIMDによる"手動の最適化"を"マネージコードだけ"で行えるのが武器。 .NETでやるには部分的にC++/CLIを用いてネイティブで実装する必要がある。
680 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 03:53:06 ] むしろC#のコンパイル速度が速すぎる。 入力中にバックグラウンドでコンパイルしてるんじゃないかと疑ってしまったぞ。
681 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 07:14:37 ] >>680 VBにしてもJavaにしてもこんなもんじゃね? デルファイとかさらに早いし >>677 無意味なコンパイルだと思われる、一度コンパイルし結果が得られるはずであっても、直前のヘッダファイルが変更されると 全部コンパイルし直さない限り、そのままでいいか確定しないからな。 コンパイルの流れがちゃんとすれば、C++よりはるかに複雑な構造は取り扱えるし、C#だって今となってはC++と比較して遜色ないくらい複雑な内容をもっているし。
682 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 07:21:48 ] >全部コンパイルし直さない限り、そのままでいいか確定しないからな この原因を作り出しているのがプリプロセッサで、C系のプリプロセッサの仕組みは今となっては非常にマズイという事になっている。 それとincludeされるファイルがincludeし始めると、対象が指数関数的に増えるのも問題。 C#の場合はどんなに複雑でも、各ファイルが独立しているので、コンパイル時間は線形的にしか増えない。今の言語はほとんどこのスタイル。
683 名前:デフォルトの名無しさん [2009/06/05(金) 09:43:48 ] 構文解析やコード生成自体はそんなに大したコストじゃないよ
684 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 11:11:08 ] >>683 十分デカイって、特に何か処理のする事がない、ただラベルの付け合わせだけのリンクでさえボロボロのC++においては
685 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 11:25:48 ] C言語とオブジェクトファイルをリンクするldの方式は1960年代の技術だからな、C++も基本的にはこの考え方を踏襲しているわけで かれこれ40年越し、そろそろ半世紀前から使われてきた技術だ、さすがに熟成通り越して酢になってますよ。 今でも実用的に使われているというのはそれだけでも凄い事なんですけどね。
686 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 12:04:10 ] >>680 実際にバックグラウンドコンパイルを研究する価値はあるんじゃないか?w というか、きっと誰かしてる。
687 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 13:55:37 ] たしかにコーディング中の入力待ちアイドルタイムって長いもんな
688 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 15:35:15 ] これからのC++ではC#やVBがIntelliSenseを使うための情報収集をする時間でコンパイルか…… 追い詰まっていると思われ
689 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 19:08:53 ] >>686 ていうか書いた奴が インテリセンスで即反映、コードチェックも即掛かる なんだからバックグラウンドってーか入力がある度にやってるんじゃないか
690 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 20:20:30 ] C++も使うが、Visual Studio 2010はびっくりするほどIntelliSenseが効くようになったのが凄い。 ブログでも今までのを捨てて新しくしたと言っていたし。 まあそれでもC#には敵わないが。
691 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 21:33:22 ] 個人的にはできる限り早い段階でC++よりC#へ移行させてほしいと願うばかり さすがにもうC++ではやりきれない
692 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 09:41:03 ] C#で十分にできることを、C++でやってるんだとしたら、 それは悲しいことだな
693 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 10:08:20 ] 激しく計算するような分野じゃC#は使えないよ
694 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 10:44:08 ] GUIと通信部分をC#で書いて、計算はworkstationでやってるけど?
695 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 10:47:45 ] いいんじゃない
696 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 11:18:04 ] だから向き不向きあるゆーとろーが 向いてるところに生産性の悪いC++使うことないともゆーとろーが
697 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 13:28:22 ] 激しく計算するような分野だが、C#に変えちまったけどな C++でスレッド管理めんどくさすぎ、やってられない 結局やりきれずにシングルスレッドで書いてC#より遅くて使い物にならん事多々あり
698 名前:デフォルトの名無しさん [2009/06/07(日) 13:29:49 ] いまならC++を使う状況はメモリを直接参照して変更するような処理かな? いまならC++/CLIつかってその部分だけ書くのが便利かもと思ってる。 C#でちょっとした画像処理をポインタを使用して書いた時は、 unsafeがいちいちめんどくさくてストレスがたまったよ。
699 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 13:34:34 ] C#のunsafeでだるいならC++でもだるいだろう。 ちょっとコード書き足すだけだし
700 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 13:35:43 ] C++スレで存分に語れよ
701 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 13:36:11 ] C++のほうもOpenMPはだいぶ楽だと思う。 C#にもあれくらい簡単に使えるのが欲しい。 というわけで、.NET 4.0の並列化関係のライブラリに期待している。
702 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 13:37:34 ] OpenMPは総合力に掛ける、使いどころが限定的すぎる。
703 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 13:43:00 ] そんな最強言語決定戦みたいなのは厨二に任せて、 寛容なC#ユーザーはC++を使う人を一々否定しないって顔しとけよ
704 名前:デフォルトの名無しさん [2009/06/07(日) 13:43:16 ] >>699 いや、アンセーフじゃないC++は普通に業務でつかってるかよ。 書くのは全くだるくはないが、ヘッダの依存関係を解決する方が面どくさい。
705 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 13:44:29 ] だからC++スレで存分に語れよ
706 名前:デフォルトの名無しさん [2009/06/07(日) 14:15:56 ] public class DoubleList : List<double> ってクラスがあって、 コンストラクタが public DoubleList () { } こうなってる場合は みたいなクラスを作った場合には、 new DoubleList() が呼ばれた時点でList<double>が作られますよね? ここで Listのコンストラクタのうち、引数としてcapacityをとるものを DoubleListのコンストラクタとしても用意したいのですが、どうしたらいいでしょうか?
707 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 14:24:58 ] public DoubleList(int capacity) : base(capacity) { }
708 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 14:25:23 ] public クラス名() : base(スーパークラスの引数) {}
709 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 14:29:44 ] 少しエスパーしてみた、本当に欲しいのはこっちか?、ちがってたらまぁ適当にやってくれ。 using DoubleList = List<double>;
710 名前:706 mailto:sage [2009/06/07(日) 14:31:20 ] >>707 ,708さん それです!ありがとうございました。 >>709 さん doubleの可変長配列に各種メソッドの追加、演算子のオーバーロード等がしたくて DoubleListなんて作ってました。 皆様ありがとうございました。
711 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 14:39:09 ] >>710 ならば、定石としてはコンポジションをとるべきである、多態性を目的としない機能追加を伴う導出は悪だ。
712 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 14:41:54 ] extention method もあるな
713 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 15:27:51 ] >>703 C++使う人を否定してるってよりは、 仕事でいやいやC++使ってる自分を否定したいんでは。
714 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 16:17:41 ] DoubleListだが、こいつはIList<T> に対するアダプターパターンで解決するのが基本かと。 演算子のオーバーロードというのだから、線形代数系の何かだと思われるが。 相手がList<double>限定では汎用度が低すぎるしな、double [] にも適用したいだろう。 特にIList系より抽象度が低くてよいのなら、IEnumerable<T>ベースで作ってやればLINQの恩恵にもあずかれるだろうし。
715 名前:デフォルトの名無しさん [2009/06/07(日) 20:13:25 ] スレ違いかもしれませんが・・・ VS2008で、#regionで閉じられたソースを一気に全部開きたいのですが、 何かショートカットキーはあるのでしょうか?
716 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 20:31:32 ] Ctrl+M, M
717 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 20:48:09 ] >716 ありがとうございます。 CTRL+M系で色々できるんですね。
718 名前:706 mailto:sage [2009/06/07(日) 22:30:26 ] >>711 ,712さん コンポジションって public class DoubleList{ private List<double> list; } ってメンバ変数にしちゃうってことですよね? その場合ってインデクサとかList<double>のうちすべてを自分でDoubleListに実装するってことですか? 手間ばかりであまりご利益が感じられないのですが。
719 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:56:24 ] >>718 コンポジションが嫌なら、Collection<double>からの派生にすればいい。 こいつの派生なら許せる。
720 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 23:10:14 ] >>718 継承は、依存関係が強くなりすぎるのが嫌われる。 手間はかかるけど、我慢してコンポジションにする人多い。 自分も、手間掛ける時間あるならそうする。
721 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 23:12:28 ] コンポジションを作るプログラム書けばいいじゃん、すぐ終わるよ
722 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 23:47:39 ] 設計屋のオナニーって感じだな List<double>がダメでCollection<double>は許せるとか 意味不明
723 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 00:19:20 ] Collectionは中の実装に依存しないから。 実装変えるたびに継承関係が変わったら話にならない。
724 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 00:28:40 ] >Collectionは中の実装に依存しないから。 中の実装ってどこを指してんの?
725 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 06:41:21 ] 言ってることが滅茶苦茶だな
726 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 07:41:27 ] >>724 CollectionはList実装であることに依存しない、つー話じゃないの
727 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 09:09:07 ] >>724 以下のような話はわかる? ・.NET においては List って時点で配列リストの事を指してる ・List を継承するってのは「配列リストで実装します」と宣言するようなもの ・後からアルゴリズム変えたい(連結リストにしたり両端キューにしたり)場合があると困る ・コンポジションで作ってれば後から変えるのも自由
728 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 09:27:33 ] is-implemented-in-terms-of関係
729 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 13:32:30 ] グダグタ言わずにインターフェイスは多重継承可、クラスの継承はまずしなくても十分に汎用性が取れないか検討してから クラスの継承は多態性が必要になった時に使う、しかし可能な限りインターフェイス継承。 100の屁理屈より100の実践、守ってやっていれば、なぜそうすることが良いか自然に分かる。
730 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 13:46:19 ] >>718 public class DoubleList : IList<double> { private List<double> list; } こうすべきだな、他に必要なインターフェイスがあるならそれも加えておく。 最新のVS2008ならIList<double>と書けば、此処をクリックしろとマークがでるので、それをクリックして必要なスタブを全部生成すると便利だ。 こうやってList<double>の『実装に依存』させるのではなく、List<double>の『インターフェイスに依存』させるのだ。
731 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 14:00:53 ] 「インターフェースの明示的な実装」 すげー、こんなのあったのか
732 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 14:08:45 ] 結局のところ継承ってのは既に完成しているクラスを改造する行為で、コンポジションとインターフェイスにすると言う事は、 既に完成しているクラスをそのまま利用しつつ、共通項目を共通した方法で取り扱えるようにするという事。 改造する行為はバグを誘発しやすいんだな、なにしろ作った本人どういう手順で改造して欲しいまではあまりドキュメンテーションしないししきれないからね。 ブラックボックスをこじ開けるような行為はしない方が良いのです。
733 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 16:04:05 ] >>730 (スコア:5, 参考になる)
734 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 17:49:24 ] こういう初歩的なのはMSDNで3分でわかる○○等でやっているから見ておくといい 設計方法としてもオブジェクト指向の初歩なので、こういうのを知らなかったなら、一度一からオブジェクト指向を勉強するのがいい。 導出が分かればオブジェクト指向などというメチャクチャなのが時折いるが、あなんのは絶対に駄目だからな。
735 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 18:04:24 ] なにいってんだかわかんねw
736 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 18:24:45 ] >>726-727 少なくとも System.Collections.ObjectModel.Collection<T> はIListを実装した配列リストなんだが Collectionも配列リストだ クラスとインターフェイスと一般的な概念をぐちゃぐちゃにして話してないか? インターフェイスはIをつける 一般的な概念はそれとわかるような文脈で書いてくれ 頼むから
737 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 18:28:10 ] とりあえず大元の質問者がList<double>から継承するっていうんなら、 Listにしかないメソッドを使いたいとかいうのもあるんじゃないか Find系とか。doubleだしな なんで>>730 みたいにIListで十分と思えるのかがわからん もしかしてIListはListの公開メソッド/プロパティ全部カバーしてると思ってる? >>734 まったくだな MSDNも見ずに一般論だけで偉そうに講釈垂れるのは ハタ迷惑なアホだな
738 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 18:31:49 ] >>737 >Listにしかないメソッドを使いたいとかいうのもあるんじゃないか それは完全に間違っているような気が…… >もしかしてIListはListの公開メソッド/プロパティ全部カバーしてると思ってる? そういう問題ではないだろうという気が…… 危険だ
739 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 18:33:27 ] >>737 「List<T>にしか無いメソッド」も実装すればいいじゃない
740 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 18:33:47 ] 深いオブジェクト指向の知識など要らないとは思うけれど、必要最低限の知識はもっていてもらいたいものです……
741 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 18:38:42 ] MSDNは短い割にはポイント絞った良いセミナーやるからな、見ておいて損は無いよ。 特にビデオ物、流してみておくだけでも思わぬ拾い物が多い。
742 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 18:43:21 ] そういやjavaとか StackがVectorから派生してるとかいうバカ設計なんだよなw Stackなのにランダムアクセスできるwww
743 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 18:51:36 ] >>742 処理系によるけど、コールスタックに積んだ引数とか、 普通にSP使ってランダムアクセスする場合の方が多い気がするのだが。 べつに、スタックだからって必ずいちいちpopしなきゃダメってこたないよ。
744 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 18:55:24 ] >>743 一般的なスタックの概念から外れてるんじゃないかい? >>727 みたいな話になるけども
745 名前:デフォルトの名無しさん [2009/06/08(月) 19:02:05 ] >>743 それならStackなんていらない リストで代用できるしその方が速い
746 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:03:38 ] >>736 あー、そうだった。 でもまぁ、この話って、インターフェースプログラミングのお作法以前の話として、 C#のコレクションの分類に一貫性がないというか滅茶苦茶なのが一番の癌なんじゃないかなぁ。 IListってのがあったら、普通Listはその直系の具象実装だと思うわなぁ。
747 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:04:26 ] 明示的にスタックとしているのにインデクサでアクセスされたらたまらんな。 おお怖い。
748 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:06:01 ] まずいとおもったから作りなおしたんでしょ。1.2だかで
749 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:06:18 ] >>746 まあね
750 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:08:38 ] >>744 コールスタックって、スタックの第一級の応用例じゃないのかね。 >>745 適当だけど、 int sp = 0; int[] stack = new int[100]; void push(int i) { stack[sp++]; } int pop() { return stack[sp--]; } みたいなノリの実装だったら、少なくともpush(), pop()はlistより高速なんでないかね。 ランダムアクセスのオーダーもListと等価になるし、特にListのが優位な点も見当たらないが。
751 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:09:08 ] C#のコレクションはLINQと相まって、もういっぺん見直した方がいいとは思う 上のFindの話もそうなんだけど、ああいうメソッドがコレクションについているべきではないと思われるし。
752 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:11:37 ] Find系は以前からあるから、新加入のLINQと役割的に競合してるわけね
753 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:13:10 ] 一発で決まる綺麗な実装は難しいね、LINQの汎用性ときたら半端じゃない。
754 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:13:11 ] >>750 そのへんは相当シビアな速度求められるところだから []演算子で先頭アドレス基準にアドレス計算しなおすだけで ふざけんなって言われるよ
755 名前:デフォルトの名無しさん [2009/06/08(月) 19:14:14 ] SilverlightではLINQと被ってるのはごっそり削られました
756 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:15:35 ] >>754 JavaやC#といった言語はオプティマイズ問題とインターフェイスの問題はきれいに切り分けられるように工夫された言語なんだから、ごっちゃにするなよ。
757 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:17:43 ] >>756 コールスタックの話題だろ? >>750 が持ち出してるのは
758 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:19:01 ] >>754 C/C++で組み込みのリアルタイムシステムを書いてるならともかく、 JavaとかC#で、そのレベルのチューニングを要求するのはナンセンスな気がするのだが。 そもそも、中間言語レベルでも整数のインクリメントなんて1opじゃないのかね。
759 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:20:56 ] >>757 で、コールスタックになったら問題が何か変わるわけ? スタックフレームの知識はあるよ、アセンブラやってたから、心配せずに言ってみな。
760 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:22:56 ] >>757 ん? Stackでランダムアクセスをしちゃいけない理由ってのがあるか否かって話じゃないの? ちなみに、CPUレベルの話なら、pushとpopはほぼノーコストでしょ。 JavaやC#の話をしてるなら>>758 。
761 名前:デフォルトの名無しさん [2009/06/08(月) 19:25:50 ] だからランダムアクセスできたら何のためにリストとは別にスタックがあるのかわからなくなるだろ
762 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:31:02 ] >>761 push()とpop()とpeek()が使える、Listの特殊な場合がStack、って分類なだけでしょ。 実装的にもアルゴリズムのオーダー的にも差異はほぼ無いわけだし。 アセンブラレベルでpushとpopを特別扱いしてるのは、詳しくは知らないけど、 それこそコールスタックで使うとか歴史的理由とかその辺じゃないの?
763 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:32:06 ] >>762 差異がないってw
764 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:37:16 ] >>762 あんま関係ないけど、呼び出しスタックはダイクストラという偉い人がスタックはハードウェア化すべきだとのたまわったので、以後のCPUでは多く採用された。 構造化プログラミングの提唱者の人ね、その後RISCという方法が主流になって再び捨てられた。 歴史的にはそんな感じ
765 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:38:13 ] >>763 実際、Javaではそのように扱っていて、特に問題は起きてないわけだが。 逆に、「ランダムアクセスができるものはスタックとは呼ばない」という定義が 一般的だと主張するなら、それを示してくれ。 「○○という計算機科学の教科書に書いてあった」とかそういうのでもいいよ。
766 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:39:15 ] >>764 そーか、それは知らなかった。勉強になったよサンクス。
767 名前:デフォルトの名無しさん [2009/06/08(月) 19:40:24 ] だから.NETのStackではあえて差異をつけてるんだろ 同じなら二つもいらない
768 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:41:44 ] >>765 無意味なところに話を持っていくなぁ
769 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:53:06 ] Stackでランダムアクセスができるのはおかしい というのに異論がある人がいるとは思わなかったじぇ。
770 名前:デフォルトの名無しさん [2009/06/08(月) 19:57:24 ] できたら意味がない というだけのことなのに…
771 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:01:45 ] >>769-770 じゃあ、コールスタックはおかしくないのか、というところに話が戻るわけだが。
772 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:08:31 ] IListインターフェイス付きのコレクションと、そうでないコレクションは実装は同じでも設計レベルでは分けて考えろという事。 実装からインターフェイスを分離独立せよ、これがわからんやつはプログラマ廃業したほうがいい。
773 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:21:28 ] 0xcc.net/blog/archives/000043.html 他の言語でも、むしろ配列の操作の一部としてpush(), pop()がついてるのが普通みたいだね。
774 名前:デフォルトの名無しさん [2009/06/08(月) 20:22:57 ] Visual C# 2008 EEで開発しています。 以前C++で書いた関数を利用するにはどうすればいいですか?
775 名前:デフォルトの名無しさん [2009/06/08(月) 20:23:42 ] 書き直しましょう
776 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:26:31 ] >>773 そんな結論になるおまえにびっくりだ
777 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:29:08 ] >>765 Introduction to algorithms Stacks The order in which plates are popped from the stack is the reverse of the order in which they were pushed onto the stack, since only the top plate is accessible.