413デフォルトの名無しさんsage2012/09/18(火) 11:40:05.86
いいえ
414デフォルトの名無しさん2012/09/18(火) 11:48:12.72
operator << の中で、たとえば n の表示に再帰を使っているなら n が大きいほど時間がかかる
operator でない << も、シフト命令をマイクロプログラムのループで実装している CPU では n が大きいほど時間がかかる
シフト命令をバレルシフタで実装している CPU では n の値と処理時間は無関係
いずれにせよ n の値と処理時間が反比例したり負の比例定数を持つことはない
415デフォルトの名無しさんsage2012/09/18(火) 11:51:49.97
じゃあIntel i5プロセッサーはどうですか?
416デフォルトの名無しさん2012/09/18(火) 11:56:36.03
スレチ
417デフォルトの名無しさんsage2012/09/18(火) 13:07:22.43
>>412
C++の場合、その演算の対象となる型によって答えが変わる。
対象が整数型の場合、>414の後半の通り。
今時のCPUなら、大抵同じ時間で処理できる。詳しいことは、該当CPUスレなどで。。
>>414
operator<<()が表示を担っているという前提はおかしい。std::ostream以外の可能性も考慮すべき。
418デフォルトの名無しさんsage2012/09/18(火) 13:21:01.30
boostスレッドが死んでるのはC++11が便利過ぎてboostいらなくなったからとか
あるのだろうか
419デフォルトの名無しさん2012/09/18(火) 13:55:18.69
>>417
たとえばつったじゃん
負数を考え落としたのはアフォだったけどw
420デフォルトの名無しさんsage2012/09/18(火) 23:17:49.72
黒魔術つかった不思議に便利なライブラリよりも
XMLパーサとか普段の仕事で使える実用的で黒魔術的じゃないライブラリの充実を目指したほうがいい
boostは終わったコンテンツ
C#ライブラリのような方向を目指さないと未来がない
421デフォルトの名無しさん2012/09/18(火) 23:27:57.88
なにをゆうてんのかわからん
422デフォルトの名無しさんsage2012/09/18(火) 23:36:25.82
xmlパーサならあるだろ
423デフォルトの名無しさん2012/09/18(火) 23:41:52.90
Boost総合スレ part10
http://toro.2ch.net/test/read.cgi/tech//
424デフォルトの名無しさんsage2012/09/19(水) 00:21:08.66
たしかにテンプレートライブラリはもう十分すぎていらんな
425デフォルトの名無しさんsage2012/09/19(水) 00:45:02.30
実用的で黒魔術的じゃないライブラリといえばprogress_display
426デフォルトの名無しさん2012/09/19(水) 01:14:53.51
>>424
全然足りない、というか不備だらけ
あの大風呂敷の範囲内でだけど
concept さんには退学とまでの苛烈な仕打ちをしながら
不審者 GC には甘い顔というのは、原理主義者に言わせると唾棄すべきだし
テンプレートテンプレート引数君に気高く見守られているもう終わった老人
禿自身が atomic に及び腰で超問題児 volatile をどうにもできないし
社歌に起立しない者にもナメられっぱなし
427デフォルトの名無しさん2012/09/19(水) 01:21:00.82
∧_,,∧ ♪マンドクセ ∧_,,∧ ♪
o(・ω・ `)o o(´ ・ω・ )o
(( / ( )) (( ) ヽ )) シャカシャカ
し――J し――J
428デフォルトの名無しさんsage2012/09/19(水) 10:10:06.24
>>425
おいやめろ
429デフォルトの名無しさんsage2012/09/19(水) 15:56:20.35
boostのソケット周りの実装がウンコ過ぎて泣ける
430デフォルトの名無しさんsage2012/09/19(水) 16:21:54.31
テンプレート駆使するよりも
python使ってCのプログラムを自動生成したほうがよくないか
431デフォルトの名無しさんsage2012/09/19(水) 19:10:37.01
std::stringのdata()に書き込んじゃダメ?
std::string s;
s.resize(10);
char *p = const_cast(s.data());
for ( i = 0 ; i < s.size() ; ++i ) p[i] = 'a';
こういうことやりたいんだけど
432デフォルトの名無しさんsage2012/09/19(水) 19:42:47.75
>>430
デバッガのステップ実行ができん
(python のコードがステップ実行されないと意味ないからな)
まぁテンプレート駆使されると似たような状況かも知れんが、まだまし
433デフォルトの名無しさん2012/09/19(水) 19:52:31.60
const_cast の前には掟なし
ついでに reinterpret_cast も使ってヒャッハー
434デフォルトの名無しさんsage2012/09/19(水) 19:56:46.31
>>431
自己責任なら何でもあり。
それがC++
435431sage2012/09/19(水) 21:09:04.89
書き込んで実際に使えたらいいけど
よく調べてみたらdata()には書き込めないらしい
stringをchar *のように扱えたらいいのに
436デフォルトの名無しさんsage2012/09/19(水) 21:21:46.03
マジレスすると、
operator[]
を使えと。
あれ?
でも、メモリの連続性に vector と同じ保証ってあったっけ?
437デフォルトの名無しさんsage2012/09/19(水) 21:26:16.95
C++11からOK
438デフォルトの名無しさんsage2012/09/19(水) 21:41:31.55
>>431
わざわざconst修飾子を外して書き込むとは・・・
439デフォルトの名無しさんsage2012/09/19(水) 22:22:26.27
s[i] = 'a'; でいいじゃない
440デフォルトの名無しさんsage2012/09/19(水) 22:34:47.29
>>436
C++11から保証された
441デフォルトの名無しさんsage2012/09/19(水) 22:38:46.42
C++11から大丈夫
442431sage2012/09/19(水) 22:56:20.89
俺がやりたいのは、
char *の引数にstringを渡したいってことなんだよ
逆ならできるけど
イテレータ→ポインタは無理か
443デフォルトの名無しさんsage2012/09/19(水) 23:00:15.04
>>440
ありがと。
と、言う事は単純に >>439 の方法でも良いし、
char* p = s[0];
でも良いわけだにゃ。
444433sage2012/09/19(水) 23:02:05.00
間違えた。
char* p = &s[0];
だ。
445デフォルトの名無しさんsage2012/09/19(水) 23:05:08.95
char *p = str.c_str();
で良くないの?
446433sage2012/09/19(水) 23:05:54.65
>>442
それでもオケ。
但し、&(*iteratder) とするのが合法かな?
447デフォルトの名無しさんsage2012/09/19(水) 23:18:14.91
>>444 >>446
すみません。
これは by>>433 ではなく by>>443 でした。
orz...
448デフォルトの名無しさんsage2012/09/19(水) 23:21:13.89
>>445
2003 規格では const charT* です。
449デフォルトの名無しさんsage2012/09/19(水) 23:23:29.54
11でもconst CharT*です
450デフォルトの名無しさんsage2012/09/19(水) 23:30:28.10
C++03の場合はメモリの連続性が保証されてないから一旦char*にコピーしてから書き戻すのが良いと思う
451デフォルトの名無しさんsage2012/09/19(水) 23:32:39.95
#define string vector
452デフォルトの名無しさんsage2012/09/19(水) 23:38:55.39
>>451
いやそれではstring特有の豊富なメンバ関数が使えない
アルゴリズムを使って何とかしろというのか
453431sage2012/09/19(水) 23:43:18.14
>>446
なんだかよくわからないけどできた
ありがとう
454デフォルトの名無しさんsage2012/09/19(水) 23:47:47.94
レガシーにも使いやすい文字列クラス作ればいい
三時間もあれば十分だろ
455デフォルトの名無しさんsage2012/09/20(木) 00:23:52.01
まあ標準文字列クラスは失敗作だと言われているからねえ
でも新しい文字列クラスを作る必要があるのだろうか?
エンバカみたいなUnicodeStringみたいなクラスなら意味はあるかもしれんけど
456デフォルトの名無しさんsage2012/09/20(木) 07:36:53.68
>>450
実際連続じゃない実装なんて存在しないから
気にしなくてもいいと思うぞー
まあ、自己責任だけどな
457デフォルトの名無しさんage2012/09/20(木) 15:41:14.86
クラスでnewを使って
動的にインスタンス生成することの
メリットが分かりません
教えて下さい
458デフォルトの名無しさんsage2012/09/20(木) 15:52:20.39
std::vectorやstd::stringを使ったことがありますか?
new(malloc)が無いとああいったものの実装もままなりません
459デフォルトの名無しさん2012/09/20(木) 16:03:18.06
>>457
焦んなくていい
むしろ必要性を感じるまで使ってはならないものだ
460デフォルトの名無しさんsage2012/09/20(木) 16:25:44.41
テキストファイルの各行の長さは、コンパイルするとき、わからないから、動的に対応する
461デフォルトの名無しさんsage2012/09/20(木) 17:33:54.60
一度代入されたら変更されない変数はconstつけた方が高速になる?
462デフォルトの名無しさんsage2012/09/20(木) 17:39:44.61
>>461
そうとも限らない
const付けても強制的に型キャストすればいくらでも変更可能だから内部表現は環境依存
ただし文中では意味が異なる
配列数に使えたり
463デフォルトの名無しさんsage2012/09/20(木) 17:40:26.46
あれそう言えば強制的に値を替えて配列数に使った時はどちらの値が使われるんだろう?
464デフォルトの名無しさんsage2012/09/20(木) 18:06:54.23
>>463
定数かconst変数かで異なる
http://ideone.com/2lAdl
前者の「定数にconst外し」はそもそも未定義だけど
465デフォルトの名無しさんsage2012/09/20(木) 20:20:53.70
>>464
サンクス
こういう辺りが何か気持ち悪いんだよなあ
466デフォルトの名無しさんsage2012/09/20(木) 22:04:21.18
>>464
な、なにが、ど、どうなんているの、ですか?
467デフォルトの名無しさんsage2012/09/20(木) 22:37:43.51
後者の「配列宣言に変数」はそもそもGCC拡張だけど
468デフォルトの名無しさんsage2012/09/20(木) 23:49:37.14
>>467
c99
469デフォルトの名無しさんsage2012/09/21(金) 00:30:16.55
C++のスレだし>>464はどう見たってC++
C99でconstは定数にならないから前者のサンプルもおかしくなるな
470デフォルトの名無しさんsage2012/09/21(金) 07:44:24.10
いやc99のフィードバックで可能になった処理系もある(c99有効化フラグ立てて初めて使えるコンパイラとか)
gccとms、Intelのコンパイラくらいしか使ったことないのかもしらんが
471デフォルトの名無しさんsage2012/09/21(金) 07:48:23.51
たしかいつかのコードウォーリアにはそんな設定があった
472デフォルトの名無しさんsage2012/09/21(金) 08:04:24.73
C++11がC互換部分でC99取り込むことになるから今後の処理系は色々捗るんだろな
473デフォルトの名無しさんsage2012/09/21(金) 19:24:40.06
まあ環境依存スレじゃないから例として不適切だとは思うが
474デフォルトの名無しさんsage2012/09/21(金) 22:47:01.73
for (int i = 0; i != hoge; ++i){
for(int j = 0; i != fuga; ++j){
...
}
}
iとjを間違えているバグ(i != fuga)を突き止めるのに小一時間かかった。
こういうミスを防ぐ、あるいは発見するコツってありますか?
475デフォルトの名無しさんsage2012/09/21(金) 22:49:07.90
i j kではなくx y z やa b cのように見た目が似て居ない変数でループを回しなさい
476デフォルトの名無しさん2012/09/21(金) 22:52:23.54
>>474
hogeキチガイはプログラムなんか組まなくていいから回線切って引きこもってろよ
477デフォルトの名無しさんsage2012/09/21(金) 22:55:27.21
>>474
お前ゴミだな。
hogeは覚える暇があってもコーディングスキルを身に付ける暇はないんだな。
マジでゴミ。
478デフォルトの名無しさんsage2012/09/21(金) 22:56:12.40
会社で何か嫌なことでもあったの?
479デフォルトの名無しさんsage2012/09/21(金) 23:03:27.60
>>475
とてもシンプルですね。
確かにiとjが似ているせいで発見されにくかったと言えます。
>>476-477
hogeへの拘りにワラタ。
480デフォルトの名無しさん2012/09/21(金) 23:07:34.06
>>479
低レベルな内容で詰まる癖にhogeとか使う余裕ないだろ
生活が苦しいのパチ屋につぎ込んで生活破綻するDQNと同じ思考回路
481デフォルトの名無しさんsage2012/09/21(金) 23:09:01.41
エディタのフォントを変えてみるという手も・・・?
まあ視認性悪くなって効率悪くなりそうだけど
482デフォルトの名無しさんsage2012/09/21(金) 23:09:44.71
会社なら>>479みたいな奴は窓際行きだよ。
ゴミと同じくらいな価値しかないもん。
483デフォルトの名無しさんsage2012/09/21(金) 23:12:50.54
親がクズなんでしょ
まともに教育できない癖にガキ生んだのがこの結果
何を優先すべきかという判断力が全くない
だからつまらないミスで引っ掛かって赤の他人にきいてるんでしょ
親がクズだから>>479に罪はない
>>479も自覚はなさそうだし
484デフォルトの名無しさんsage2012/09/21(金) 23:16:02.87
親がクズというより>>479は精神疾患系じゃないか?
485デフォルトの名無しさん2012/09/21(金) 23:27:35.20
心理学の話できいたけど、できちゃった婚とかだと子供は望んで生んだわけじゃないから、法に触れない最低限の教育しかしないらしい。
だから、全員とは言わないけど、よく思考回路の狂ったガキが輩出される。
コーディングもままならないのにhogeとか使ってる頭のおかしな>>479もその可能性が高い。
誰にも望まれずに、親にすら望まれずに生まれてきたガキ。
当然社会にもいらない。
486デフォルトの名無しさんsage2012/09/21(金) 23:31:24.59
いい大人が子供相手に叩きすぎw
お前らだって小さい頃にチンゲン菜の「チンゲ」とかに反応したことあるだろ?
子供のうちはそういうものに反応するんだよw
>>479も中学校に進学する頃にはまともになってるさ
487デフォルトの名無しさんsage2012/09/21(金) 23:36:27.24
>>479
変数はbokuhagomidesuのほうがいいんじゃね?
そのほうがお似合いだぞ
488デフォルトの名無しさんsage2012/09/21(金) 23:38:14.96
>>474
そういう糞みたいな間違いを防ぐ方法を教えてやる
「無能なPGは即クビ」
ソフトの品質保つにはこれが一番効く
489デフォルトの名無しさんsage2012/09/21(金) 23:43:17.00
病人怖い
490デフォルトの名無しさんsage2012/09/21(金) 23:43:24.93
hogeは良い文化だと思うけどね。
hogeを使ってるかどうかでまともかどうかある程度ざっくり判別できる。
hoge使ってるような奴はまともじゃないから当たり障りのないように適当に相手をしておけばよい。
491デフォルトの名無しさんsage2012/09/21(金) 23:46:45.42
>>490
そうやって当たり障りなく相手にするから>>479みたいなキチガイがまともに相手してもらえてると思って調子に乗るんだろ
492デフォルトの名無しさんsage2012/09/21(金) 23:49:23.88
for(int hoge = 0; hoge < 5; ++hoge)
for(int fuga = 0; fuga < hoge; ++fuga)
凄い!iとjを使う1024倍見やすい!hoge&fugaってすばらしい!
493デフォルトの名無しさんsage2012/09/21(金) 23:58:37.24
hage
494デフォルトの名無しさんsage2012/09/22(土) 00:10:44.66
>>479
ようゴミ野郎
495デフォルトの名無しさんsage2012/09/22(土) 00:14:29.26
もう少しまじめに議論しないか
496デフォルトの名無しさんsage2012/09/22(土) 00:21:24.31
outsideLoopCounterとでもすればいいのにhogeとか
マジモンの池沼か?
497デフォルトの名無しさん2012/09/22(土) 00:22:59.91
>>495
hogeとか使ってる>>479に言え。
498デフォルトの名無しさんsage2012/09/22(土) 00:24:07.44
議論せき止めてるアンチhoge厨いい加減にしろや
みんなマジで迷惑してんだけどなんで気付かないの?
499デフォルトの名無しさんsage2012/09/22(土) 00:25:10.01
>>497
意味の無いアルファベットの並びなんか何だっていい
なぜそんなものに不快感を示すのか分からない
500デフォルトの名無しさんsage2012/09/22(土) 00:26:58.07
hoge使うから議論が止まってんだろ
基地害>>479の自業自得w
501デフォルトの名無しさんsage2012/09/22(土) 00:32:25.73
>>499
そうか?
お前クレジットカード申し込み書の記入例の名前欄にに「スーパーおまんこ天国 放射能ひろしDX」とか書いてあったら、この会社頭おかしいなって思わない?
記入例だから何でもいいけど、普通は「山田 太郎」とかにするだろ。
何でもいいとはいえ時と場合で限度がある。
「スーパーおまんこ天国 ひろしDX」に疑問を感じない>>499の神経にはびっくり。
502デフォルトの名無しさん2012/09/22(土) 00:36:06.39
869 名前: デフォルトの名無しさん 投稿日: 2012/09/19(水) 08:04:53.77
亞汰魔がおかしい
927 名前: デフォルトの名無しさん [sage] 投稿日: 2012/09/20(木) 02:48:04.54
"亞汰魔"の検索結果、7件
どこぞのゲーマーのブログに引っかかる訳だが、恥かしくねーのかな?
本人か、影響されたバカか、それとも晒すためのワザと書いてるのか、
知らんけどさー
928 名前: デフォルトの名無しさん [sage] 投稿日: 2012/09/20(木) 02:58:47.68
亞太魔wwwwwwwww
hogeと同じレベルwwwwwwwwwwwwwwwwwwwwwwww
503デフォルトの名無しさんsage2012/09/22(土) 00:38:48.70
>>501
「意味の無い」 「アルファベットの並び」 と言ったはずだ
504デフォルトの名無しさんsage2012/09/22(土) 00:46:09.97
>>503
例だろ
そんなことも分からないの?
じゃぁスーパーおまんこなんたらやめて
「じゃびみょぱひるるきいぱ かぴよだばままさろゅぴ郎」に読み替えろ
hoge擁護派にもまともな香具師がいないなぁ
505デフォルトの名無しさんsage2012/09/22(土) 00:47:16.69
>>501
この会社頭おかしいと思っても、
>>476 の様にその会社に暴言を吐くことは普通しないよな。
子どもじゃないんだから。
黙って、そのまま記入するか、作るカードの会社を変える。
あと、例があまりに非現実的だし、下品で笑えない。
もう少し現実にありそうな事を考えてくれよ。
506デフォルトの名無しさんsage2012/09/22(土) 00:47:20.07
またhoge厨が湧いてんのか。
こうなることは目に見えてるから荒らすためにわざとhoge使ってるんだろ。
507デフォルトの名無しさん2012/09/22(土) 00:49:11.64
>>505
まずhogeってのが非現実的で下品だから釣り合いは取れてんじゃね?
508デフォルトの名無しさんsage2012/09/22(土) 00:56:08.32
hogeから下品な想像できる人なんてこの世にほとんどいないよ
無視して大丈夫なレベル
509デフォルトの名無しさんsage2012/09/22(土) 01:00:44.19
>その会社に暴言を吐くことは普通しないよな。
2chだからいいだろ。
現実ではググレカスも言わないし、初対面の相手にタメ口をきくこともない。
510デフォルトの名無しさん2012/09/22(土) 01:02:02.84
そもそも無意味な変数なんてあんの?
意味あるなら意味ある名前付けると思うけど
511デフォルトの名無しさんsage2012/09/22(土) 01:06:14.26
>>510
例えば一時的なカウンタとして使用する i j k などは、
その「使われ方」からカウンタという意味を読み取るが、
「名前自体」からは意味を読み取ることはできない。
512デフォルトの名無しさんsage2012/09/22(土) 01:07:29.24
>>501のような例を思いつく人間の思考が気持ち悪い
513デフォルトの名無しさんsage2012/09/22(土) 01:08:20.31
2chってサイコーに面白いね
514デフォルトの名無しさんsage2012/09/22(土) 01:08:30.52
>>509
良い悪いじゃなくて、単純にウザい
515デフォルトの名無しさんsage2012/09/22(土) 01:09:56.86
使われ方で分かるならhogeじゃなくてijkxyzでいいだろw
516デフォルトの名無しさん2012/09/22(土) 01:10:39.33
確かにhogeは単純にウザい面もあるね
517デフォルトの名無しさん2012/09/22(土) 01:11:31.50
hogeって・・・
馬鹿じゃねwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
518デフォルトの名無しさんsage2012/09/22(土) 01:16:23.22
はい感想掲示板と質問掲示板の区別もつかない>>512のレスはいりましたー
519デフォルトの名無しさんsage2012/09/22(土) 01:18:37.33
意味ない変数ならundefinedvariableとかでいいんじゃないの?って思うけど・・・
520デフォルトの名無しさんsage2012/09/22(土) 01:23:53.09
意味がないなら名前は何でもいい
何でもいいなら短いほうがいい
しかし短すぎるとすぐに枯渇するし打ち間違えしやすい
つまり4文字程度がベスト
4文字で無意味な文字列といったら誰もが思い浮かべるのがhoge
つまりhogeがすべてを兼ね備えたもっとも美しい識別子なんだよ
521デフォルトの名無しさん2012/09/22(土) 01:33:02.07
短いのがいいならfooにしとけks
枯渇しねーしfoo打ち間違えるならIT機器に触るのはやめろ
522デフォルトの名無しさんsage2012/09/22(土) 01:37:59.62
fooでいいと思う。
そうやって何でもかんでもガラパゴス化を推し進める愚図が多いから
日本のITは世界に遅れをとってるんだろうな。
システム自体に顕著にガラパゴス化は現れてなくとも
そういう精神の愚図が作ったものはやっぱりそういう性質になるんだと思うよ。
523デフォルトの名無しさんsage2012/09/22(土) 01:40:34.81
fooは奇数文字数だから美しくない
bar bazとつなげた時も韻がなってないからごろがわるい
一方でhogeならその辺はすべて安心して使える
524デフォルトの名無しさんsage2012/09/22(土) 01:45:56.32
ケータイでガラパゴス化に懲りたと思ったらまだそんな人がいるのか。
一人ならいいけど大勢いるとなると日本のIT産業は衰退していくだろうね。
525デフォルトの名無しさんsage2012/09/22(土) 02:02:14.22
hoge使ってる奴はクズ
たまにDQN親のイミフな主張をきくけどあれと一緒
526デフォルトの名無しさんsage2012/09/22(土) 03:39:16.72
>>479親子ってこういう感じなんだろうな。
残業がどうとかじゃなくて普通に神経を疑われるようなことをさも当然のように行っている様は、
明らかにおかしいhogeをさも当たり前のように使っている様子にそっくり。
以下コピペ↓
2年前にはいってきた新人
うちは少なくとも週に2〜3回は残業が当たり前っていうのは言ってたのに
1ヶ月ほどで母親が電話してきた。
「うちの息子は何も悪くないのになんで残業させられるんですか?」
残業って別に悪いことしたお仕置きでやってるわけじゃねーよって思ったけど
この新人が社長の知り合いの紹介で入ってきたって言うこともあって
当時の上司が少し様子見ってことで新人だけ残業なしにしてやった。
当然、みんなで残業した次の日には新人君は話に入れない。
みんなでメシ食った話や○○さんのがんばりのおかげで10時に終わった〜とか・・・
そしたら今度は母親が怒鳴り込んできた。
うちの息子ちゃんをみんなでいじめてる。息子ちゃんのわからない話で盛り上がらないで!
残業のときの話は禁止にしてちょうだい!って社長に直談判したらしい。
さすがに社長も「特別扱いはできない。もとより残業免除って言うすごい特別扱いしてるのに
それでも耐えられないんだったらうちの会社があわないのですかね〜?
では次からは特別扱いなしで残業もしてもらいますよ。」って言ってやめてもらった。
ほんと神経わからん親子だった。
527デフォルトの名無しさん2012/09/22(土) 07:47:46.20
質問なのですが
明解C言語入門編LVのC言語は理解できるのですが
独習C++か標準講座C++のどちらを買おうか迷っています。
ネット上にて独習C++はCの知識がある人向けと書いてあったのですが、どのくらい必要なのかわからないので質問しました。
528デフォルトの名無しさんsage2012/09/22(土) 07:54:11.90
>>527
独習でいいよhoge
529デフォルトの名無しさんsage2012/09/22(土) 08:19:33.30
hoge
hoger
hogest
530デフォルトの名無しさんsage2012/09/22(土) 08:49:13.97
>>527
ロベール買っとけ
531デフォルトの名無しさんsage2012/09/22(土) 12:31:36.46
>>527
ストロストラップ本買え
理解できないならC++を使うのは諦めろ
532デフォルトの名無しさんsage2012/09/22(土) 12:32:45.28
hage
hige
huge
hege
hoge
533デフォルトの名無しさんsage2012/09/22(土) 12:52:36.74
homo
534デフォルトの名無しさんsage2012/09/22(土) 13:04:13.50
>>531
ハードル高いなおい
535デフォルトの名無しさん2012/09/22(土) 14:59:35.27
事実だな
むしろ割引きなくらい
536デフォルトの名無しさんsage2012/09/22(土) 16:28:05.77
>>527
effective c++
537デフォルトの名無しさんsage2012/09/22(土) 16:31:50.83
マジレスすると興味あるFOSSのコードを落としてきて読め
そのレベルの書籍から学べることは何もない。まったく何もない。本当に何もない
538デフォルトの名無しさんsage2012/09/22(土) 16:38:29.83
初学者に何言ってんだアホか
539デフォルトの名無しさんsage2012/09/22(土) 16:46:31.47
文法おぼえたら、後は設計だけだよ
書籍の購入なんて初学者が嵌る罠だから
>>538
おまえがそう思うなら、既に罠に嵌っている
540デフォルトの名無しさんsage2012/09/22(土) 17:01:45.07
書店で手にとって気に入った本を選ぶ
541デフォルトの名無しさんsage2012/09/22(土) 17:08:10.65
田舎は大型書店でも書籍の品揃えが悪いよ
一度だけ東京の書店に行ったけれど、品揃えの豊富さには感動したもの
542デフォルトの名無しさんsage2012/09/22(土) 17:51:11.30
そうそう神戸の田舎者も感動しました都内の書店には
543デフォルトの名無しさんsage2012/09/22(土) 18:22:03.83
文法覚えたらMPやら型消去が身に付くのか?
余程の天才じゃない限り無理だろ
まぁ媒体は本でもWebでもいいけど脱初心者向けのガイドは必要だろ
544デフォルトの名無しさんsage2012/09/22(土) 18:26:18.78
>>542
九州の南の方ですが何か
>>543
それって本当に必要な機能か?
本質的な問題を解決するために、ソフトウェアを書くために絶対的に必要な機能か?
545デフォルトの名無しさんsage2012/09/22(土) 18:28:24.62
初学者に必要なのは文法、コーディング規約、つくりたいものに似たOSSのコード
あると便利なのがプリンタとkindle
546デフォルトの名無しさんsage2012/09/22(土) 19:40:15.18
尼さんステマ乙やがな
547デフォルトの名無しさんsage2012/09/22(土) 19:51:04.06
>>542
神戸なら、三宮のジュンク堂でいいじゃん。
都内の三省堂、紀伊国屋、八重洲ブックセンターとかには敵わないけど、
C++ 程度ならそれなりに揃っていたと思うが。
548デフォルトの名無しさんsage2012/09/22(土) 20:01:41.61
ム板もここ数年で本当にレベルが落ちたな。
549デフォルトの名無しさんsage2012/09/22(土) 23:47:56.16
核実験時代の放射能で徐々に知能低下や無気力化が進みこの前のあれでトドメさされた感じやね
ゆとりたちは完全に老害の被害者だよ
550デフォルトの名無しさん2012/09/23(日) 01:33:51.18
やっぱりロベールかなー
551デフォルトの名無しさん2012/09/23(日) 12:40:49.34
http://photo.air-nifty.com/blog/images/050811roll3.jpg
552デフォルトの名無しさんsage2012/09/23(日) 15:12:55.93
>>539
>文法おぼえたら、後は設計だけだよ
えっC++の場合文法知識だけでいきなり書き始めたらいろいろ罠に嵌るんでないの
メモリポインタとか
553デフォルトの名無しさんsage2012/09/23(日) 15:25:30.26
>>531
はげどう
・まずストロストラップ本を読みます
・ストロストラップが積極的に言いたがらない暗黒面を『Effective C++』で補完します
…
まあハードルが高いのも理由があるということで
554デフォルトの名無しさん2012/09/23(日) 17:40:53.10
あやしいカタカナ表記やめれ
「禿」が統一見解
555デフォルトの名無しさんsage2012/09/23(日) 18:18:10.33
>>554
そうなんだろうけどこの頃は自重すべきだと思うの……
某メタ変数に噛み付くキ……暇人もいるし
556デフォルトの名無しさんsage2012/09/23(日) 20:05:06.05
if(){
557デフォルトの名無しさんsage2012/09/23(日) 20:09:33.17
ごめんなさい、↑のはミスです.........
質問です。
下のような感じで、変数の値が変わったら一瞬だけtrueが返ってくるような関数ってありませんか。
if(changed(Var)){
}
558デフォルトの名無しさんsage2012/09/23(日) 20:22:23.75
特定の変数向けの関数?
それに合わせたフラグを変数毎にグローバル変数で宣言して、
変化を検知したらtrueを返す……てな感じでいいんじゃね
559デフォルトの名無しさんsage2012/09/23(日) 20:29:15.87
>>557
class C {
private:
int x;
bool isChanged;
public:
C(): isChanged(false) {}
int get() { return x; }
void set(int x_) { x = x_; Changed = true; }
bool changed() { bool t = isChanged; isChanged = false; return t; }
};
C X;
X.set(1);
if(X.changed()){ ... }
とかでどうよ。
560デフォルトの名無しさんsage2012/09/23(日) 20:30:47.30
バグってるわ…
< void set(int x_) { x = x_; Changed = true; }
> void set(int x_) { x = x_; isChanged = true; }
561デフォルトの名無しさんsage2012/09/23(日) 20:49:15.14
>>558
フラグ用に一々変数を設けるのが面倒だし、その分ソースコードの量が多くなって大変なんで、良い感じの関数が標準で無いのかな〜と思ったんですけど
残念ながら標準のライブラリでは無いみたいですね。
数日前にC++を始めたばかりでまともな関数を作る事が中々できないミジンコなんです・・・・
>>559
こんなミジンコな私の為にわざわざ作って頂いてありがとうございます!!
私にとってはかなり重宝なので今後ありがたく使わせて頂きます。
これを機にクラス定義のノウハウの方も勉強します。
お二方ありがとうございました。
562デフォルトの名無しさんsage2012/09/23(日) 20:49:48.20
メモリポインタは・・・・あれは難しいなw
563デフォルトの名無しさん2012/09/23(日) 21:31:44.13
初学者にストロストラップは挫折の道しかないだろ
564デフォルトの名無しさんsage2012/09/23(日) 21:32:05.22
びゃーねすっぽすっぽ
565デフォルトの名無しさん2012/09/23(日) 22:21:41.97
すっぽんぽん すっぽんぽんわーいわーいしたい
566デフォルトの名無しさんsage2012/09/24(月) 00:50:01.09
とりあえず、オライリー片っ端から読んどけば良くね?
567デフォルトの名無しさんsage2012/09/24(月) 07:06:26.40
fwriteでファイルにDWORDを書き込むと、書き込んだバイナリがバイト単位で逆順になるんですがなんでしょうかコレ
他の構造体などは問題なく書き込めるんですが
DWORD magic='DDS '; //0x44445320
FILE* fp;
fp = fopen(filename, "wb" );
fclose(fp);
出来上がったバイナリを覗くと中身は' SDD'(0x20534444)
568デフォルトの名無しさんsage2012/09/24(月) 07:11:56.22
>>567
リトルエンディアンでググってみてくれ
569デフォルトの名無しさんsage2012/09/24(月) 07:24:40.07
>>568
ググった
なにこれ面倒くさい
570デフォルトの名無しさんsage2012/09/24(月) 07:50:33.74
htonl
571デフォルトの名無しさんsage2012/09/24(月) 08:41:42.08
>>567
fwriteが見当たらんね
572デフォルトの名無しさんsage2012/09/24(月) 08:42:10.19
MAGIC は通常 ASCII 文字列なんだから char array で扱うよ
例えば WinMerge における unicode の BOM の取り扱いは
if (m_unicoding == ucr::UCS2LE)
{
unsigned char bom[] = "¥xFF¥xFE";
fseek(m_fp, 0, SEEK_SET);
fwrite(bom, 1, 2, m_fp);
m_data = 2;
}
else if (m_unicoding == ucr::UCS2BE)
{
unsigned char bom[] = "¥xFE¥xFF";
fseek(m_fp, 0, SEEK_SET);
fwrite(bom, 1, 2, m_fp);
m_data = 2;
}
else if (m_unicoding == ucr::UTF8 && m_bom)
{
unsigned char bom[] = "¥xEF¥xBB¥xBF";
fseek(m_fp, 0, SEEK_SET);
fwrite(bom, 1, 3, m_fp);
m_data = 3;
}
573デフォルトの名無しさんsage2012/09/24(月) 13:22:27.13
コンパイラによっては、バージョンによって'ABCD'の値が違ってくるしな。
574デフォルトの名無しさんsage2012/09/24(月) 13:59:16.68
DWORDってVCのマクロだよね、確か。
575デフォルトの名無しさんsage2012/09/24(月) 16:06:49.05
A
B
C
D
C
B
D
E
A
E
のように「同じ文字列が2つずつ存在しそれぞれ組みを作ってる」ようなファイルを
A
B
C
D
E
となるように整理するプログラムを作りしたいのですが、どなたか助言いただけないでしょうか
576デフォルトの名無しさんsage2012/09/24(月) 16:08:03.32
>>571
抽出ミスです…
普通に作るにあたって、文字列はちゃんと文字列として扱えば、
数値データなどはリトルエンディアンで書きだしてあっても普通に読めるってことでいいんですよね
577デフォルトの名無しさんsage2012/09/24(月) 16:13:56.91
>>575
std::vectorに読み込んで
std::sort()→std::unique()じゃだめなん
メモリに収まり切らないなら他の方法もあるけど
578デフォルトの名無しさんsage2012/09/24(月) 17:34:34.99
>>576
移植性がないことに注意。同じ端末で同じ環境で処理するなら、大抵問題ない。
579デフォルトの名無しさんsage2012/09/24(月) 17:36:54.44
>>578
WindowsPCならおkってことですかね?
ゲームのセーブデータなんかも気になるんですが
580デフォルトの名無しさんsage2012/09/24(月) 17:38:29.67
どうせ移植なんてしないだろ
581デフォルトの名無しさんsage2012/09/24(月) 17:41:50.71
例えばlongで読み書きするコードを実装したとして、
longが32ビットのバージョンで書いたデータを、
longが64ビットのバージョンで読んだらおかしくなるね。
その場合は、int32_tで書いておけって話にはなる。
582デフォルトの名無しさんsage2012/09/24(月) 17:45:12.17
エンディアンのこと気にするくらいなら、構造体にまとめて一気に書き出し・読み出しした方がいいのかな
583デフォルトの名無しさんsage2012/09/24(月) 17:46:33.47
バイナリの読み書きは基本的に同じアーキテクチャのPC間に限るだろ
異なる場合はテキストやCSV形式でやり取りするのが常識
584デフォルトの名無しさんsage2012/09/24(月) 18:02:45.48
限らないだろ
JpegやPNGのフォーマット、TCP/IPヘッダなどは
ネットワークバイトオーダーであるビッグエンディアン
585デフォルトの名無しさんsage2012/09/24(月) 18:19:31.87
ビッグエイリアン
586デフォルトの名無しさんsage2012/09/24(月) 18:26:25.69
データ量が小さいならテキストの方が楽ではある
手で書き換えたり出来るし
587デフォルトの名無しさんsage2012/09/24(月) 18:30:56.00
ちゃんとした規格ならBEかLEかも規定されてる。
で、移植性を重視したいなら、>>583の言うとおりテキストベースで。
達人プログラマにも書いてあったよね。バイナリはうんこって。
588デフォルトの名無しさんsage2012/09/24(月) 18:35:37.43
したがって、画像データならば、pnm 兄弟が最強
589デフォルトの名無しさんsage2012/09/24(月) 18:41:29.10
したがって、zipファイルはうんこ
590デフォルトの名無しさんsage2012/09/24(月) 18:51:42.65
そしてこのShift_JISである
591デフォルトの名無しさんsage2012/09/24(月) 19:01:44.19
>>588
処がどっこい、pnmもバイナリバージョンもあるし、depthが8ビットを越えたときの
エンディアンの規定がないな。
>>584
TIFFはBEもLEもあるな。
592デフォルトの名無しさんsage2012/09/24(月) 19:05:17.14
utf-8は素晴らしいでFA?
593デフォルトの名無しさんsage2012/09/24(月) 19:28:09.35
UTF-8は、英語でかくひとたちのわがまま
594デフォルトの名無しさんsage2012/09/24(月) 19:44:15.87
JIS第4水準が、8バイトとかになったんだっけ?>UTF-8
595デフォルトの名無しさんsage2012/09/24(月) 19:47:05.10
なるほど、
「11 22 33 44」を64ビットで表す時、
リトルエンディアンだと
00 00 00
でいいから、11 22 33 44 + 予備領域00 00 00 00 を確保すれば読むとき一緒になるのか
そういうことか
596デフォルトの名無しさんsage2012/09/24(月) 20:11:02.04
>>595
UTF-8の解釈が全くの間違い。スレ違いだから詳細は省略するが、Wikipediaででも調べてみなよ。
597デフォルトの名無しさんsage2012/09/24(月) 20:12:54.29
>>596
いやそれとは関係なく、ただリトルエンディアンの有用性に関する個人的解釈
598デフォルトの名無しさんsage2012/09/24(月) 21:16:57.01
>>582
x86で書き出してarmで読み出したときマズイ
599デフォルトの名無しさんsage2012/09/24(月) 21:22:31.75
>>595
嘘だろ?
600デフォルトの名無しさんsage2012/09/24(月) 21:24:49.84
まあXMLでシリアライズすれば済むんだけどな
C/C++には標準でXMLを扱うライブラリが付属してないので
いろいろフリーのパーサーがある
601デフォルトの名無しさんsage2012/09/24(月) 21:27:18.03
どの環境でも使えるソースコード公開されてるXMLパーサ教えてください
602デフォルトの名無しさんsage2012/09/24(月) 21:32:57.74
>>601
赤紫蘇2
http://akaxiso.sourceforge.jp/
tinyXML
http://www.grinninglizard.com/tinyxml/
MiX
http://mix.sourceforge.jp/
当たりが有名
603デフォルトの名無しさんsage2012/09/24(月) 21:56:24.00
RapidXMLとか
604デフォルトの名無しさんsage2012/09/24(月) 22:01:28.44
C♯のXDocument的なやつはないの?
605デフォルトの名無しさんsage2012/09/24(月) 22:48:54.02
C#は標準でライブラリに入ってるな
Javaも
606デフォルトの名無しさんsage2012/09/25(火) 07:16:54.77
doxygen
607デフォルトの名無しさんsage2012/09/25(火) 07:26:08.48
doxygenは最初使った時は感動したが、しばらく使うとOOP構造を視覚化して
くれる機能に物足りなさを感じて消してしまった
608デフォルトの名無しさんsage2012/09/25(火) 08:47:42.11
>>596
だから、LEの有用性とUTF-8は全く関係ないんだってば。データ値をみないとサイズが判らないんだから。
609デフォルトの名無しさん2012/09/25(火) 11:08:52.63
printf("%s¥n",NULL);
C++だと正常に動作するのですが、Cだと例外が出てしまいます。
どうしたらよいでしょうか。
610デフォルトの名無しさんsage2012/09/25(火) 11:12:38.78
printf("%s¥n", "");
にしろ
611デフォルトの名無しさんsage2012/09/25(火) 11:22:34.86
>>609
>C++だと正常に動作するのですが、
この根拠が分からない
C++でもまずいだろ
ヌルポインタの位置にどんなデータが入っているかは分からないのだから
しかもヌルポインタを差すポインタはどこも指してない事になっている
612デフォルトの名無しさんsage2012/09/25(火) 13:13:03.25
Cの規格書に%sに対する実引数は「文字列配列の先頭要素へのポインタで
なければならない」とあるのでナルポインタを渡してはいけない
文字列の先頭要素を指しているポインタを渡してください
613デフォルトの名無しさんsage2012/09/25(火) 14:24:29.64
>>611
これはprintfの仕様です。あまり知られてませんが。
%sにNULLが渡されたときは(null)に変換されるんです。
あと%pにNULL渡すと(nil)になります。
614609sage2012/09/25(火) 14:34:26.56
原因がわかりました。 gcc固有の問題でした。
gccが最適化によりprintfをputsに置き換えているのが原因でした。
なので、たとえば printf("a=%s¥n",NULL); などであれば最適化されず
a=(null) と出力されることが確認できました。
とりあえず、ビルトイン関数のうちprintfだけを抑止できればいいので
-fno-builtin-printf を指定してなんとかなりました。
615デフォルトの名無しさんsage2012/09/25(火) 14:38:34.90
最初はC++とCの違いの問題かと思ってここにしたけど
結局Cのそれもアーキテクチャ固有の現象だったので
ごめんなさい
616デフォルトの名無しさんsage2012/09/25(火) 14:49:18.71
>>613
規格と実装の区別ぐらいつけろボケ
617デフォルトの名無しさんsage2012/09/25(火) 15:03:30.32
>>616
規格でなく仕様です
618デフォルトの名無しさん2012/09/25(火) 15:37:35.97
規格でも仕様でも何ページのどこかくらい言え
619デフォルトの名無しさんsage2012/09/25(火) 16:55:57.79
64ページのレベル5です
620デフォルトの名無しさん2012/09/25(火) 19:04:24.30
出典の挙げ方はスレチなので教えてやらない
# どこの馬の骨か知らんが勝手に恥かいてろ
621デフォルトの名無しさんsage2012/09/25(火) 21:55:10.40
漠然と質問しますが
newされたものはnewされた物によってdeleteされるべきって設計思想はアリですかね?
そうでない場合が要求される場合か利点て何かありますか?
622デフォルトの名無しさんsage2012/09/25(火) 21:58:54.35
というか生成方法を隠蔽しているクラスでは常套手段
逆に生成破棄をクラス側で制限するとアロケーターが使えないので不便なときもある
623デフォルトの名無しさんsage2012/09/26(水) 06:38:36.26
スレチいわれそうだけどCOMなんてまさにそれだね
624デフォルトの名無しさんsage2012/09/26(水) 06:54:27.10
そこでスマポですよ
625デフォルトの名無しさんsage2012/09/26(水) 18:12:22.70
そしてデリータですよ
626デフォルトの名無しさんsage2012/09/26(水) 19:03:20.65
フリーター馬鹿にしてんのかオイ
627デフォルトの名無しさんsage2012/09/26(水) 21:44:49.25
template
class myclass{...}
みたいなテンプレートクラスがあったとして、std::mapとすることは出来ますか?
628デフォルトの名無しさんsage2012/09/26(水) 21:53:53.77
myclassはどこいった
myclassの中でって事ならyesだがそのくらい試せばいいだろう
629デフォルトの名無しさんsage2012/09/26(水) 21:55:15.52
まずは日本語で説明して
630デフォルトの名無しさんsage2012/09/28(金) 13:52:19.73
VisualStudioをUpdateすると動かなくなるプログラムってありますか?
boostとOpenCVに依存したプログラムが多いのですが
631デフォルトの名無しさんsage2012/09/28(金) 17:00:45.44
>>627
その説明はワケが分からない
632デフォルトの名無しさんsage2012/09/28(金) 19:38:44.34
>>630
環境変数変わってるとか?
633デフォルトの名無しさんsage2012/09/28(金) 21:23:09.35
>>630
ライブラリ側と開発環境のバージョンを合わせないとだめとかないか
634デフォルトの名無しさんsage2012/09/29(土) 10:50:56.62
オブジェクトの参照関係まで含めてシリアライズしてファイルに保存したいのだけどどうすればいいのかな
635デフォルトの名無しさんsage2012/09/29(土) 11:04:11.56
無理じゃないかな
636634sage2012/09/29(土) 11:09:04.85
すいません自己解決しました
なんの困難もなかったです
637デフォルトの名無しさんsage2012/09/29(土) 12:23:16.65
あるインスタンスが持つインスタンスを別のインスタンス内でも使いたいのですが
スコープの外で使う方法ってありますか?
class A
{
public:
class B hoge;
}
class C
{
public
Cのメンバ関数内で
hogeのメンバ変数の値を変えたり、メンバ関数を実行したいです
}
638デフォルトの名無しさんsage2012/09/29(土) 12:32:21.60
ポインタ
639デフォルトの名無しさん2012/09/29(土) 12:34:36.36
>>637
hogeとか使ってる基地害には無理
640デフォルトの名無しさんsage2012/09/29(土) 12:36:13.75
class A
{
public:
static B hoge;
}
641デフォルトの名無しさんsage2012/09/29(土) 12:40:17.51
>>637はhogeを覚える暇はあってもコーディングについてる暇はない池沼。
そんな奴がプログラムやってんの?w
精神構造がマジで腐ってんじゃねーのw
遊ぶ暇はあっても働く暇はないとか言って借金しまくった挙げ句に吊る奴と同じ。
社会に必要ないね。
642デフォルトの名無しさんsage2012/09/29(土) 12:43:44.96
吊ってくれりゃいーけどこういうゴミは人として最低限の尊厳もないからへーきで生ポ貰って生きていくよ
643デフォルトの名無しさんsage2012/09/29(土) 12:46:33.27
template class Bob {
friend class X;
private:
void Fuck();
};
class Alice {
Bob bob;
public:
void DoSomething() { bob.Fuck(); }
};
こういうふうにfriendに出来る対象をテンプレートで指定したいんですができません
どうすればうまくいきますか?
644デフォルトの名無しさんsage2012/09/29(土) 12:53:39.78
>>637
AのインスタンスかhogeをCのメンバ関数の引数で受け取ればいいだけだろ
645デフォルトの名無しさん2012/09/29(土) 12:58:04.30
hoge自体も問題だけど
そもそもhoge使ってる奴の質問って糞みたいな内容ばっかなんだよな
全く調べてないのが丸分かりの糞質問
>>641
hoge厨は無自覚だから吊るなんてことはない
646デフォルトの名無しさんsage2012/09/29(土) 12:59:24.55
>>637
お前はプログラム組むより回線切って引き込もってたほうが社会のため。
647デフォルトの名無しさんsage2012/09/29(土) 13:02:38.17
>>637「hogeを覚えたり書いたりする暇はあってもプログラムについて調べる暇なんてないんです><タダで教えてください><」
DQN「パチンコや競馬に行く暇はあっても働く暇なんてないんです><生活保護ください><」
同じwwwwwwwwwwwwwwwwwwwwwww
根性腐ってるwwwwwwwwwwwwwwwwwwwwwwww
648デフォルトの名無しさんsage2012/09/29(土) 13:15:36.66
ID出ない板はこれだから
649デフォルトの名無しさんsage2012/09/29(土) 13:17:45.19
ID出たところでHogeとか書き込むゴミクズは減らないと思うが・・・
650デフォルトの名無しさんsage2012/09/29(土) 13:17:47.77
面白いと思ってんだろ
651デフォルトの名無しさんsage2012/09/29(土) 13:22:03.93
>>635
そうだな
お前には無理だな
652デフォルトの名無しさん2012/09/29(土) 13:23:30.52
>>637を叩きまくってるけど
元凶は>>637みたいなガキを育てた
>>637の親.
>>637の親はマジモンの屑.
近所からは歩く恥さらしって
呼ばれてるよ.
653デフォルトの名無しさんsage2012/09/29(土) 13:32:08.68
とうとう親まで叩き始めたw
654デフォルトの名無しさんsage2012/09/29(土) 13:38:25.01
>>637=マジキチ
655デフォルトの名無しさんsage2012/09/29(土) 13:53:04.31
>>639,640
ポインタとか、staticってやつを使えばいいんですねサンクス
656uysage2012/09/29(土) 14:55:58.07
糞ニートは黙ってろよ
657デフォルトの名無しさんsage2012/09/29(土) 17:12:12.70
糞ニートはお前
658デフォルトの名無しさんsage2012/09/29(土) 17:41:00.80
hoge
659デフォルトの名無しさんsage2012/09/29(土) 19:52:41.65
てst
660デフォルトの名無しさんsage2012/09/29(土) 19:53:16.64
共依存するようなケースを除いて全てヘッダーファイルに実装を書いてきたのですが、
マルチコアCPUに買い換えたのを機にこれを見直そうと思いました。
が、面倒で身につきません。
明確に指針を立ててヘッダーファイルと実装ファイルに分けている、
もしくは分けていないという人はいますか?
いたらその理由を教えてください。
661デフォルトの名無しさんsage2012/09/29(土) 19:55:38.46
別に直さなくていいだろ
662デフォルトの名無しさんsage2012/09/29(土) 19:55:47.89
な、なんでそんなことしてきたのん?
663デフォルトの名無しさん2012/09/29(土) 20:02:38.67
マルチセッションにサーバー OS が必要とか思ってる手合いか?
664デフォルトの名無しさん2012/09/29(土) 21:32:11.47
てすと
665デフォルトの名無しさんsage2012/09/29(土) 21:51:03.51
また荒らしが湧いてたのか
>>637
愚図がキメェんだよ
hogeとか意味不明
落書きはブログにでも書いてろ
666デフォルトの名無しさんsage2012/09/29(土) 21:51:54.40
int main(void) {
hoge();
return 0;
}
コンパイルできませんなにがおかしいんでしょうか?
667─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2012/09/29(土) 21:52:38.79
>>666
ダミアン乙w”
668デフォルトの名無しさんsage2012/09/29(土) 21:53:09.39
hogeの何が悪いん?
669─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2012/09/29(土) 21:54:20.54
Cってバカがやるモンだって思ってたけど、やっぱそうだったなw
670デフォルトの名無しさんsage2012/09/29(土) 22:10:53.08
>>661 並列コンパイルさせるため
>>662
・クラステンプレートなどヘッダーファイルに書かざるを得ないケースがある
・分けるとファイル数と記述が増えてめんどくさい
これらの理由でhppファイルに全てまとめていました
671デフォルトの名無しさんsage2012/09/29(土) 22:24:20.39
並列コンパイルと何の関係が?
672デフォルトの名無しさんsage2012/09/29(土) 22:29:57.59
問題なく動いているものを修正しようとするのは初心者
673デフォルトの名無しさんsage2012/09/29(土) 22:40:18.56
リファクタリング全否定かよ。
674デフォルトの名無しさんsage2012/09/30(日) 00:36:36.00
>>673
一般論としてはそんなのは保守フェーズに入るときにやればいいんジャネ
外部インターフェースがきっちり決まっていて、きちんと動くならそれでおk
ただ>670は目的と手段がちぐはぐに見受けられ、理解してやってるのか不安になるというのはある
プログラマごと取り替えたほうが良いのではないか
675デフォルトの名無しさんsage2012/09/30(日) 01:00:43.09
>>660
インターフェースと実装は分離するのが基本
そうすると、実装の取り替えがオブジェクトモジュール単位で実施できて、
当のオブジェクトモジュールのビルドとリンクし直しだけで済むので
C++の場合もちろんインターフェースをヘッダファイルに、実装を.cppの方に書く
そうしておいて、とりあえず普通に書いて動作するレベルにした後、
プロファイラで調べて、何と何の実装をヘッダファイルに移すか白黒つければいいんジャネ
676デフォルトの名無しさんsage2012/09/30(日) 08:00:45.27
ただでさえコンパイルの遅いC++で、修正時のコンパイル量が無駄に多くなるような設計は避けたいところ
677デフォルトの名無しさんsage2012/09/30(日) 08:21:25.47
>>674
>一般論としてはそんなのは保守フェーズに入るときにやればいいんジャネ
お前の変な考えを、 一般論と言うなよ。
678デフォルトの名無しさんsage2012/09/30(日) 08:23:44.00
アホが起床してきたか
679デフォルトの名無しさんage2012/09/30(日) 09:22:16.47
クラスでnewを使って
動的にインスタンス生成することの
メリットが分かりません
教えて下さい
680デフォルトの名無しさんsage2012/09/30(日) 09:24:37.70
Javaとか.NETで参照型クラスが流行りなんだよ
681デフォルトの名無しさんsage2012/09/30(日) 09:24:40.11
スコープを超えても消滅しない
682デフォルトの名無しさんsage2012/09/30(日) 09:26:10.08
生成されて破棄される順番が固定されるより動的にいつでも生成破棄できるほうが柔軟性が高いのは当然
然るに動的な生成破棄を使いこなせばより柔軟性の高い便利なアプリケーションが作れることももはや自明の論理だろう
683デフォルトの名無しさんsage2012/09/30(日) 09:26:38.63
ヒープ!
684デフォルトの名無しさんsage2012/09/30(日) 09:36:21.59
>>678
徹夜でにちゃん? (w
685デフォルトの名無しさん2012/09/30(日) 10:10:36.29
>>679
死ね。
686デフォルトの名無しさんsage2012/09/30(日) 12:30:01.73
>>679
ネタじゃなく、こういう馬鹿がリアルでいるから困る
必要なメモリは最初から配列で静的に確保しておけとか言うんだぜ
687デフォルトの名無しさんsage2012/09/30(日) 12:40:31.09
>>686
実行環境がわかってるコンシューマゲームとかなら普通に有効な選択肢だが?
もちろんアロケーター通して使うから、そのままstaticなオブジェクト配列ってことにはならんが
688デフォルトの名無しさんsage2012/09/30(日) 12:44:40.03
>>687
違うよ。staticなオブジェクト配列ってことを言ってるんだよ
689デフォルトの名無しさんsage2012/09/30(日) 13:02:48.16
>>687
文脈読めよ
アロケータとか言いたいだけの厨房か?
690デフォルトの名無しさん2012/09/30(日) 13:08:40.85
>>689
きみアロケーターをなにか高尚なものと勘違いしてないか?
691デフォルトの名無しさんsage2012/09/30(日) 13:17:14.80
>>690
もういいって
そういう話じゃないってわかれよ
692デフォルトの名無しさんsage2012/09/30(日) 13:17:38.88
>>687が話し理解出来てないアホだな
693デフォルトの名無しさんsage2012/09/30(日) 13:17:39.55
>>691
あ、お逃げになられるわけですね
わかりました
694デフォルトの名無しさんsage2012/09/30(日) 13:18:29.08
>>692
理解できてないのは君なんだが
695デフォルトの名無しさん2012/09/30(日) 13:24:15.97
>>686
>必要なメモリは最初から配列で静的に確保しておけとか言うんだぜ
ここではstaticにメモリを何らかの型の配列で確保すると言っている
つまりstaticに必要な型のオブジェクト配列としてそのままとれと言っているのではなく
なんらかの管理手段を通じてそのメモリ領域を利用することを示唆している
もしオブジェクト配列をそのまま使うという意図で言うなら「必要なオブジェクトは最初から配列で〜」と書くはずだ
したがってアロケーターの話が浮上しても流れとしてなんらおかしくはない
696デフォルトの名無しさんsage2012/09/30(日) 13:37:29.00
>>695
>つまりstaticに必要な型のオブジェクト配列としてそのままとれと言っているのではなく
>なんらかの管理手段を通じてそのメモリ領域を利用することを示唆している
その解釈の可能性は否定しないが、その解釈であると断定するのは無理がありすぎ。
697デフォルトの名無しさん2012/09/30(日) 13:38:51.36
>>696
断定してないけど?
698686sage2012/09/30(日) 13:39:46.16
>>695
すみません、僕の書き方が悪かったです
必要なオブジェクトは最初から配列で〜です
699デフォルトの名無しさんsage2012/09/30(日) 13:40:27.86
領域を確保しておいてそこからアロケートするなんて当たり前のことすぎて
それをアホ扱いするのは無理がある
700デフォルトの名無しさんsage2012/09/30(日) 14:46:45.20
拗らせて喧嘩するほどの話か?
701デフォルトの名無しさんsage2012/09/30(日) 14:48:41.00
次の話題どうぞ
702デフォルトの名無しさん2012/09/30(日) 15:12:22.43
void Pussy::Pussy();
あばばばばばばばばばばばばばばばばばばばばばばばばばばばばばばばばwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
703デフォルトの名無しさんsage2012/09/30(日) 16:11:12.17
またhogeの話しようぜ
704デフォルトの名無しさん2012/09/30(日) 16:22:27.67
#include
#include
とtimeBeginPeriod(1) を使わずに1msのタイマ分解能を得たいのですが、
他にどういった方法がありますでしょうか。
C++のSTL等では不可能でしょうか。
timeBeginePeriodを使いたくない理由は、
windowsにしか対応できないからです。
できれば同じコードでマルチプラットフォーム対応できればと考えています。
教えていただけますと嬉しいです。
705デフォルトの名無しさんsage2012/09/30(日) 16:25:51.22
#ifdef でプラットフォームごとに分ければ
706デフォルトの名無しさんsage2012/09/30(日) 16:26:13.71
std::chronoかboostで
707デフォルトの名無しさんsage2012/09/30(日) 16:33:43.21
>>704-705
もしくはラッパー作るとか。
708デフォルトの名無しさん2012/09/30(日) 16:34:55.68
レスありがとうございます。
http://blog.wonderrabbitproject.net/post.aspx-id=99100bb5-d47e-4683-afc5-65e15d17a26d
ここ見てみたのですがやはりifdefする方がよいのですかね・・
ありがとうございましたm(_ _)m
709デフォルトの名無しさんsage2012/09/30(日) 21:09:34.77
>>640
おい、static使っても出来なかったぞカス
710デフォルトの名無しさんsage2012/09/30(日) 21:47:00.72
アロケーター厨が去ったと思ったらHoge厨様の降臨か
日曜日だな
711デフォルトの名無しさんsage2012/09/30(日) 21:52:04.44
相談とか質問する場として機能して無いんだから
余所で聞けよ
712デフォルトの名無しさんsage2012/09/30(日) 22:23:53.85
Java脳向けのC++解説サイトってないですか?
これからはRubyだと学校で言われて超簡単言語Rubyを覚え、社会じゃ役に立たないと知り、
業務は生産性の高いJavaだと言われてちょっと簡単言語Javaを覚えて仕事し続け、
結局世の中C/C++で動いてると知って
簡単な言語ばかり覚えてきた自分に落胆してるような人間向けの解説を探してます。
C言語は業務で使っているので扱えます。
713デフォルトの名無しさんsage2012/09/30(日) 22:33:02.69
RubyはともかくJavaはまだ使う方だろ……AndroidとかはJavaで動いてるんだぜ
普通にC++の参考書じゃダメなん?
714デフォルトの名無しさんsage2012/09/30(日) 22:35:59.95
すみません。できれば早く覚えてたいという願望がありまして…。
JavaでいうこれはC++ではこうやるんだよ!っていう比較ありきの解説ないかなと思いまして。
715デフォルトの名無しさん2012/09/30(日) 22:36:33.14
>>712
腐るほどあるのに
おまえの探し方が甘すぎるだけ
要するに Java わかる人が C++ 教えりゃいいんだろ
神からご託宣をいただけるのか、
等身大の傭兵から何か盗めればいいのか
そこにナーバス過ぎちゃ無理だよ無理すぎ
716デフォルトの名無しさんsage2012/09/30(日) 22:38:45.48
>>714
文系脳死ね
717デフォルトの名無しさんsage2012/09/30(日) 22:54:51.19
ひ、ひどい…相談と書いてあったから相談っぽく相談したのに…。あんまりだ…。
まあMSDNでも漁りますノシ
718デフォルトの名無しさんsage2012/10/01(月) 00:12:50.70
>>717
>C言語は業務で使っているので扱えます
この時点で「初心者じゃないから自分で調べることぐらい出来るよね?」
って思われてるんじゃね
719デフォルトの名無しさんsage2012/10/01(月) 01:47:29.04
ベトナムでも“嫌韓”ブーム!?
李明博大統領の竹島上陸から勃発した韓国のすさまじい反日行為。対する日本も“嫌韓”感情に火がついている。
“韓流”ブームも息を潜め、韓国ドラマや韓流スターにうつつを抜かしていた女性たちの中にも、韓国と距離を置く人が増えている。
だが、“嫌韓”感情は隣国・日本だけではない。アジア各地にも広がっている。
中でも根深いのはベトナム。ベトナムは昨年、「満50歳以上、または年齢差が16歳以上」の韓国人男性とベトナム人女性との
国際結婚を禁止する厳しい規定を設けた。
ベトナム戦争時 韓国人兵士のレイプで産まれた混血児
グローバル化の時代に国際結婚を法律で禁止するという強行策。背景には「ライダイハン」問題がある。
ベトナム戦争時、ベトナムに派兵した一部の韓国人兵士が現地の女性を強姦したり、暴行を振るっていた。
その結果「ライダイハン」と呼ばれる混血児が多数産まれたのだ。韓国人兵士はそのまま帰国し、母子が残され差別に苦しみながら生きてきた。
さらに、最近は韓国人夫のDV(家庭内暴力)などの事例も増えているという。
従軍慰安婦問題といいライダイハン問題といい、その傷跡は深い。“反日”や“嫌韓”の背景にある歴史問題にも目を向けるべきである。
http://www.kon-katsu-news.com/news_a4sj0mIlnO.html
720デフォルトの名無しさんsage2012/10/01(月) 02:18:30.57
class A{
};
class B:A{
};
class C:A{
};
main{
int size;
cin>>size;
A* a= new A[size];
C c;
a[2]=c;
}
と基底クラスAに派生クラスであるCを代入しようとすると、
アクセスできない基本クラスAへの変換は許されていませんとでてきます。
なにが原因なのでしょう?
721 ◆QZaw55cn4c sage2012/10/01(月) 02:36:07.24
>>720
http://ideone.com/nOlqV
かりにこうだったら、sizeof(A) < sizeof(C) だから、a[] に c は収まりそうもない。
722デフォルトの名無しさんsage2012/10/01(月) 04:52:20.02
>>720
A::operator=(A const&) は書いてるの?
723デフォルトの名無しさんsage2012/10/01(月) 05:02:47.99
public忘れてる
724 ◆QZaw55cn4c sage2012/10/01(月) 07:09:55.72
>>723 が正解ですね。
http://ideone.com/wWanT
725デフォルトの名無しさんsage2012/10/01(月) 07:48:55.57
QはC++が理解できてない老害なんだから無理すんなよ
スラッシングも知らないのか
726デフォルトの名無しさんsage2012/10/01(月) 07:53:04.32
a[2]=static_cast(&c);
とかは?
727デフォルトの名無しさんsage2012/10/01(月) 07:55:39.86
スライシング
728デフォルトの名無しさんsage2012/10/01(月) 07:57:46.61
>>726
それコンパイル通るかやってみたのか
729デフォルトの名無しさんsage2012/10/01(月) 07:59:19.14
>>728
すまん、盛大に勘違いした
半年ROMるわ・・・
730デフォルトの名無しさんsage2012/10/01(月) 08:01:17.77
>>725
ごみんなさ〜い
731デフォルトの名無しさんsage2012/10/01(月) 08:02:44.29
a[]に代入したcをダウンキャストしてcのメンバ関数を呼び出すと見事にあぼ〜んするな
当たり前だが
732デフォルトの名無しさんsage2012/10/01(月) 15:44:12.90
>>731
だいなみっく☆キャスト しろよ
733デフォルトの名無しさんsage2012/10/01(月) 20:23:04.29
>>732
えっ?
734デフォルトの名無しさんsage2012/10/01(月) 21:57:25.41
>>732
あのさあクラスCで拡張された部分がスライシングでなくなってるから
ダウンキャストするとあぼ〜んするんだけど
意味わかってる?
735デフォルトの名無しさんsage2012/10/01(月) 22:16:09.97
ちゃんと伝わる日本語を使おうな
しょせんカタカナ英語だけど「〜ingで」はこの場合おかしいだろ
736デフォルトの名無しさんsage2012/10/01(月) 22:33:52.60
名詞にすべきだから〜ingで正しいだろ
737デフォルトの名無しさんsage2012/10/01(月) 23:04:49.30
正しくはCのメンバ関数を呼ぶと、だな
738デフォルトの名無しさんsage2012/10/01(月) 23:44:03.76
スライシングの場合はあぼーんじゃないな
class A {
public:
virtual void print() const {
std::cout << "A!!" << std::endl;
}
};
class B : public A {
public:
void print() const {
std::cout << "B!!" << std::endl;
}
};
int main()
{
A a[1];
a[0] = B();
B* bp = dynamic_cast(&a[0]);
std::cout << bp << std::endl; // スライシングされているのでダウンキャスト出来ない
B* bp2 = reinterpret_cast(&a[0]);
bp2->print(); // vtableまで削られているので A の関数が実行される
}
739デフォルトの名無しさんsage2012/10/01(月) 23:55:23.56
>>738
virtual無しの話だろ
740デフォルトの名無しさんsage2012/10/02(火) 00:02:23.15
仮想関数無しだとそもそもdynamic_cast出来ないぞ
無理矢理reinterpret_castするのかな
741デフォルトの名無しさんsage2012/10/02(火) 00:05:39.34
vtableは削られてるのではなくて、
代入や初期化の際にコピーされないだけ
742デフォルトの名無しさんsage2012/10/02(火) 01:15:42.28
>>740
そもそもdynamic_castするという話ではないぞ
743デフォルトの名無しさんsage2012/10/02(火) 07:06:54.87
スライシングなんて言い回しをするからわかりにくいが、
単にBのA部分をAにコピーしてるだけと言えばすぐ解るだろうに。
744デフォルトの名無しさんsage2012/10/02(火) 07:32:37.94
初期化の場合はコピーコンストラクタ A(const A&) が、
代入の場合は代入演算子 operator=(const A&) が動いてるだけだな
745デフォルトの名無しさんsage2012/10/02(火) 09:18:49.06
int a[N]
Nの最大値を教えてください。
746デフォルトの名無しさんsage2012/10/02(火) 09:33:21.62
Nの最大値は環境によりますが実質無限大です
747デフォルトの名無しさんsage2012/10/02(火) 09:37:59.00
∞
ただし物理的・環境依存限界はある
auto variable ならスタックサイズ
global/static ならヒープサイズ
dynamic ならOSのメモリ割り当て限界
748デフォルトの名無しさん2012/10/02(火) 10:01:28.28
std::size_t から導ける範囲内の処理系限界
749デフォルトの名無しさんsage2012/10/02(火) 10:11:16.72
class A{
int b[20*20*20*20*20]
int a[11]
public:
A(){
for{int i=0;i<11;++i}
std::cout<
}
};
がTDM-GCC 4.7.1 64bit
でこのクラスを実行するとエラーになるのは
なぜですか?
750デフォルトの名無しさん2012/10/02(火) 10:16:15.10
へー、実行できたのか
そんなわけなさそうに見えるが
751デフォルトの名無しさんsage2012/10/02(火) 10:19:32.62
揚げ足取りはスルー
752デフォルトの名無しさん2012/10/02(火) 10:23:35.34
まじめに相手してらんねーやつ
753デフォルトの名無しさんsage2012/10/02(火) 10:32:32.69
int b[20*20*20*20*20]でスタックオーバーフロー
754デフォルトの名無しさんsage2012/10/02(火) 10:55:12.77
abc* Func();
と
abc& Func();
ってどう違うの?
755デフォルトの名無しさんsage2012/10/02(火) 10:56:47.50
ポインタを返すか参照を返すかの違い
756デフォルトの名無しさんsage2012/10/02(火) 11:07:30.95
iiがスライシングでなくなっているからさすがにこれはundefinedだな
class A {
int i;
public:
A(int j = 0) : i(j) {}
void print() const {
std::cout << i << std::endl;
}
};
class B : public A {
int ii;
public:
B(int j = 0, int jj = 0) : A(j), ii(jj) {}
void print2() const {
std::cout << ii << std::endl;
}
};
int main()
{
A a[1];
a[0] = B(1, 2);
B* bp2 = reinterpret_cast(&a[0]);
bp2->print();
bp2->print2(); // さすがに未定義
}
757デフォルトの名無しさんsage2012/10/02(火) 11:31:11.44
そもそもスライシングなどと名前付ける必要はあったんだろうか
代入まで1セットにするから妙なことになる
見るのはこれだけでいいだろう
A a[1];
B* bp2 = reinterpret_cast(&a[0]);
758デフォルトの名無しさんsage2012/10/02(火) 11:39:33.66
でも参照先でポインタに代入したら同じ?
759デフォルトの名無しさんsage2012/10/02(火) 11:50:09.32
>>753
クラスのデータはスタックに保存されるんですか?
スタックを大きくするあるいは動的に作成すれば解決ですか?
スタックを大きくすること出来ますか?
760デフォルトの名無しさんsage2012/10/02(火) 11:51:35.75
標準出力からアスキーアートで表を作りたいんですけど、
綺麗な表を作る方法とか載ってるホームページとかないですか?
761デフォルトの名無しさん2012/10/02(火) 11:54:49.02
さあ 3.2MB を 64bit でどうするか見物です
762デフォルトの名無しさんsage2012/10/02(火) 11:56:55.46
>>758
同じ
http://ideone.com/i3EAt
>>759
void f(){ A a; }ならスタックから確保
void f(){ A* a = new A(); delete a; }ならヒープから確保
大きいクラスはヒープから確保すればOK
まだスタックを大きくすることは考えない方がいい
763デフォルトの名無しさんsage2012/10/02(火) 11:59:47.26
>>762
ありがとうございます。
764デフォルトの名無しさんsage2012/10/02(火) 13:08:25.99
>>760
AA関連のサイトには特定の環境の特定のフォントの幅についての言及はあるが、
標準出力だとフォントは指定できないから表示される環境に依存する。
まぁ、等幅フォント前提なら難しくないだろ。
プロポーショナルフォントで憑依される可能性があるなら、諦めろ。
つーか、環境に依存する話はスレ違い。
765デフォルトの名無しさんsage2012/10/02(火) 13:27:57.46
int a;
template
struct AA{};
template
struct BB{
enum{ bb = (int)pa }; //
};
AA<&a> aaa; //
BB<&a> bbb; //
でaのアドレスをテンプレート引数に渡せたので
aのアドレスはコンパイル時定数かと思っていたのですが
をインスタンス化するときにで「定数式が必用です」と
なりました。
グローバル変数のアドレスはコンパイル時定数ではないのですか?
Visual C++ 2010です。
766デフォルトの名無しさんsage2012/10/02(火) 13:31:44.84
当たり前だろ…
767デフォルトの名無しさんsage2012/10/02(火) 16:26:28.39
constexprが頭に浮かんだがだめか
768デフォルトの名無しさんsage2012/10/02(火) 16:27:51.66
constexprならポインタ型も定数式に出来るがVC++にはねーな
769デフォルトの名無しさんsage2012/10/02(火) 20:00:00.40
宇宙最強のC++11対応XMLライブラリはどれですか?
770デフォルトの名無しさんsage2012/10/02(火) 20:01:36.43
>>769
ブーストとかいうのがあった
771デフォルトの名無しさんsage2012/10/02(火) 20:08:39.90
宇宙最強を紹介できる自信がない
772デフォルトの名無しさん2012/10/02(火) 20:29:03.13
#include
#include
#include
template
std::vector copy_to_vec(const C& from) {
std::vector res(from.begin(),from.end());
std::sort(res.begin(),res.end());
return res;
}
int main()
{
std::unordered_map from;
from.insert(std::make_pair(1,2));
auto to = copy_to_vec(from);
}
このコードなんですが、unordered_map::value_typeはpair
と勝手にconstが入ってしまうので、sort(...)が使えません。-fpermissibleを入れろと言ってきます。
テンプレート引数でT=...となっている部分を変えて何とかなりませんか?
773デフォルトの名無しさんsage2012/10/02(火) 20:31:18.82
日本語へんだったかもですが、このままだとコンパイルエラーで止まるので、
テンプレート引数で何とか処理したいという質問です。
774デフォルトの名無しさんsage2012/10/02(火) 22:19:08.18
>>760
等幅フォントならそんなに難しくない。自分でCSVを表に直すソフト自作したことあるから分かる
1. 表の縦横のセル数、横一つ一つのセルの横幅最大値を取得
2. セルの横幅最大値を偶数にして(半角3つ分なら4つになるように修正)
3. 「┌と─と┬と┐でできた行」「├と─と┼と┤でできた行」「└と─と┴と┘でできた行」
「│とセル内容でできた行」の4種類を生成して、前3つと後1つを交互にくっつけて表を作成
こんなんでおk
>>771
こんなにカオスな言語を宇宙最強と誇れないんだが
775デフォルトの名無しさんsage2012/10/02(火) 23:50:19.05
>>772
中のconstを外したpairを返すtraitsを作って使え
template
struct pair_remove_const
{
typedef typename std::remove_const::type type;
};
template
struct pair_remove_const>
{
typedef std::pair::type, typename std::remove_const::type> type;
};
template ::type>
776デフォルトの名無しさんsage2012/10/02(火) 23:55:34.28
何か良く分からないなあ
unordered_mapだと勝手にKeyでソートされるでしょ
それをvectorに入れてソート?
目的が分からない
初めからvectorに入れてからsort()を呼び出せばいいような
777デフォルトの名無しさんsage2012/10/03(水) 00:15:52.29
どんなコンテナにも適用可能な関数にしたいけどunordered_mapを渡したらエラーになったって話だろう
778デフォルトの名無しさんsage2012/10/03(水) 00:41:54.32
なるほど
std::remove_constを使うと簡単に変換出来ますね
逆はどうなるのかな
やはり一個一個insertするしかないかな
そうすれば勝手にまたconstになるから
779デフォルトの名無しさんsage2012/10/03(水) 00:45:07.77
unordered_map m1;
map m2(m1.begin(), m1.end());
vector> v(m2.begin(), m2.end());
780デフォルトの名無しさん2012/10/03(水) 04:36:14.09
772ですが、みなさんどうも。
やっぱ力技でconst外すしかないですか。
>unordered_mapだと勝手にKeyでソートされるでしょ
されないのが特徴ですが、mapに一回突っ込むのが妥当な感じですね。
にしてもvector>的なものがソートできないって・・・
中身を書き換えるわけじゃないのにな。
781デフォルトの名無しさんsage2012/10/03(水) 04:41:44.29
ソースは短くなるけど、処理時間もメモリー使用量も大きくなる。
STLはそういうことが日常だな。
782デフォルトの名無しさんsage2012/10/03(水) 10:53:51.43
>>774
ありがとうございます。
783デフォルトの名無しさんsage2012/10/03(水) 22:13:36.17
hoge
784デフォルトの名無しさんsage2012/10/04(木) 20:29:02.29
文字列を char [] で確保するとき、文字数+1 を確保しないといかんですよね?
http://www.c-tipsref.com/reference/stdio/snprintf.html
で
#define N 256
としつつ
char s[N] = {'¥0'};
と割り当てて
snprintf(s, N, "%sさんは%d歳の%sです.", name, age, sex);
ってやってますけど、snprintf の3項目目が256文字ちょうどだったとき、もれなくヤバいことおきませんか?
snprintf(s, N-1, "%sさんは%d歳の%sです.", name, age, sex);
な機がするんですけど、いかがでしょ?
785デフォルトの名無しさんsage2012/10/04(木) 20:29:48.84
snprintf(s, N-1, "%sさんは%d歳の%sです.", name, age, sex);
にするか
char s[N+1] = {'¥0'};
にするかってことで
786デフォルトの名無しさんsage2012/10/04(木) 20:36:47.89
>n-1 番目より後の出力文字は文字配列に書き込まずに破棄されます
って書いてるじゃない
787デフォルトの名無しさんsage2012/10/04(木) 20:38:55.14
¥0 を含めたサイズを snprintf の2つめに指定したらいいんですか?
788デフォルトの名無しさんsage2012/10/04(木) 22:24:50.04
C++でインターフェース(純粋仮想関数だけのクラス)を継承する理由がいまいちわかりません
特定のメンバ関数を持っているといった制約はテンプレートで十分ですよね
789デフォルトの名無しさんsage2012/10/04(木) 22:30:13.18
interfaceを再利用性の高いクラスに使うとそれを使わない時にコストを払わなくてよいという原則に背くので敬虔なC++信者ならばinterfaceはむしろ使っては「いけない」
790デフォルトの名無しさんsage2012/10/04(木) 23:27:20.72
>>788
つ 多態性
791デフォルトの名無しさんsage2012/10/04(木) 23:42:32.21
>>790
それはテンプレートで十分だと思うのですが・・・
792デフォルトの名無しさんsage2012/10/05(金) 00:02:05.73
>>791
ポインタ使ったことないの?
793デフォルトの名無しさんsage2012/10/05(金) 00:09:28.05
>>791
動的な多態性を実現するには、テンプレートでは無理
テンプレートで実現できるのは、コンパイルタイムで確定する静的構造のみなので、一般的に言う自由度の高い多態性は実現できないよ
794デフォルトの名無しさんsage2012/10/05(金) 00:21:26.06
struct IBase {
virtual void Method() const = 0; };
template struct Sub : IBase {
X const & x;
Sub(X const & x) : x(x) {}
void Method() const { x.Method(); } };
void Func(IBase const & x) { x.Method(); }
template void Func(X const & x) { Func(Sub(x)); }
このようにXが直接interfaceを継承する必要はない
XをFunc以外で利用する際にオーバーヘッドとならないようにXが直接interfaceを継承することは避けるべきである
795デフォルトの名無しさんsage2012/10/05(金) 00:27:17.61
動的リンクとかしたことないのかね
796デフォルトの名無しさんsage2012/10/05(金) 00:31:00.80
避けるべきであるという表現から絶対に使わないという意図を読み取ることは不可能だ
柔軟性のある表現を勝手気ままに絶対的な法則であるかのように解釈することは愚か者によく見られる行動の1つである
797デフォルトの名無しさんsage2012/10/05(金) 00:43:22.39
>>794
アダプタパターンをどや顔で主張されてもな
798デフォルトの名無しさんsage2012/10/05(金) 00:45:26.11
>>794
完全抽象化classをinterface呼ばわりすんなよJava公
799デフォルトの名無しさんsage2012/10/05(金) 00:49:14.47
>>794
オーバーヘッドってなんだよ
クラス単位のインライン展開もしらないとか?
800デフォルトの名無しさんsage2012/10/05(金) 00:50:09.75
しゃべりかたはむかつくけど言ってることはおおむね間違ってないな
他クラスとの連携の仕方を、連携するクラスに押し付けるのではなく
連携を管理するクラスを一つつくり分離できる機能を分離するほうがきれい
801デフォルトの名無しさんsage2012/10/05(金) 00:56:24.85
低年齢化
802デフォルトの名無しさんsage2012/10/05(金) 01:07:05.66
>>793
Rootを始めとするC++ interpreterを使えば実行時にtemplateが動くけど。
C++はCompile方式じゃないとダメって制限はない。
803デフォルトの名無しさんsage2012/10/05(金) 01:35:25.79
ワロタ
お前本当にそれ使ってるのか?
皆が皆使うと思ってるのか?
804デフォルトの名無しさんsage2012/10/05(金) 01:36:47.76
高エネ研究じゃ一般的ってか必需品だよな
805デフォルトの名無しさんsage2012/10/05(金) 01:42:32.38
GEANT4やらClingやらRootやら医療やら科学者向けに使われることが多いな
806デフォルトの名無しさんsage2012/10/05(金) 01:50:19.01
>>802
ちょとずれてるなあ。
これ理解できる?
ttp://codepad.org/WnSwQWG1
動的ポリモーフィズムってのはこう言う事なんだけど。
これはテンプレートだけでは実現できないよね?
807デフォルトの名無しさんsage2012/10/05(金) 01:59:06.05
template int Value( const Type &value ) { return value.Echo(); }
Value( argv > 0 ? A(): B() );
Interpreterだとこれが動くんだから便利なもんだよ。
だからプログラミングはどうでもよくて、とりあえず手っ取り早く、
速いプログラムが欲しい研究屋に重宝される
808デフォルトの名無しさんsage2012/10/05(金) 02:17:26.81
その程度ってどのコンパイラでもだいたいとおるんじゃないの?
まあなに使うにしてもshared_ptrないと話にならんわ。
809デフォルトの名無しさんsage2012/10/05(金) 02:25:48.18
>>807
それは多態性と関係ない。
しかも、普通にコンパイルできる。
810デフォルトの名無しさんsage2012/10/05(金) 02:35:28.28
>>809
codepadは無理だったけどマジで?
http://codepad.org/7yJ13usy
811デフォルトの名無しさんsage2012/10/05(金) 02:48:35.52
テンプレート以前に三項演算子で引っかかってるだろそれ
812デフォルトの名無しさんsage2012/10/05(金) 03:14:23.17
三項式が動的な分岐になるから、テンプレートが生成できないのかもな。
普通にif分にしたら当然とおった。
http://codepad.org/FKHFhlWI
813デフォルトの名無しさんsage2012/10/05(金) 03:18:47.33
>>812
その変え方なら三項演算子のままでいいじゃないか
814デフォルトの名無しさんsage2012/10/05(金) 03:35:44.00
エラーでない書き方おしえてくれよw
815デフォルトの名無しさんsage2012/10/05(金) 07:07:25.19
>>804
で、一般論を否定するレベルで皆が常用してるの?ってところがポイントなんだと思うが
816デフォルトの名無しさんsage2012/10/05(金) 07:39:15.51
>>812
main()は別にテンプレートとは関係ないからコンパイル通ったんだろ
コンパイル時に変数の値を定数化したいならC++11のcontexprが必要だろ
817デフォルトの名無しさんsage2012/10/05(金) 07:39:36.24
○constexpr
818デフォルトの名無しさんsage2012/10/05(金) 12:33:00.06
>>805
高IQの人はみんな使うよね
819デフォルトの名無しさんsage2012/10/05(金) 12:35:25.48
>>807
便利すぎてわろた次期C++に採用しよう
820デフォルトの名無しさんsage2012/10/05(金) 12:50:58.85
よっぽどC++が嫌いなんだな
821デフォルトの名無しさん2012/10/05(金) 13:00:42.10
iPhone、iPadでアプリ開発をするならCとC++どっちを勉強すれば良い?
822デフォルトの名無しさんsage2012/10/05(金) 13:04:57.78
Object-C
823デフォルトの名無しさんsage2012/10/05(金) 14:49:16.88
テンプレートな仮想関数を作りたいのだけれど代替手段はありますか?
struct IHello {
virtual ‾IHello(void) {}
template virtual std::shared_ptr CreateWorld(Allocator allocator) const = 0; // ジーザス!コンパイルデキナイ
};
824片山博文MZボット ◆0lBZNi.Q7evd sage2012/10/05(金) 14:54:42.75
template
struct IHello {
virtual ‾IHello(void) {}
virtual std::shared_ptr CreateWorld(Allocator allocator) const = 0;
};
825デフォルトの名無しさんsage2012/10/05(金) 15:30:27.30
struct A{};
A*operator new(size_t)=delete;
みないな事出来ますか?
826デフォルトの名無しさんsage2012/10/05(金) 15:34:10.81
>>825
なにやってんの?
827デフォルトの名無しさんsage2012/10/05(金) 15:52:58.71
>>825
仮にそれが出来たとしても↓は止められないけどいいの?
struct B{
A a;
};
new B();
828デフォルトの名無しさんsage2012/10/05(金) 21:40:19.35
うん、いいよ
829デフォルトの名無しさんsage2012/10/05(金) 21:56:39.62
class A{};
class B{
void create(int val){
【あ】
};
private:
A *a;
};
int main(void){
B b;
b.create(10);
}
【あ】の箇所でAのインスタンスをval個作成するにはどうすれば良いですか?
830デフォルトの名無しさんsage2012/10/05(金) 21:59:06.71
>>829
宿題?
831デフォルトの名無しさんsage2012/10/05(金) 22:03:19.36
どこでdeleteする気なんだその宿題
832デフォルトの名無しさんsage2012/10/05(金) 22:07:25.28
>>829
class A{};
class B{
void create(int val){
a.resize(val);
};
private:
std::vector a;
};
833デフォルトの名無しさんsage2012/10/06(土) 12:57:52.87
ブール型ってBOOLとBoolを使い分けるのが普通なんですか?
834デフォルトの名無しさんsage2012/10/06(土) 13:26:38.60
いいえ
835デフォルトの名無しさんsage2012/10/06(土) 13:33:25.18
>>833
どっちもC++関係無いな。
その定義次第としか答えられない。
836デフォルトの名無しさんsage2012/10/06(土) 13:35:21.86
実際の話
charが2バイトとか1バイトが8ビットじゃないみたいな環境のこと考えて普段からプログラム書いてますか
837デフォルトの名無しさんsage2012/10/06(土) 13:49:48.41
charは1byteだと規格で決まっています
1byteが何bitかは決まってませんが
838デフォルトの名無しさんsage2012/10/06(土) 14:43:21.75
char って文字を表す値を格納する型だから、
本来は最低でも32ビットくらいないとおかしいよな
839デフォルトの名無しさんsage2012/10/06(土) 15:25:00.35
アルファベット以外は文字じゃねーよ黄猿死ねってことだろ
840デフォルトの名無しさん2012/10/06(土) 18:41:54.62
printfやfprintfに自前クラスを渡したい。
class I {
int n;
public:
I(int n=0): n(n) {}
operator int() const {
return n+1;
}
};
I i(10);
printf("%d",int(i)); //OK
printf("%d",i); //コンパイルエラー
どうすればいいですか?
841デフォルトの名無しさんsage2012/10/06(土) 18:45:18.36
明示的に変換するほかない
842デフォルトの名無しさん2012/10/06(土) 18:46:58.92
>>840 D言語なら可能
843デフォルトの名無しさんsage2012/10/06(土) 18:48:29.13
Dのステマw
844デフォルトの名無しさん2012/10/06(土) 19:58:41.24
>>840
そもそも、C++で型保証ができない可変個数引数を使うのがわるい。
つまり、お前は死ぬべきだ。
845デフォルトの名無しさんsage2012/10/06(土) 20:02:02.80
>>840
素直にstd::cout使うか、printf風に書きたかったらboost::format使うべき。
846デフォルトの名無しさん2012/10/06(土) 20:21:55.03
>>844
C++11を知らないお前が死ぬべきだ()
printfは型安全に実装できるはずだろ。
847デフォルトの名無しさんsage2012/10/06(土) 20:22:28.38
まぁ、みんなありがとう。
printfではできないことは分かった。
848デフォルトの名無しさんsage2012/10/06(土) 20:48:22.33
>>846
実装と型保証の区別ぐらいできるようになろうよ…
849デフォルトの名無しさんsage2012/10/06(土) 22:21:27.75
hoge
850デフォルトの名無しさんsage2012/10/06(土) 22:26:22.81
キャスト
851デフォルトの名無しさんsage2012/10/06(土) 22:31:15.07
空クラスつくって(メンバなし)
そのクラスの変数宣言したとき
メモリに領域確保されるらしい
どれくらい、そしてなにが確保されるの?
852デフォルトの名無しさんsage2012/10/06(土) 22:35:25.75
1byteって決まってるらしい
853デフォルトの名無しさんsage2012/10/06(土) 22:37:24.98
空かもしれないし1byteかも知れないしもっと大きいかもしれない
854デフォルトの名無しさんsage2012/10/06(土) 22:54:35.70
理解した。
あと
データメンバ、メンバ関数のあるクラス作って
その変数宣言したとき
それ用にメモリに領域確保されるはず。
データ用の確保はわかるけど(intなら4バイトとか)
メンバ関数用の確保は何?
関数コードのあるアドレスが確保されるの?
855デフォルトの名無しさんsage2012/10/06(土) 22:56:08.91
メモリポインタが確保される
856デフォルトの名無しさんsage2012/10/06(土) 22:58:54.17
>>855
指定の関数命令コードの
先頭のアドレスへのポインタってこと?
857デフォルトの名無しさんsage2012/10/06(土) 23:00:04.63
非仮想なら確保されないし仮想ならVTableへのポインタが確保されたりほかの何かが確保されたりする
858デフォルトの名無しさんsage2012/10/06(土) 23:00:54.18
仮想関数じゃなきゃ関数ポインタなんか確保されねーよ
859デフォルトの名無しさんsage2012/10/06(土) 23:04:11.95
仮想関数じゃなきゃ確保されないって
おかしくない?
じゃあどうやってオブジェクトのメンバ関数を
認識できてるの?
860デフォルトの名無しさんsage2012/10/06(土) 23:06:40.51
>>859
普通の関数と同じだよ
861デフォルトの名無しさんsage2012/10/06(土) 23:12:36.35
メンバポインタで関数を指定できるから
なにかが確保されてるはずなんだけど
862デフォルトの名無しさんsage2012/10/06(土) 23:14:27.56
>>859
コンパイル時に確定、それが非仮想関数
863デフォルトの名無しさんsage2012/10/06(土) 23:16:16.59
>>861
されない
隠しthisを受けとるだけの、普通の関数だよ
クラス自体には何の情報も持ってないよ
864デフォルトの名無しさんsage2012/10/06(土) 23:17:15.86
静的に解決してるんだよ
865デフォルトの名無しさんsage2012/10/06(土) 23:18:55.70
クラス内関数がthisポインタを暗黙に取る関数である、という記述を入門書には書いて欲しい時も多い
866デフォルトの名無しさんsage2012/10/06(土) 23:20:32.53
書いてあるよ
っていうか少し考えればわかることだし
867デフォルトの名無しさんsage2012/10/06(土) 23:21:19.70
>>865
書いていない入門書が存在することに驚いた
868デフォルトの名無しさんsage2012/10/06(土) 23:24:36.74
>>866
それ分かる奴は入門者ではないだろう
boost::bindやら使わんと、そも明示的にthis渡す機会とかないし
869デフォルトの名無しさんsage2012/10/06(土) 23:29:27.94
静的に解決できるとは思えないけど?
静的ならば静的メンバ関数と同じになるじゃないか
870デフォルトの名無しさんsage2012/10/06(土) 23:32:09.48
>>869
だから基本的に同じなの
暗黙にthisを受けとる事だけが違うの
871デフォルトの名無しさんsage2012/10/06(土) 23:38:11.33
センスあるやつは一言説明するとあっなるほどっ!てなるところなんだけどねぇ
872デフォルトの名無しさんsage2012/10/06(土) 23:46:01.11
わからない
class Hoge0{
void func(){;};
};
class Hoge1{
void func(){;};
};
int main(){
Hoge0 m;
m.func();
}
こんなとき静的には解決できないはず(どちらかわからないから)
mになんらかの情報(例えば関数コードがあるアドレス)
が格納されていなければならないはず
873デフォルトの名無しさんsage2012/10/06(土) 23:50:37.23
>>872
めんどくせーなー
自分で型を宣言してるだろーが
あと、そのクラス名を使うとヤツが来るぞ
874デフォルトの名無しさんsage2012/10/06(土) 23:53:02.16
>>872
m.func()と言う呼び出しは、mに対して何らかの処理を加えるということなので、
例えばvoid sfunc(Hoge0* p)という静的関数で
sfunc(&m);
と書くやり方でも実現できる
コンパイラ的には m.func() に行き当たったら、
機械的に sfunc(&m)に置き換えれば良いから静的関数だけで事足りる
sfunc()の中身は、もちろんHoge0::func()の定義から、これまた機械的に生成できる
何も問題は生じない
875デフォルトの名無しさんsage2012/10/06(土) 23:58:55.84
>>872
その場合、
Hoge0_func()
Hoge1_func()
と言う二つの関数が定義される
で回答になるかな?
876デフォルトの名無しさんsage2012/10/07(日) 00:00:11.60
>>875
お客さん引数を忘れてますよ
877デフォルトの名無しさんsage2012/10/07(日) 00:03:45.10
>>876
オット失礼
Hoge0_func(Hoge0* this)
Hoge1_func(Hoge1* this)
だな
878デフォルトの名無しさんsage2012/10/07(日) 00:13:04.64
>>872
はげ使うな氏礻
879デフォルトの名無しさんsage2012/10/07(日) 00:15:12.57
Hoge0::func()
Hoge1::func()
そもそもこう記述できる意味を考えろよ
880デフォルトの名無しさんsage2012/10/07(日) 00:42:02.99
int main(){
class Hoge0 m;
void (Hoge0::* fp)() ;
fp = &Hoge0::func;
(m.(*fp))()
}
上記コードで
上のfpはメンバポインタでこれはアドレスではなくオフセット値だと本ではあった
要するに(m.(*fp))のアドレスは
(&m)+fpとなるんだろう
これはつまりmの中に関数に関するなにかの情報があるということでは
ないでしょうか?
そうするとmの中には何も情報がなく静的に解決されるという
話はおかしくなると思うんだけど。
881デフォルトの名無しさんsage2012/10/07(日) 00:42:41.75
int main(){
class Hoge0 m;
void (Hoge0::* fp)() ;
fp = &Hoge0::func;
(m.(*fp))()
}
上記コードで
上のfpはメンバポインタでこれはアドレスではなくオフセット値だと本ではあった
要するに(m.(*fp))のアドレスは
(&m)+fpとなるんだろう
これはつまりmの中に関数に関するなにかの情報があるということでは
ないでしょうか?
そうするとmの中には何も情報がなく静的に解決されるという
話はおかしくなると思うんだけど。
882デフォルトの名無しさんsage2012/10/07(日) 00:46:15.42
>>881
どの本読んだ?
完全に間違いなので、参考までに教えてくれ
883デフォルトの名無しさんsage2012/10/07(日) 00:47:35.53
>>881
再度確認するが、仮想関数ではないんだよな?
884デフォルトの名無しさんsage2012/10/07(日) 00:52:10.51
C++明快入門って本だけど
間違ってはないと思うけど
あと仮想関数のことじゃないですよ
885デフォルトの名無しさんsage2012/10/07(日) 01:02:13.19
>>881
thisポインタを暗黙に引数に取るただの関数だと何度(ry
クラス内関数内でthis->って出来るのは、thisが引数として渡ってきてるからだよ
886デフォルトの名無しさんsage2012/10/07(日) 01:05:54.70
アセンブリまで学ぶと、この辺りもっと明確に実感できるんだけどな
VC++のコンパイラだと this ポインタは ecx レジスタで渡されてくる
887デフォルトの名無しさんsage2012/10/07(日) 01:15:57.97
>>884
情報ありがとう
話は元に戻るけど、間違ってるものは間違っているんだよ
君も言っているように、説明がつかないだろ?
でも、静的解決理論に何の矛盾もないんだよ?
888デフォルトの名無しさんsage2012/10/07(日) 01:29:48.83
>>881
関数の情報はどこかにはあるが仮想関数でないならmの中にはない
class Hoge0{
void func(){};
};
struct memfunc_info
{
int signature_id;
void (*pointer)(void);
};
memfunc_info *memfunc_table[NUM_OF_CLASS];
int main(){
Hoge0 m;
void (Hoge0::* fp)();
fp = &Hoge0::func;
//(m.*fp)();
memfunc_info info = memfunc_table[get_classid(m)][(int)fp];
switch (info.signature_id) {
case VOID_VOID:
((void(*)(Hoge0 *))info.pointer)(&m);
}
}
889デフォルトの名無しさんsage2012/10/07(日) 01:31:35.13
>>881
CFrontのソースリストが今ならタダ!
http://sourceforge.jp/projects/sfnet_cfront/
890889sage2012/10/07(日) 07:24:05.60
とオモタが、スマンこのCFrontはCfrontじゃなかった…
Cfrontのソースは、正しくはこっちらしい↓
http://www.softwarepreservation.org/projects/c_plus_plus/cfront/release_1.0/src/cfront.tar.gz
(via http://www.softwarepreservation.org/projects/c_plus_plus/index.html#cfront
891デフォルトの名無しさんsage2012/10/07(日) 07:25:38.59
>>884
間違ってると言われて間違ってないと思える根拠は何なの
全知全能の神ですか
892デフォルトの名無しさんsage2012/10/07(日) 10:07:39.40
using namespace std;
質問なんですが
C標準ライブラリのstdin, stdout, stderrと、C++標準ライブラリのcin, cout, cerrってどんな関係にあるの?
例えば、coutなら、それは中でstdoutを使っているの?
それとも共通のシステムコールを使っているだけで、coutとstdoutの間に平には依存関係は無いの?
coutのstreambufを自作のに差し替えて、cout << "Hello World!" << endl; と書かれたときに全部大文字に変換して標準出力に出す、
(つまり標準出力→加工→標準出力という処理)をやるとき、streambufの中でstdoutを使っていいのかどうか迷い中
893デフォルトの名無しさんsage2012/10/07(日) 10:13:52.86
>>892
std::syncwithstdio()なんてメンバ関数がわざわざあるんだから内部的には
異なるバッファを持っていると考えた方が正しいと思う
それにC++のストリームは継承が効いてるからね
いろいろと内部が違うぞ
894デフォルトの名無しさんsage2012/10/07(日) 10:27:10.57
あ、ごめん
std::ios::sync_with_stdio()だわ
試してもらうとわかるけどこれをfalseにすると読み書き速度は上がるが
stdxx系と一緒に使用した場合順番通りに行われる保証が無くなる
デフォルト引数はtrueなんで読み書き速度は下がるが順番通りが保証される
895デフォルトの名無しさんsage2012/10/07(日) 10:33:41.61
http://d.hatena.ne.jp/s-yata/20100726/
デフォルトでtrueになってるからiostream、fstreamは遅いのだと考えられる
falseにしてstdxx系を一切使わないようにすれば結構速い
896892sage2012/10/07(日) 10:59:36.46
クスつまりstdoutとcoutでは
・バッファは別
・std::ios::sync_with_stdio(true)のとき、endl毎にまずfflush(stdout)してからC++側のflush()する(多分)
という関係であるっぽい了解
つまりcoutから使う前提の自作streambuf内では、std::ios::sync_with_stdio()は無関係で
かつstdoutを使いまくって無問題、
みたいな
897デフォルトの名無しさんsage2012/10/07(日) 11:05:16.21
>>896
std::coutが実際はどこに向けられているか分からないんだぞ
stdoutは常に標準出力だろ
やってみおかしくなるから
898デフォルトの名無しさんsage2012/10/07(日) 11:11:29.58
>>897
?むしろcoutがどこに向かっているかは結びついているstreambufが決めるのでは
streambufの差し替えでcoutに書かれた内容をファイルに落とすことはできているわけだが
(ちなみにこのときはstreambufからfstreamに落とす形がとれたのでC++の世界だけで話が済んだ
fstreamがstdoutに置き換わるだけなんジャネーノ
899デフォルトの名無しさんsage2012/10/07(日) 11:33:08.90
説明がおかしかった
std::coutも標準出力だね
次のような場合がおかしくなる
int main()
{
std::ofstream fs("test.txt");
std::streambuf* osbuf = fs.rdbuf();
std::ostreambuf_iterator oic(osbuf);
oic = 'a';
std::putchar('b');
}
900デフォルトの名無しさんsage2012/10/07(日) 11:33:21.20
糞みたいな質問する前にISOでもJISでも読んでこいよ
それで理解できないならC++なんか使うな
ゴミクズプログラマが糞みたいなコードを世に出すな
901デフォルトの名無しさんsage2012/10/07(日) 12:09:45.04
>>899
んーまあ参考にします
cout経由とそれ以外経由の出力先相違(といっても>892はどっちも標準出力だが)は問題視しませんので
(主眼はcoutに対するマニピュレータ使用を捨てずにリダイレクトとか文字列内容の加工を実現することにある
902デフォルトの名無しさんsage2012/10/07(日) 13:22:25.03
皆実際仕事でiostream使ってんの?
ログ出力位ならいいけど実際使えなくね?
903デフォルトの名無しさんsage2012/10/07(日) 14:15:13.14
operator <<がダサいってところとわずかに遅いってとこ以外は*streamのが便利と思うが
904デフォルトの名無しさんsage2012/10/07(日) 14:59:26.74
置き換えが必要になったとき修正必要箇所の検出に漏れが出そう
905デフォルトの名無しさんsage2012/10/07(日) 15:12:58.09
ある意味iostreamメチャ便利ですが
自作クラスFooに対して
std::ostream& operator<<(std::ostream& stream, const Foo& obj)
を定義するだけで、どんなクラスも統一的にダンプできてマニピュレータも効く
(上記関数内で複数要素をstream <<するとき、setw()系マニピュレータの効きを正しくするには一工夫要るが
さらにその際ストリームに出力するフォーマットをうまく考えておけばシリアライザも兼用できる
つまり
std::istream& operator>>(std::istream& stream, Foo& obj)
を定義してデシリアライズすると良い
906デフォルトの名無しさんsage2012/10/07(日) 16:04:41.52
3つのクラス Nasubi Letasu Qri があったとして、
ひとつの Nasubi へのポインタを Retasu と Qri が共有して持ってる場合、
>>905 のような方法でちゃんとシリアライズ、デシリアライズできるの?
ダンプはできるだろうけど
907906sage2012/10/07(日) 16:07:54.86
>>905
すまん
よく考えたら、不可能ではない事に気づいた
(お行儀は悪いだろうけど)
908デフォルトの名無しさん2012/10/07(日) 16:16:49.36
A y=xでA y(x)と同じ振る舞いをさせたい(コピーコンストラクタを起動したい)のですが、
xをintに変換したものが呼び出されているようです。
この初期化の仕方を禁止する(明示的なものだけ残す)か、正しい定義をするか・・・
C++11でも可能です。よろしくお願いします。
#include
struct A {
int n;
A(int i): n(i+1) {
std::cout << "value init" << std::endl;
}
explicit A(const A& rhs): n(rhs.n) {
std::cout << "copy init" << std::endl;
}
operator int() const { return n; }
};
int main()
{
A x(0);
A y=x;
A z(x);
std::cout << x.n << std::endl;
std::cout << y.n << std::endl;
std::cout << z.n << std::endl;
}
909デフォルトの名無しさんsage2012/10/07(日) 16:20:12.37
A(int i)=delete;
910デフォルトの名無しさんsage2012/10/07(日) 16:25:20.39
>>909
いや、それは必要なんです・・・
それを生かしておく方法はありませんか?
911デフォルトの名無しさんsage2012/10/07(日) 16:29:49.88
operator=( const A& )を追加
912デフォルトの名無しさんsage2012/10/07(日) 16:34:22.29
何ともならんのだけど・・・
A& operator=(const A& rhs) {
std::cout << "operator= called" << std::endl;
n = rhs.n;
return *this;
}
913デフォルトの名無しさんsage2012/10/07(日) 16:52:22.73
operator=(int)を追加
914デフォルトの名無しさんsage2012/10/07(日) 16:55:48.96
>>913
ちょっと意図が分からないので説明してもらえませんか?
近いところまでは行ってると思うんだけど・・・
#include
struct A {
int n;
explicit A(int i): n(i+1) {
std::cout << "value init" << std::endl;
}
explicit A(const A& rhs): n(rhs.n) {
std::cout << "const copy init" << std::endl;
}
explicit A(A& rhs): n(rhs.n) {
std::cout << "copy init" << std::endl;
}
operator int() const { return n; }
};
int main()
{
A x(0);
A y=x;
A z(x);
std::cout << x.n << std::endl;
std::cout << y.n << std::endl;
std::cout << z.n << std::endl;
}
915デフォルトの名無しさんsage2012/10/07(日) 17:00:06.06
ttp://ideone.com/URoDB
問題ないように見える
916デフォルトの名無しさんsage2012/10/07(日) 17:05:54.98
とりあえず結果はよさそうです。
A(const A&)が呼ばれなくなりましたね。
explicitをつけると失敗するというのは気持ち悪い・・・何が起こっているのか?
917デフォルトの名無しさんsage2012/10/07(日) 17:07:35.23
やっぱダメよ!
const A x(0);
で破綻する・・・。
918デフォルトの名無しさんsage2012/10/07(日) 17:14:47.32
>>915
のままだとconst A x(0);もOKなんですね。
わけが分からなくなってきた。
919デフォルトの名無しさんsage2012/10/07(日) 19:47:06.94
これでおk(C++11)
http://ideone.com/WHanG
920デフォルトの名無しさんsage2012/10/07(日) 22:56:48.57
namespace Example
{
#define USE_SPACE_VIDEOS Extender::Multimedia::Videos
struct FirstOuterDependent
{
int Something( USE_SPACE_VIDEOS::Fillter &filter );
};
struct SecondOuterDependent
{
int Something( USE_SPACE_VIDEOS::Fillter &filter );
};
#undef USE_SPACE_VIDEOS
}
namespace Videos = Extender::Multimedia::Videos;で定義したVideos消せないから
結局プリプロセッサ使うしか無い。エイリアス系の名前ってどうにか消せないのか?
921デフォルトの名無しさんsage2012/10/07(日) 23:02:35.91
消せないってなんだよ 意味わからん
922デフォルトの名無しさんsage2012/10/07(日) 23:06:28.01
#undefみたいにする事だよ
923デフォルトの名無しさんsage2012/10/07(日) 23:08:30.21
消せないだから逆か。
#undefのような事ができないって事。
924デフォルトの名無しさんsage2012/10/08(月) 00:03:17.61
>>920
スコープ出れば消えたも同じだしエイリアス使う以外のやり方もあるでしょ
ttp://codepad.org/KwxPx2fQ
925デフォルトの名無しさんsage2012/10/08(月) 00:22:17.89
1つの同じ名前空間内で、別々の名前空間に対し、同じ名前を付けたいんだ。
1つの名前空間を複数に別けるってのはちょっとねぇ。
926デフォルトの名無しさんsage2012/10/08(月) 00:31:10.38
class Dependent
{
namespace Videos = Extender::Multimedia::Videos;
public:
int Something( Video::Fillter &filter );
};
こうできりゃ最高なんだけどねぇ。
927デフォルトの名無しさんsage2012/10/08(月) 00:33:41.20
できないの?
928デフォルトの名無しさんsage2012/10/08(月) 01:44:12.76
>>925
> 1つの名前空間を複数に別けるってのはちょっとねぇ。
そんな個人の感覚を優先してマクロ使うほうがいいなんてC++使うのは向いてなさそうだな
ttp://codepad.org/BZYexHQN
929デフォルトの名無しさんsage2012/10/08(月) 10:32:53.76
>>926
ナショナリズムは小児病
リベラルは厨二病
社会に出れば人間誰しもコンサバティブ(真の保守)な考え方を持つに至るものだ
もっともそれはその者が人間であるに足る知能を持つ場合に限られるのではあるが
930デフォルトの名無しさんsage2012/10/08(月) 15:45:07.86
>>928
大規模開発してるとマクロでもいいから既存のシンボル名を消したいってのが解るようになるよ。
マルチメディア向け仮想層を構築すると、依存するライブラリに同じような名前がかなり登場する。
.cppに関してはどうでもいいけど、.hだと安易な名前空間の省略ができない。なんとか、
名前空間の汚染を少なくしようとすると汚い方法しか思いつかない。
読みづらくなるから嫌だけどusing namespaceもありっちゃありかなぁ。
こいつなら上書き可能だし。
931デフォルトの名無しさんsage2012/10/08(月) 15:56:40.76
どう見ても自分はバカだ、と言ってるようにしか見えない。
932デフォルトの名無しさんsage2012/10/08(月) 16:02:06.84
じゃお利口な方法教えてよ。
933デフォルトの名無しさんsage2012/10/08(月) 16:04:47.74
あと、もうひとつ。defineなんて多用すべきじゃないけど、
こんかいの場合でdefineが問題になる点は何?
まさかgotoは絶対悪。gotoを書かなければ似たような事をしていいとかそんな思考?
934デフォルトの名無しさんsage2012/10/08(月) 16:08:53.86
>>928
・無名名前空間はヘッダーで書いても意味がない
・N1とN2をNにまとめてるが、N1とN2が干渉したら完全名じゃないとアクセスできない
・NN内でNと同じ名前を定義したい場合衝突する
935デフォルトの名無しさんsage2012/10/08(月) 16:16:45.59
> 安易な名前空間の省略
なんてしなきゃいいだけだろ。
本当に大規模開発してるのか?
大規模開発で安易な名前の省略とかしてたら、マジで死ねるぞ。
936デフォルトの名無しさんsage2012/10/08(月) 16:25:44.71
>>935
楽に出来ることは楽にできたほうがいいだろうに。
あと、これはどういうケース?
>マジで死ねるぞ。
defineとundefで狭い範囲だけ有効な名前つける場合問題になったことはないけど。
ただ個人的にはキモいんで完全に同等機能をもった代替案がほしい。
937デフォルトの名無しさんsage2012/10/08(月) 16:40:57.58
>>936
> 楽に出来ることは楽にできたほうがいいだろうに。
小規模なら小手先テクニックでいいかもしれないが、大規模 (=多人数) だとみんなが
ちゃんと理解できる方法でやらないとダメだろ。
> defineとundefで狭い範囲だけ有効な名前つける場合問題になったことはないけど。
たとえば関連する修正箇所探すだけでも、小手先でそんな変なことしてるとえらく面倒
になるぞ。
まあ、最近のツールは結構賢いからあまり気にすることはないのかもしれないが。
938デフォルトの名無しさんsage2012/10/08(月) 16:51:57.98
>>937
つかうっていってもヘッダーの限られた範囲だけで、ヘッダーまたいだりすることは無いからねぇ。
まぁ、オムニ補完に頼りっきりの開発者だと辛いだろうね。
で、いい代替案は無いかねぇ。
939デフォルトの名無しさん2012/10/08(月) 16:57:23.54
外部結合を持つ識別子に「取り消し」って、そもそもどんな要求なんだろう
940デフォルトの名無しさんsage2012/10/08(月) 17:06:00.98
エイリアスだから実体と結合してる訳じゃない
941デフォルトの名無しさんsage2012/10/08(月) 17:16:29.63
いい加減、「そんな要求はアホだろ」と言われてることに気づけよ
942デフォルトの名無しさんsage2012/10/08(月) 17:20:29.07
>>939
名前の衝突を防ぐための要求。undefが存在するのと同じ理由だよ。
943デフォルトの名無しさんsage2012/10/08(月) 17:21:14.72
>>941
お利行さんはどうすんの?
9449392012/10/08(月) 17:30:08.15
あ、あれ?
>>940 でいちおー納得したつもりでいたけど
やっぱビンゴだったの??
945デフォルトの名無しさんsage2012/10/08(月) 18:40:12.51
>>944
何が?実体じゃなくエイリアスを前提に言ってることは変わらないけど?
946デフォルトの名無しさんsage2012/10/08(月) 19:05:18.72
> お利行さんはどうすんの?
>>920のケースなら
> 1つの同じ名前空間内で、別々の名前空間に対し、同じ名前を付けたいんだ。
> 1つの名前空間を複数に別けるってのはちょっとねぇ。
に対して
> そんな個人の感覚を優先してマクロ使うほうがいいなんてC++使うのは向いてなさそうだな
のとおりでC++的でない設計を要求するような感覚は無視して素直に
namespace Extender { namespace Multimedia { namespace Videos {
struct FirstOuterDependent
{
int Something( Fillter &filter );
};
struct SecondOuterDependent
{
int Something( Fillter &filter );
};
}}}
namespace Example {
using Extender::Multimedia::Videos::FirstOuterDependent;
using Extender::Multimedia::Videos::SecondOuterDependent;
}
947デフォルトの名無しさんsage2012/10/08(月) 19:40:08.83
管理下に無い名前空間に割りこむなんて最悪じゃん。
外部ライブラリに似たような名前のクラスや関数できたらどうすんの?
948デフォルトの名無しさんsage2012/10/08(月) 19:48:46.72
マクロ嫌いが原理主義化して手段にこだわり結果を見失うとは・・・
これが取り憑かれたって事か
949デフォルトの名無しさんsage2012/10/08(月) 19:50:32.07
>>946
そもそもマクロは何がダメなのか分かってるのか?
950デフォルトの名無しさんsage2012/10/08(月) 19:51:40.18
マクロなんか使った事ないが困った事一度もないな
タイプ減らす以外にマクロならではってのあんの?
951デフォルトの名無しさんsage2012/10/08(月) 19:53:54.81
メッセージクラッカ
952デフォルトの名無しさん2012/10/08(月) 19:55:06.09
>>947
割り込まれるようになってるのが名前空間で
それがいやならクラスを使うべき
>>950
__cplusplus や assert も否定されますか?
953デフォルトの名無しさんsage2012/10/08(月) 19:57:24.35
>>950
マクロに限らず演算子や型定義、関数定義を覗いたら言語機能の殆どがタイプ量減らすための構文だろ。
タイプ量気にしないならC使ってりゃいい。
954デフォルトの名無しさんsage2012/10/08(月) 19:57:41.32
>>950
俺も困ったことは全くないが、一応
処理速度を落とさずにコピペを防ぐというメリットがあることは知ってる。
あと、ライブラリなんか作ってると、一つのソースで、
マクロで VC++用、GCC用(いわば Win用、Linux用)と分けることはよくある。
デバッグ用、リリース用をマクロで分けることもよくある。
955デフォルトの名無しさんsage2012/10/08(月) 19:59:17.00
>>952
できると、していいじゃ違うでしょ。
そもそも理想論は置いといて実質の話だし。
956デフォルトの名無しさんsage2012/10/08(月) 20:00:55.72
>>952
そもそも当初の目的を見失ってるだろ
957デフォルトの名無しさんsage2012/10/08(月) 20:05:35.53
>>952
VectorとかListとかありきたりな名前つけたらすぐ衝突するじゃねぇか。
958デフォルトの名無しさんsage2012/10/08(月) 20:06:34.93
マクロなんてデバッグ目的でしか使わないな
959デフォルトの名無しさんsage2012/10/08(月) 20:09:28.88
>>954
vlcやmplayerの様にアーキティクチャー依存部は、win32とかlinuxとか
ソース単位でディレクトリーに切り分けりゃいいものを、混在ソースを書きたがる奴は
何がしたいんだろうね。
960デフォルトの名無しさんsage2012/10/08(月) 20:11:17.84
マクロはいいんで、エイリアス衝突を回避するお利行さんな方法を教えていただけませんかね。
それも目的を見失った欠点だらけの方法以外で。
961デフォルトの名無しさん2012/10/08(月) 20:31:46.57
衝突回避は }
なんでたったこれだけのことがわからないかね
962デフォルトの名無しさんsage2012/10/08(月) 20:42:02.28
もともと別物であった名前空間を単一のエイリアスを通じてまとめて扱おうとするから衝突を回避する必要が出ただけだろ?
別々のまま扱えば問題がなかったところにわざわざ問題を発生させる方法こそが目的を見失った欠点だらけの方法じゃないか
963デフォルトの名無しさんsage2012/10/08(月) 20:48:49.92
>>962
ローカル変数と同じ話で一時的に省略名が欲しいだけ。
undefで実現できるようなことなんだから大した話じゃないでしょ。
あと、いちいち個別に名前つけたって結局ぶつかるんだから意味無いでしょ。
いずれにせよ一時的につけた名前は不要になったら消さないと衝突を起こす。
尤も、ヘッダーに書くなら完全名を常につけるって手もあるが、冗長な上に読みづらすぎる。
964デフォルトの名無しさんsage2012/10/08(月) 20:49:44.27
while(1){
965デフォルトの名無しさんsage2012/10/08(月) 20:50:34.76
同じ名前空間で同じ名前を別の物につけたいとかいう時点で
もうマクロでいいだろって気になる
966デフォルトの名無しさんsage2012/10/08(月) 21:10:50.43
>>946
>>962
そもそも、大規模開発した事なくて困った経験無いだろ。
複数の外部ライブラリを使い、複数の兄弟関係のヘッダーファイルが現れる状態だと
兄弟関係のヘッダーで名前がぶつかるってのは遅かれ早かれ必ずぶち当たる問題だぞ。
967デフォルトの名無しさんsage2012/10/08(月) 21:15:09.74
>>962
エイリアスを使った上で衝突を回避したいのが目的。
エイリアスを使わないんなら、問題回避の目的すら存在してないんで、
そもそも目的からずれてる。というか目的から逃げてる。
968デフォルトの名無しさんsage2012/10/08(月) 21:28:45.23
ネバーエンディングすとぉ〜おりぃ〜♪
969デフォルトの名無しさんsage2012/10/08(月) 21:29:21.24
>>966
現在のプロジェクトで 600Ks × 4 システム程度の開発してるけど、
そんなことで困ったことはない。
>>967
そもそも楽するためか何か知らないけど、エイリアス使うと問題が
発生するんだから、使わないと言う選択しろよと思う。
970デフォルトの名無しさんsage2012/10/08(月) 21:37:53.21
どうせ名前空間すら使わずMFCみたいな命名規則なんだろ
971デフォルトの名無しさんsage2012/10/08(月) 21:47:36.27
>>969
少なくともundefを使った場合見た目が悪いだけで問題は起きてない。
代替手段があるなら変えたいけど、現状で問題はない。
問題がないなら楽してもいいでしょ。
もし問題があるというならどういう問題がある?
マクロ使ってることが問題だなんて話はいいから、名前空間を汚染するとか
実際に困る具体的な問題点を指摘して。
972デフォルトの名無しさんsage2012/10/08(月) 21:51:53.34
>>969
あなたのプロジェクトじゃどういうふうに名前管理してらっしゃるんですか?
973デフォルトの名無しさんsage2012/10/08(月) 22:28:38.03
>>971
問題ないと思ってるなら、そのまま使ってりゃいいじゃん。
自分から >>920 書いといて、
> もし問題があるというならどういう問題がある?
って、頭沸いてるとかしか思えない。
>>972
普通に、モジュールごとに名前空間分けて管理しているだけですよ。
974デフォルトの名無しさんsage2012/10/08(月) 22:35:44.81
>>973
>自分から >>920 書いといて、
>> もし問題があるというならどういう問題がある?
>って、頭沸いてるとかしか思えない。
文脈がつながってなくて意味がわからない
975デフォルトの名無しさん2012/10/08(月) 22:36:22.26
GetExitCodeProcessで取得する値が負の値の場合、結果をうまく取得できないんですけど、どうしたら良いですか?
976デフォルトの名無しさんsage2012/10/08(月) 22:38:10.97
こんな調子じゃc++じゃなくても困ってそうね
977デフォルトの名無しさんsage2012/10/08(月) 22:41:20.67
>>973
名前空間を作る場合の話じゃなくて参照する場合の話なんですが・・・
A::B::E X(A::B::C::D n, N::L::O k); こういう書き方してるとか
978デフォルトの名無しさんsage2012/10/08(月) 22:42:36.94
>>975
こちらへ
Win32API質問箱 Build112
http://toro.2ch.net/test/read.cgi/tech//
979デフォルトの名無しさんsage2012/10/08(月) 22:49:22.06
元の話題が
>エイリアス系の名前ってどうにか消せないのか?
なんだから、「C++じゃ無理じゃね」
で解決なんでないの…
980デフォルトの名無しさんsage2012/10/08(月) 22:52:19.91
>>973
なんとなく>>973の意図を読み取って答えると、
問題ないって言ったのは一時的なエイリアスを使った事に対して。
当初の問題になってるのは、マクロを代替する手段がないかという話で問題点が違う。
981デフォルトの名無しさんsage2012/10/08(月) 22:53:48.92
また誤解を生みそうなので訂正
×当初の問題になってるのは、マクロを代替する手段がないかという話で問題点が違う。
○当初の問題になってるのは、エイリアスを削除するのにマクロを代替する手段がないかという話で問題点が違う。
982デフォルトの名無しさんsage2012/10/08(月) 22:58:56.57
>>979
了解。
983デフォルトの名無しさんsage2012/10/08(月) 23:01:33.51
C#とかだとnamespaceのエイリアス作れるんだっけか
984デフォルトの名無しさんsage2012/10/08(月) 23:05:58.58
>>974
ごめん、俺には君に (君のバカさを) 説明する能力がないみたいだ。
まあ、一行目だけ理解してくれればいいよ。
>>977
> A::B::E X(A::B::C::D n, N::L::O k); こういう書き方してるとか
他のモジュールを参照する場合は基本その形。
共有ライブラリと自モジュールは適宜省略するけど。
985デフォルトの名無しさんsage2012/10/08(月) 23:12:32.96
馬鹿だアホだ罵倒し始めて説明できないのは甘え
986デフォルトの名無しさんsage2012/10/08(月) 23:18:05.70
>>984
>まあ、一行目だけ理解してくれればいいよ。
その一行目で言ってる問題ないことと問題点が違うんだよ。
987デフォルトの名無しさんsage2012/10/08(月) 23:27:44.32
>>920 には >>979 で、答えでてるし。
それ以外になんか問題あるのか?
988デフォルトの名無しさんsage2012/10/08(月) 23:30:33.87
>>987
ないよ。
あるとすれば、>>984がズレた話題振った挙句、有用な答えもなしにバカ呼ばわりして逃げていったことぐらい。
989デフォルトの名無しさんsage2012/10/08(月) 23:38:05.83
> ズレた話題振った
>>920 のこと?
いじめたら、かわいそうだよ (w
990デフォルトの名無しさんsage2012/10/09(火) 06:26:20.37
あ
991デフォルトの名無しさんsage2012/10/09(火) 09:03:17.98
C++でweak_ptrをintrusiveに実装したいときはどう書けばできますか?
992デフォルトの名無しさんsage2012/10/09(火) 11:01:12.23
intの配列をnewしたとき初期化して無いのに中身が0になっていて
バグが発見しにくいのですけど
なんで0になっているんですか?
どうしたらランダムっぽくなるんでしょうか?
993デフォルトの名無しさんsage2012/10/09(火) 11:06:03.43
>>992
そもそもそんなデバッグに頼るのが間違い。
どうしてもランダムにしたいなら、そういう処理つきのnewを作ってそれを使え。
994デフォルトの名無しさんsage2012/10/09(火) 11:10:25.32
パフォーマンス以外に理由があるかよ
995デフォルトの名無しさんsage2012/10/09(火) 11:38:30.39
>>992
仕様だから仕方ない
996デフォルトの名無しさんsage2012/10/09(火) 11:42:36.75
いつも0でも、いつも0とは限らないんですよね。
0のものを0で初期化することは
なんか無駄なことしてるようにしかおもえないんですが・・・
997デフォルトの名無しさんsage2012/10/09(火) 11:47:29.07
malloc使え
確保した中身がどうなってるかは知らんがな
998デフォルトの名無しさんsage2012/10/09(火) 12:34:51.00
大方 new int[10]() とかやって「初期化してないのに!」って騒いでるんだろ
999デフォルトの名無しさんsage2012/10/09(火) 12:35:53.23
これって、初期化をし忘れしてないかどうかを検査するために、
ゼロになっているか、それとも適当な数値が入ってるかで調べてるのに、
勝手にゼロが入ってて俺のデバッグ法が使えないじゃん、どうしてよ。
という質問?
1000デフォルトの名無しさんsage2012/10/09(火) 12:37:52.11
次スレー
10011001Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
223KB (229345Byte)
dummy_for_searchRef