- 1 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 21:53:47 ]
- The C++ Standards Committee
www.open-std.org/jtc1/sc22/wg21/ wiki ja.wikipedia.org/wiki/C%2B%2B0x C++0x pc11.2ch.net/test/read.cgi/tech/1149440647/ C++0x 2 pc11.2ch.net/test/read.cgi/tech/1191842951/
- 552 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 00:13:58 ]
- 本物のC++プログラマは動的解決をしない。
本物のC++プログラマはコンパイル時に解決する。 コンパイラでできなければ、プリプロセッサでやる。 プリプロセッサでできなければ、それはやる価値が無いのだ。
- 553 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 00:16:03 ]
- new を入れたのが間違いの始まりだったんですね
- 554 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 00:30:05 ]
- プリプロセッサ(笑)
- 555 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 00:36:14 ]
- タイトルはどうなるんだろう。
「本物のプログラマはJavaを使わない」 あたりかな
- 556 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 00:36:39 ]
- 本物のプログラマネタが分からないのは
流石に本物のプログラマとは言えないな。
- 557 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 00:45:50 ]
- 本物のプログラマがわからなければ、そのネタは理解する価値が無いのだ。
- 558 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 01:03:02 ]
- >>555
間違いなく言語と環境をごっちゃにした反論が帰ってきそうなタイトルだなw
- 559 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 00:38:19 ]
- conceptがまだドラフトに入らないのが気になる
一番楽しみなのに
- 560 名前:デフォルトの名無しさん mailto:age [2008/05/04(日) 00:39:07 ]
- 独立wordingの方でまだまだ直しが続いてる。
- 561 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 18:01:34 ]
- ここで聞くか、Boostスレで聞くか迷ったんだけど、
Unordered associativeコンテナの、bucket関連のメンバってなんに使うの? 規格読んだだけだと、どうもよくわからないんだけど。 あるキーがどのbucketに属するかのインデックスを返されたとしても、 実際のbucket単位に直接アクセスする方法って無いよね? 普通に要素へのイテレータしかないみたいだし。 そのどのbucketに入れられているかってことが分かって、ライブラリを使う側の人間にとって、何がうれしいの?
- 562 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 19:14:44 ]
- >>561
begin(i),end(i) で local_iterator を取得できたような。 ハッシュの分散結果をどう使うかってことなので、カスタムハッシュ関数次第 じゃないか? まあ通常はあまり使わないかも
- 563 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 19:23:03 ]
- どっかのbucketにばっかり入っちゃうようなデータで、そのせいで遅くなるようなときに
調査するためじゃねえの
- 564 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 19:27:20 ]
- >>561
詳しいドキュメント読んでないから分からんけど、たぶん同一 hash 値だったら 同一の bucket に入ることが保証されるはずだから、次のような使い方ができる。 次の問題を考える: 二次元平面上の点が大量に与えられる。これを前処理して 新たな点 p が与えられたときに p に最も近い点を求めよ。 こんなときに、最初の二次元平面上の点に対して、ハッシュ関数を (x座標値/1000)×(y座標値/1000) なんかに設定したコンテナを用意すると 元のデータが結構ばらけていたら、「同一 bucket 内に入るデータを全部調べる」 みたいなアルゴリズムで結構効率的に解ける。
- 565 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 19:59:38 ]
- おもろい
- 566 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 20:46:02 ]
- >>562
本当だ。 引数を取るb.begin(b), b.end(b)があったのか。 local_iteratorは、あるbucket内の要素のイテレータとは。 しかし、>>564には疑問だな。 例えば、その点pのハッシュ値が、ちょうどbucket単位の境にあった場合、 点pに最も近い点は、別のbucketに入るんじゃない? すると、隣接するbucketも調べないといけないよね? 少なくとも二つ、大抵の場合は三つ。 それに、規格にあるのは、 >Keys with the same hash code appear in the same bucket. だけで、似たようなハッシュ値が同じbucketに入るとは規定してないし。 隣接するbucketに入るとも規定されてないよね。 あくまでハッシュという名称を使っているだけで、実装じゃないし。
- 567 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 21:01:51 ]
- 境界の違うハッシュを2つ使えば?
(x/1000)*(y/1000) と ((x+500)/1000)*((y+500)/1000) みたいな
- 568 名前:564 mailto:sage [2008/05/05(月) 21:33:30 ]
- >>566
bucket の番号を用いる例のためだけに、アルゴリズムの細かなことを書くのは 面倒だったから、本当に方針だけを書いたつもりなんだけどなあ。 まず、点を含む領域以外も見ないといけないのはそのとおりで、 ちゃんとやるには、点を含む領域から近い順に探索することになる。 (それまでに見つけた最も近い点までの距離を覚えておき、 見る必要のある領域を限定していく) 見る領域に対応する bucket の番号は、領域の座標値が分かっているのだから 領域座標 → ハッシュ を計算してやった後に ハッシュ → bucket 番号と取得する。 このとき、隣接領域で bucket 番号が隣接している必要はない。 詳しいことは、適当な計算幾何学の本を読んで欲しいところ。 こういうのはバケット法などの名前で知られている割と標準的な技法。
- 569 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 21:36:55 ]
- えぴが陰毛茫々じゃないから
進みが遅いと思う
- 570 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 21:40:38 ]
- >>566
いや、だから規格では、同じハッシュ値のキーが同じbucketに入ってるって事ぐらいしか、 規定されてないような気がするんだけど。 似たようなハッシュ値が同じ、あるいは近いオフセットのbucketに入っているかもしれないとは書いてない。 そりゃ、大抵の実装はそうなるだろうけど。
- 571 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 21:40:59 ]
- 間違えた、>>568
- 572 名前:デフォルトの名無しさん [2008/05/05(月) 22:01:44 ]
- >>561
cpplover.blogspot.com/2008/05/c0xunordered.html
- 573 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 22:05:07 ]
- >>570
似たような点を同じハッシュにするって話じゃないの?
- 574 名前:564 mailto:sage [2008/05/05(月) 22:10:03 ]
- >>570
なんで似たようなハッシュ値が近いbucketに入る必要があると思うの? そういう必要は無いですよ、と588で > このとき、隣接領域で bucket 番号が隣接している必要はない。 と明記したつもりなんだけどなあ。 具体例で説明すると、たとえば 1000×1000 のメッシュに切って、 (x/1000)×(y/1000) % 100 をハッシュ関数として設定したとしよう。 ここに (10000,10000) の点 p が与えられたとしよう。 この点を含む領域に対応するハッシュ関数値は (10×10) % 100 = 0 だから、 ハッシュ関数値 0 に対応する bucket を持ってくればいい。 (点 p に対して bucket(p) を実行することが、この操作に対応する) 次に、この点を含む領域の左側の領域を調べることにしよう。 左側の領域の座標に対応するハッシュ関数値は (9×10) % 100 = 90 だから、ハッシュ関数値 90 に対応する bucket を持ってくればいい。 (p を左に 1000 だけ平行移動した点 q に対して bucket(q) を実行することがこの操作に対応する)
- 575 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 22:34:13 ]
- で、0x関係あんのか
- 576 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 22:41:03 ]
- >>574
関係ねーだろ10000回染んで来い
- 577 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 23:41:50 ]
- そんなにdelete thisできないな
- 578 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 00:17:58 ]
- >>570
つうか、一体何が疑問なんだ 同じハッシュ値のキーが同じbucketに入ってるって事が規定されてりゃ十分だろう 同じハッシュ値になるようにハッシュ関数を作れば同じbucketに分類されるんだから
- 579 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 05:45:07 ]
- ああ、なるほど。
似たようなキーを同じハッシュにするのか。 それで(x座標値/1000)×(y座標値/1000)だったのか。
- 580 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 21:04:03 ]
- レベルが高すぎてよくわからん
- 581 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 21:05:26 ]
- そんなに高くないよ
情報系の学校入れば絶対習う程度
- 582 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 21:26:48 ]
- 学無くても考えれば分かりそうな。
- 583 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 22:06:41 ]
- 修学旅行での温泉の脱衣場の洗濯カゴみたいなもんだ
一つのカゴで一人の美少女中学生をイテレートできる 美少女中学生は控えめだから棚の下の方にハッシュされてるという寸法さベイベ♪
- 584 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 22:08:43 ]
- 下着がなくなってたりするんだな
- 585 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 22:54:27 ]
- 露骨なエロで興奮するあたり、それらが控えられた萌えに欲情する若者とは違うという部分がみえみえなスレだな。
勢力の足りないおっさんが無理にネタ振らなくても良いんだぜ?つまらないだけだから。
- 586 名前:デフォルトの名無しさん [2008/05/07(水) 02:20:45 ]
- age
- 587 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 03:27:54 ]
- >>585
つまらない。
- 588 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 09:42:13 ]
- どうでもいいよ
- 589 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 03:55:48 ]
- ここんとこ寒いね
- 590 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 04:05:16 ]
- うんそうだね
- 591 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 04:34:23 ]
- 今までが暑くて相対的に寒く感じるだけ。
平年並みだろ。
- 592 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 21:41:35 ]
- それだけ暑いのが続けば「平年並み」の気温も底上げされててもいいんだがなあ。
- 593 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 18:02:04 ]
- 平均気温は過去20年のデータで計算するから、20年間で急激に気候が変動してると追いつかない。
そんだけ温暖化が深刻ってこったな。
- 594 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 18:45:41 ]
- strong typedef って入るんだったっけ?
- 595 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 19:32:54 ]
- ttp://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2141.html
これか? 入る見込みは無さそうだねぇ。 ttp://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2565.html >Not ready for C++0x, but open to resubmit in future BOOST_STRONG_TYPEDEFでもつかっておけば。
- 596 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 20:20:55 ]
- strong typedefってどういう物?
usingとかとは違くて?
- 597 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 20:41:23 ]
- typedef元とtypedef先が別の型として扱われるというtypedef。
- 598 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 20:43:10 ]
- C++09 になってんのか、もう。
- 599 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 20:58:14 ]
- え、まじ?
- 600 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 21:12:18 ]
- あ、いや、ちゃうわ。ごめん。
- 601 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 22:19:45 ]
- >>597
それあったらテンプレートがまたワクワクするものになりそうだな
- 602 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 22:38:47 ]
- 数値型の暗黙の変換はC/C++の型システムの穴だから
strong typedef でまずその穴をふさぎたい
- 603 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 22:43:14 ]
- そんなもん別に機能にしなくてもこれでいいんじゃないの
class AnotherType : public Type{ private: operator Type(); //実装しない }
- 604 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 22:44:25 ]
- そんなこともできるのか。それは欲しい
- 605 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 23:11:50 ]
- intとかでもやりたいんでは
- 606 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 22:50:15 ]
- 実装あるもんなw
- 607 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 23:24:53 ]
- もう#define int nanikaしろよ
- 608 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 00:05:38 ]
- 要するにこういうの作ればいいんだろ?
#include <iostream> #define STRONG_TYPEDEF(base, name) \ template <typename Dummy = void> class name##_ { \ public: \ name##_() { } \ explicit name##_(const base& value) : m_value(value) { } \ base& get() { return m_value; } \ const base& get() const { return m_value; } \ name##_& operator=(const name##_& rhs) { m_value = rhs.m_value; return *this; } \ friend name##_ operator+(const name##_& lhs, const name##_& rhs) { return name##_(lhs.m_value + rhs.m_value); } \ private: \ base m_value; \ }; \ typedef name##_<> name struct TestBase { void show() { std::cout << "Test" << std::endl; } }; STRONG_TYPEDEF(int, Hoge); STRONG_TYPEDEF(TestBase, Test); int main() { Hoge a(1), b; b = Hoge(2); std::cout << (a + b).get() << std::endl; Test t; t.get().show(); }
- 609 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 07:37:07 ]
- 手抜きをするためのものなのに、メンバがコピーされないようじゃ意味がない。
- 610 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 10:29:55 ]
- mailing 2008-05 きてるお
- 611 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 11:09:49 ]
- ^ω^
- 612 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 12:32:56 ]
- >>610
乙
- 613 名前:デフォルトの名無しさん mailto:age [2008/05/21(水) 12:37:34 ]
- コンテナとかSTLがみんなconcept化されてる!
- 614 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 12:42:31 ]
- ドラフトは N2606
- 615 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 12:48:01 ]
- www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2601.html
がスゲイ
- 616 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 18:04:02 ]
- C99と同じ感じになったりしないの?
現行のC++から、この仕様のC++にキレイに置き換わってしまう? また、複雑難解怪奇な文法を覚え直さなければいけないの?
- 617 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 18:49:37 ]
- >>616
GCCだけでなくVC++も実装してくると思う、現にTR1も対応しているし。 C99よりは広まると思う。 文法はどうしようもないな。現在でも複雑怪奇なんだから 今さら少しくらい増えたってどうってことないって構えをしたほうがいいかも。
- 618 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 18:50:26 ]
- better C++03 として使う人が多そうな予感。
auto とかは使うけど・・・って感じ。
- 619 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 20:38:48 ]
- ぶっちゃけC++が廃れる要因になるだけな気がしないでもない
- 620 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 20:49:42 ]
- 化粧を覚えたてでちょっと厚塗りしてみた美少女中学生のような感じだな
化粧のナイステクを見つけるのが先かこっちが見慣れるのが先かというところか
- 621 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:21:56 ]
- 今はネイティブで代わりがないから C++ 一択だけど、ObjCを綺麗にしたようなクラスベースの
言語があれば、もう C++ にこだわる気になれないなぁ。うんざりする
- 622 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:36:41 ]
- Cに速度的な最適化を期待したのが間違いだったんだ。
やるならfortranを++すれば良かったのに。
- 623 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:38:00 ]
- >>622
そこで Fortress ですよ
- 624 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 22:35:21 ]
- >>621
だからD言語を使えと(ry
- 625 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 22:36:59 ]
- >>623
あれは数値計算用途以外では使いたい文法でもないけど・・・ それ以前に、なかなか開発進んでなくね?
- 626 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 22:40:30 ]
- >624
GC がいらない
- 627 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 23:09:24 ]
- >>616
(ほぼ)今のままのコードで動く。
- 628 名前:デフォルトの名無しさん mailto:age [2008/05/21(水) 23:10:26 ]
- >>626
GCありというか明示的メモリ管理なしのC++ってもの使ってみたい。 DとかJavaじゃなくて、まっとうなC++で。
- 629 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 00:25:00 ]
- >628
だが、リソース管理は結局自前だろ ファイナライザは入れないんだよな
- 630 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 20:45:13 ]
- >>618
現行でC++03としても使えてない奴の方が多いからな その辺はしゃーない
- 631 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 22:04:12 ]
- サブセットでヘッダの要らない仕様を作ってくれないかな。
どうせ、プリコンパイルヘッダみたいな事やるんだから、 .cppをプリコンパイルして参照解決したっていいじゃん。
- 632 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 22:09:22 ]
- そうやってサブセットのスーパーセットを考えてるうちに C# になってしまいました
- 633 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 22:12:52 ]
- >>631
モジュールシステムを設計しなおすことになると思う
- 634 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 22:49:18 ]
- 仕様を作るのはいいけどさ、
とりあえずその前にほとんどのコンパイラベンダに言いたいんだが export を実装してくれよ! Comeau 以外どこか実装してんの?
- 635 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 22:51:43 ]
- 実装が大変な割に大したメリットがないからじゃないの
- 636 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 22:54:50 ]
- exportの実装がめんどうになった時点で分割コンパイルなんてあきらめればよかったのだ
- 637 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 22:59:03 ]
- extern inline なんかどこも完全実装できてないしな
Comeauでさえ
- 638 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:51:17 ]
- >>615
提案しているのが Lawrence Crowl だし,ほんの一瞬とはいえ 本気にして「なんだ!?とち狂ったのか!?」とか思った俺涙目www
- 639 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 05:58:24 ]
- >>638
w ま、いつか入るかもな。競合は大丈夫そうだし。 16進浮動小数点数リテラルとか知名度低いのもあるし、こっそり紛れてても誰も騒がないでしょw
- 640 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 18:12:45 ]
- ASCII外の字をプログラム本文に持ち込むことをあっちの国の人らが許すはずがない
- 641 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 19:20:22 ]
- コメント文字列をプログラム本文とみなすかどうかだが
普通にやってるとチェコ語だかでパース失敗しなかったか?
- 642 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 19:26:27 ]
- なんだそりゃ。
まさかチェコ語は、スラッシュやアスタリスクにまで独自の文字を割り当てているのか?
- 643 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 20:05:42 ]
- チェコ語ということはutf-8か?
-Ku は当然付けてるよね。
- 644 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 21:06:45 ]
- コメントに??付けるだけでおかしくなります
- 645 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 22:02:47 ]
- もう APL になったつもりで変な字いっぱい使おうぜ
- 646 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 22:46:19 ]
- トリグラフも迂闊に追加できないこんな世の中じゃ。
- 647 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:01:50 ]
- つまりクアッドグラフが求められる時代になったということですね
- 648 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:42:00 ]
- concept 使った for_each がこう提案されてる
auto がこんな使い方できるんだ template<InputIterator Iter, Callable<auto, Iter::reference> Function> Function for_each(Iter first , Iter last , Function f ); 役立たずだった auto が大人気だ
- 649 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:46:41 ]
- 大人気で広まる
↓ 恐ろしい副作用が見つかる ↓ カオス の黄金パターンですね、わかります
- 650 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:04:34 ]
- >>639
十六進浮動小数点数は、C99由来だから知名度低くても余裕で入るだろ、たぶん。
- 651 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 01:17:23 ]
- concept のようなメタタイプを持つ言語がほかにあるんでしょうか?
Haskellのほかに 静的型付言語で
- 652 名前:デフォルトの名無しさん mailto:age [2008/05/24(土) 03:58:02 ]
- >>651
conceptの型理論を書いた人たちがGってのを作ったよ。 他にはない。concept_mapみたいなglueがあるのは。
|

|