- 1 名前:858 [2007/12/24(月) 03:41:59 ]
- C++標準ライブラリの一つ、STLについて。
前スレ 【C++】STL(Standard Template Library)相談室 7 pc11.2ch.net/test/read.cgi/tech/1185986999/ 過去ログ・リンク・書籍紹介は >>2 以降
- 492 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 21:13:41 ]
- > 基本的にSTLはスレッドセーフではない
例えばどんな場合?
- 493 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 21:15:33 ]
- >>492
どんな場合って・・・何するにしてもスレッドセーフを要求する 仕様なんてないはずだけども。
- 494 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 21:17:02 ]
- STLportはスレッドセーフだったような
- 495 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 21:21:14 ]
- うーん、書いてないとスレッドセーフでないってのも・・
beginthread一回でも呼ぶプロセスではstlは一行も使えないってことに なりそうな。 たぶん皆、同一インスタンスに複数スレッドでアクセスしなければ平気 くらいな解釈で使ってるんだよね
- 496 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 22:41:35 ]
- 標準にスレッドセーフという概念がないから語っても意味ないだろ
- 497 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:19:44 ]
- スレッドの概念自体が無い
- 498 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:26:59 ]
- ちっ、また自己責任かよ。つかえねーな
- 499 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:30:23 ]
- 効率のためにintの幅すら決めない言語に向かって何を言ってるのかね
- 500 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:39:35 ]
- int幅が実装依存なのはちゃんと作ってれば別に問題ないだろ。
- 501 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:41:25 ]
- 原子力発電所も冷凍餃子もちゃんと作ってれば別に問題無いぞ。
- 502 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:41:37 ]
- AMD64は自然な長さが64ビットなのにintが32ビットだな
- 503 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:48:23 ]
- intが64bitな処理系は現存するのか?
その場合、32bitを示す型は何だろう?
- 504 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:52:06 ]
- C言語が設計された時期が古いので64ビットとか考えてなかったんだろ
- 505 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:52:21 ]
- >>503
ILP64 でググれ。
- 506 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:09:02 ]
- 32bitといったらlongなんじゃないのか
- 507 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:16:41 ]
- >506
まさか、int 64bitでlong 32bitと言ってる?
- 508 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:17:56 ]
- ねたにまじ(ry
- 509 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:24:17 ]
- LP64のほうが素直だねやっぱり。
I16/LP32はDOSで経験があるし(w
- 510 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:25:16 ]
- もうビット数気にする処理には stdint.h 使えばいいということで。
- 511 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:29:14 ]
- _int64とかタイプしたくないよヽ(`Д´)ノウワァァァン
4G超えのファイルなんかザラだろうが。
- 512 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:31:19 ]
- typedef すれば?
- 513 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:34:47 ]
- typedef _int64 long long ってできねーだろ
- 514 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:37:09 ]
- え?
- 515 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:37:34 ]
- long long とか名前長くしてどうするよ。
- 516 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:42:24 ]
- long long は既にあるべよ。long_long_long とかにしようべ。
- 517 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:44:20 ]
- >>515
C99にあるんですよlong long。 >>516 そうします。
- 518 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:47:19 ]
- long long ago むかーしむかし、あるところに長い長いアゴの男がおりましたとさ
- 519 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:50:58 ]
- _int64とはVC++くさいが、
VC++ .NET 2003からはlong longも使えるぞ。
- 520 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:51:20 ]
- 中学の英語の授業中誰もが経験するであろうネタだな
- 521 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:53:43 ]
- >>516
別に知っとるが、_int64 の方が短くて分かりやすくていいじゃン
- 522 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:55:01 ]
- i8 u8 i16 u16 i32 u32 i64 u64
これでtypedefしとけば字数的にはint未満だ。何かとぶつかりそうだけどな。
- 523 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:55:52 ]
- そこで名前空間ですよ。
- 524 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:55:54 ]
- 以下(8bitのみ未満)の間違い。
- 525 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:56:53 ]
- my_primitive_type::u64
なげーよ。
- 526 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:59:03 ]
- だから、自分のプログラム全体を特定の名前空間内に入れて、
そこで i8 とか定義しとけば何も付けなくて大丈夫。
- 527 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 02:14:27 ]
- stdintはC++の標準に入ったんだっけか
intN_tな連中。
- 528 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 02:18:41 ]
- _tてなんかの略?
- 529 名前:デフォルトの名無しさん [2008/02/01(金) 02:30:24 ]
- type
- 530 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 02:47:05 ]
- >>527
最新のドラフトに cstdint と stdint.h が載ってた。次の改訂 (C++0x) で入るみたいだね。
- 531 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 06:38:05 ]
- C++0xはC99の(ほぼ)上位互換になるんですか
それともC99で使えてもC++0xではサポートされない機能もあり?
- 532 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 07:22:07 ]
- コンパウンドリテラルとか
配列個数に変数使うとか そういうのは C++0x で無視
- 533 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 07:24:48 ]
- restricted ポインタとか色々無視されてる。
- 534 名前:デフォルトの名無しさん [2008/02/01(金) 07:54:32 ]
- 「配列の要素数に変数」はSTLと相性悪すぎだからな。
- 535 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 08:29:10 ]
- >>534
kwsk
- 536 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 09:01:10 ]
- コンパイル時に型が決まらない、だっけ?
- 537 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 13:51:10 ]
- type* v = new type[n]; ... delete[] v;
の糖衣構文にしてくれるだけでいいのに。
- 538 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 16:33:28 ]
- stlportsは2008には使えないの?
- 539 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 16:49:23 ]
- >>538
STLPort はインストーラ(make)が VS2008 にまだ対応していない。 手動でインストールするなら可能らしい。STLport VS2008 でググレ。俺はまだ試していないので、試したら結果を教えてくれ。
- 540 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 17:54:00 ]
- >>538
iostream使うとC2487がいっぱい出るよ
- 541 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 18:14:05 ]
- っ _STLP_STATIC_CONST_INIT_BUG
- 542 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 01:05:39 ]
- >>537
std::vector で何が不満なのさ?
- 543 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 01:06:58 ]
- 見た目が汚い
- 544 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 01:09:31 ]
- はぁ?
- 545 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 01:21:27 ]
- std::vector<double> v(i);
と double v[i]; なら下の方が綺麗だろう。 2次元配列とかなるともうキモいったらありゃしない。
- 546 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 03:43:09 ]
- エェー
- 547 名前:デフォルトの名無しさん [2008/02/02(土) 04:00:52 ]
- valarray使えや
- 548 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 07:03:42 ]
- [i] はキモいだろ。どんだけ使い込んでるんだよ。
(i) これは正常。むしろ性情。
- 549 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 07:29:17 ]
- 少し、頭冷やそうか
- 550 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 08:16:48 ]
- (O) < くぱぁ
╋ /\
- 551 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 11:50:57 ]
- >>548
FORTRAN か BASIC ばっかつかってるからそうなるんだ。
- 552 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 12:08:05 ]
- >>546 は
double v[i][j]; より std::vector< std::vector<double> > v(i, std::vector<double>(j)); や std::vector< std::vector<double> > v(i); std::for_each(v.begin(), v.end(), std::bind2nd(std::mem_fun_ref(&std::vector<double>::resize), j)); の方が美しいと感じるようだ。
- 553 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 12:21:14 ]
- どうしても知識をひけらかしたい奴がいるようだ。
- 554 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 12:29:59 ]
- 馬鹿か?
typedefしろよ
- 555 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 12:30:33 ]
- あんまりしょうもないtypedefたくさん作らないで欲しいお…
- 556 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 12:35:53 ]
- グローバルスコープでないならまだ許せる
- 557 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 12:50:03 ]
- typedef vector<int> vector_int;
typedef vector<double> vector_double; … こんなのがtypedefs.hに延々ならんでるソースを見せられたときは会社やめようかと思った。 結局1年しか勤めなかったけど・・
- 558 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 13:15:32 ]
- >>557
なにがあかんねん
- 559 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 13:17:39 ]
- >>558
いみないやん
- 560 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 13:18:26 ]
- まぁ普通意味を考えて命名するよな
#define VALUE_100 100 て定義する様なもの
- 561 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 14:29:30 ]
- >>557
そのレベルだと好みが分かれそうだなあ vector<string> string_list とかはありがちだけど。intとはな。。
- 562 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 14:32:11 ]
- vectorなのにlist?
- 563 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 14:36:40 ]
- >>561
そういう問題じゃない。 ・typedef名に意味付けがない ↓のようなコメントと通じるものがある a += 100; // aに100を足す ・字数がほとんど変わらず、打鍵数減少につながらない …ところで、あなたは list<string>をどのようにtypedefするの?
- 564 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 14:39:41 ]
- んなマジレスされても。。名前考えんのめんどうだからしないねくらいだが
- 565 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 14:48:34 ]
- 557に意味がないわけじゃないけどな。
typedefされた型しか使わないというのは、 互換性を重視するときは有利になる。
- 566 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 14:51:03 ]
- >>565
具体的にどんな移植性の問題が typedef によって解決されるんでしょうか?
- 567 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 14:54:21 ]
- >>565
typedefはそういう用途に使えることは否定しないけど、 vectorもintも標準の一部だから、互換性の点でもtypedef vector<int> vector_int;とする意味は無いんじゃないの。
- 568 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 14:55:54 ]
- >>566
typedefが移植性のためにあるようなものなのにな。 なぜなにの子供か?
- 569 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 14:56:04 ]
- もしかしてあれか? int のサイズが違う環境では
typedef vector<long> vector_int; に置き換えて「すっきり解決」とか、そういう話か?
- 570 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 15:01:04 ]
- intのサイズ違いをそのレベルで解決すべきじゃない。
- 571 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 15:03:50 ]
- つsize_t/off_t
- 572 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 15:05:24 ]
- だからやっぱり vector_int は意味無いだろ >565
- 573 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 15:31:24 ]
- std:: を省略できれば打鍵数が結構減る。
- 574 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 17:22:02 ]
- 打鍵数とかでなく、会社からSTLは一律typedefせよ の命題が
課せられれば、vector_int みたいなものは生まれるし、それでもよいと思うぞ。 だから >>557 がどうこう言う程の問題ではないと思われるが。 こういうのは出たての若いのによくいる 自分は社内でも皆よりよく分かってる と 思いこんでる井の中の蛙ってこった。
- 575 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 17:31:06 ]
- std::foreachとかどうやってtypedefするの?
- 576 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 17:34:44 ]
- >>574
そんな命題を甘んじて受けるほど奴隷ではありません。
- 577 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 17:35:12 ]
- >>574
その通り、会社の方針なら勤めてる以上は従わざるを得ないのは言うまでもない。 そこで、無能だったり考え方の一致しなかったりする上司の下で働く羽目になった場合に取り得る行動は、 我慢して働きつづけるか、さっさと辞めるかの二者択一で、>>557は後者を選んだだけだろ。 別に非難されるようなことではない。
- 578 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 17:36:14 ]
- >>574
それは無能なプログラマが無能な会社に変わっただけで、>>557の判断には影響ないだろw
- 579 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 17:39:09 ]
- >>576
それで問題が発生したとき責任取って解決できるのなら それでも良いんじゃね? いざとなったら逃げるのはただの口だけ君。
- 580 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 17:43:00 ]
- vector<vector<vector<int> > >みたいなものを書かざるをえない状況なら
vector<T>をtypedefすることもあるんじゃないかな?
- 581 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 17:43:44 ]
- >>579
会社の命令に背いて問題を起こすなんて選択肢はもとからないよ 常識があれば、「従う」と「去る」の二択しか取れない
- 582 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 17:43:51 ]
- そんな当たり前の事言われましても。
- 583 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 17:48:52 ]
- >>566
このケースでvector<int>は必要なかったとしても、 list<string>はtypedefしたほうがいい。 とすれば、必要あるなしの境界はどこで切る? こういう皆が使って判断の微妙な境界線は、 「一律typedef」が安全。
- 584 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 17:53:28 ]
- STLって型によらずアルゴリズムを記述できるような抽象化を
目指して作られてるはずなのに、ソースはtypedefだらけ。 それを異常と感じないほうがおかしい。
- 585 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 17:55:26 ]
- 抽象的な書き方をしない箇所もある。適切にtypedefすることには何の問題もない。
- 586 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 18:03:04 ]
- そもそもどういう理由でtypedefしてるの?
- 587 名前:デフォルトの名無しさん [2008/02/02(土) 18:04:36 ]
- >>584
抽象化するためにtypedefが必要だったりするし、STLなんかtypedefだらけだけど?
- 588 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 18:12:31 ]
- >>581
まぁね。 ドラマのまねっこで「僕はそんなことはできません」なんて 楯突いてその後その人間同士が上手く行くことなんてまぁないからね。 ドラマはご都合主義だから上手くいくけどさw
- 589 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 18:17:26 ]
- >>588
自分も会社の一員だけどね。そういうこだわりのない人間が集まってるから駄目な会社になったとも言える。
- 590 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 18:17:50 ]
- >>574
仕事ってオブジェクト(?)をもっと理解した方がいいよ。 逆に考えて、君がお客で 奴隷とかいうのが車屋の店員だったとする。 君は赤色の車を注文した。 しかし店員は「いやいまのトレンドは白です。 そこは譲れません」 と言ってるのと大して変わらん。
- 591 名前:590 mailto:sage [2008/02/02(土) 18:21:36 ]
- アンカー違い >>576 へ訂正
- 592 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 18:24:24 ]
- 本日の課題
授業単元:コンピュータ理論 課題:本字の流れをvectorとlistを使って表しなさい。但しtypedefは使わないものとする。
|

|