- 1 名前: ◆h6A7qfFFu6 mailto:sage [2008/12/29(月) 11:05:07 ]
- スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。
過去ログ スレを勃てるまでもないC/C++の質問はここで pc11.2ch.net/test/read.cgi/tech/1167476845/ スレを勃てるまでもないC/C++の質問はここで 2 pc11.2ch.net/test/read.cgi/tech/1178503366/ スレを勃てるまでもないC/C++の質問はここで 3 pc11.2ch.net/test/read.cgi/tech/1187521676/ スレを勃てるまでもないC/C++の質問はここで 4 pc11.2ch.net/test/read.cgi/tech/1221633708/
- 339 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 09:42:19 ]
- まぁ、とにかく動かしたいんだっていうならそっちのが早いだろうさ
- 340 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 11:02:06 ]
- >>337
その「入門サイト」とやらが、たまたま「class定義より詳細な文法より先に標準ライブラリやSTLの使い方」で「初っ端からSTL連発」なんだろ? 「初心者」がきちんとC++を学びたいなら、そんなわけのわからないサイトではなく、定評のある書籍や教育コースを受講した方がいいと思うけどね。
- 341 名前:デフォルトの名無しさん [2009/01/02(金) 12:11:34 ]
- >>340
STLが、C++基本的構造(クラスなど)より先にあって STLを実装するために、C++の基本構造が作られたんだ。 日本語を勉強するのに、文法的な構造から始めるか、 会話から始めるかという違いだろう。
- 342 名前:デフォルトの名無しさん [2009/01/02(金) 12:21:35 ]
- STLのアーキテクチャの多くはアレクサンドル・ステパノフという一人の人物の手によって作られた。
1979年に彼はジェネリックプログラミングの初期アイデアを練り始め、そしてソフトウェア開発に革命をもたらす可能性を探究し始めた。 当時はジェネリックプログラミングを実際にサポートしているプログラミング言語がまだなかった。 1987年までにステパノフとマッサーはジェネリックプログラミングの研究成果としてAdaのリスト処理ライブラリを開発してリリースしていた。 しかしながらAdaは軍需産業以外ではあまり普及しておらず、 C++は当時まだ言語として未成熟ではあったものの(テンプレートはまだなく後から実装された) より広く普及してジェネリックプログラミングの良好なサポートが提供される可能性が高いと考えられた。 ベル研究所のアンドリュー・コーニグがこの動きを察知して、1993年11月のANSI/ISOのC++標準化委員会に アイデアを提出するように求めるようなことがもしなければ、この作業は間違いなく、さしあたっては研究プロジェクトとして、 あるいはヒューレット・パッカード研究所のプロプライエタリなライブラリとして継続されたであろう。 提案は委員会で全面的に賛同を得て、すぐさま1994年3月のミーティングでのコーニグからの正式なリクエストへとつながった。 Standard Template Library - Wikipediaの抜粋 ja.wikipedia.org/wiki/Standard_Template_Library
- 343 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 12:33:51 ]
- >>341は、「STLを実装するため」に追加された機能だけが、「C++の基本構造」とでもいいたいのだろうか。
アホか。
- 344 名前:デフォルトの名無しさん [2009/01/02(金) 12:52:10 ]
- STLとC++の開発が始まったのは調べたら1979年らしい。
これらは別々の人たち、場所で開発されていて、STLを実装するために C++の開発に大きな影響を与えたこととおもうが。
- 345 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 13:03:19 ]
- らしい。
おもうが。
- 346 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 13:06:38 ]
- 聞きかじりと妄想だけで断言口調のやつ、多いな。
- 347 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 13:19:57 ]
- これからC++を始めるならOOPを基本とすべき。
- 348 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 14:01:13 ]
- 今さら入門書って思うレベルだけどAccelerrated C++を読んでみたい。
- 349 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 14:02:04 ]
- ぜひどうぞ
- 350 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 14:15:37 ]
- ア、、アク、アクセ・・・
俺には無理だった・・・
- 351 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 15:23:16 ]
- >348
その本はまさに「配列より先にvector」の本やね
- 352 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 15:29:02 ]
- vector は vector で、
< > って何なのとか、2次元配列はどうやってつくるのとか、 面倒臭い事もあるので、 vector を先にやった方がいいと言える程手軽な物でもない。 at を使わないと境界チェックもしてくれないし。 動的配列より先に vector ってのなら構わんがね。
- 353 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 15:32:05 ]
- >>348を読んでから言え馬鹿
- 354 名前:デフォルトの名無しさん [2009/01/02(金) 15:41:03 ]
- C++では、
Cのcontainer_of()相当のことは標準で出来ないでしょうか?
- 355 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 15:57:08 ]
- カプセル化を前提とするC++で
そういうものが必要になる事自体設計がおかしいと思われる。 もちろん標準でそんなことはできない。
- 356 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 16:02:59 ]
- クラスの継承がそれに相当すると主張するのは無茶すぎますかね?
- 357 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 16:03:35 ]
- 買いに行ったけど売ってなかった・・・(´;ω;)
DVDコピーとかの本ばっか。
- 358 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 16:06:04 ]
- >>356
ダウンキャストか。
- 359 名前:デフォルトの名無しさん [2009/01/02(金) 16:16:43 ]
- >>355,356
返答ありがとうございます。 継承使えばいいのかとも考えたのですが、 継承ではクラス内にlistを3個とか複数持たせる ことは出来ないと考えました。 クラス内にlistを複数持つという設計が良くない のかもしれませんが、代替案が浮かびません。
- 360 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 16:19:56 ]
- list と何か関係あるのか?
- 361 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 16:22:21 ]
- >>356
煽りとかじゃなく純粋に質問。 それどういう意味?
- 362 名前:デフォルトの名無しさん [2009/01/02(金) 16:26:14 ]
- >>360
説明不足すいません。 Cでは、構造体内にlistを複数持たせておいても それぞれのlistについてcontainer_of()を使えば、 包含する構造体は求まるので、 それと同等のことをC++で行う方法を考えていました。
- 363 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 16:43:29 ]
- #include <iostream.h>
int main() { cout<<"こんにちわ。"<<endl; return 0; } include ファイルを開けません。'iostream.h': No such file or directory
- 364 名前:363 mailto:sage [2009/01/02(金) 16:46:19 ]
- 自己解決しました。
- 365 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 17:09:32 ]
- >>361
listを継承したクラスで, listにアップキャストしてリストを作る それをダウンキャストしたら得られるだろ? listっていってもSTLのではないぞ
- 366 名前:!omikuji !dama mailto:sage [2009/01/02(金) 17:17:03 ]
- C++のコンパイラはやはり
Borland C++Compiler でよろしいのでしょうか
- 367 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 17:18:35 ]
- 無料版の方だったら今時ありえない、よした方がいい
- 368 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 17:25:06 ]
- >>362
複数なら継承ではなく包含させればいい。 そして、listにそれを所有するオブジェクトへのポインタまたは参照を持たせる。
- 369 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 17:27:25 ]
- >>366
対応している規格がが古いからお勧めできない。VC++2088 expressを薦める
- 370 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 17:27:40 ]
- container_of()相当で聞いてるんだから
リンク用のポインタ以外もたないlistなんじゃねーの? 持たせてもいいんだろーか?
- 371 名前:!omikuji !dama mailto:sage [2009/01/02(金) 17:34:36 ]
- >>367
>>369 サンクス
- 372 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 17:38:01 ]
- ググってみたけど、container_ofって危険じゃないか?
引数を間違えて、構造体のメンバじゃない変数を与えてもコンパイルエラーにならないんじゃない?
- 373 名前:デフォルトの名無しさん [2009/01/02(金) 17:38:27 ]
- >>368,370
ありがとうございます。 とりあえずSTLのlistを使うことを考えていたのですが、 自前で作るかSTLのlistを継承したリストを 作ってそいつにポインタ持たせればいいということですね。
- 374 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 17:43:47 ]
- >>373
なにか恐ろしい事をやろうとしているように見える。 STL のクラスは継承する事を全艇に作ってないので 基本的には継承しちゃだめ。 そもそも、list からそれを持ってるクラスをとってこようとしている時点でおかしい。 list を持っているクラスを通して list を扱うのが基本だ。
- 375 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 18:45:24 ]
- >>373
listとポインタを所有するクラスを作ろう
- 376 名前:デフォルトの名無しさん [2009/01/02(金) 19:53:32 ]
- $ cat c_sizeof.c
#include <stdio.h> int main(void) { printf("sizeof(\'\\x80\') == %d\n", sizeof('\x80')); return 0; } /* EOF */ $ gcc -Wall -std=c99 -o c_sizeof c_sizeof.c $ ./c_sizeof sizeof('\x80') == 4 $ cat cxx_sizeof.cxx #include <iostream> int main() { std::cout << "sizeof(\'\\x80\') == " << sizeof('\x80') << std::endl; return 0; } // EOF $ g++ -Wall -o cxx_sizeof cxx_sizeof.cxx $ ./cxx_sizeof sizeof('\x80') == 1 なぜ、C言語ではシングルクォートが、4 Bytesであり、C++では、1 Byteなのですか。
- 377 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 19:59:46 ]
- >>376
Cではint型で C++ではchar型だからです C++でのオーバーロードとかの兼ね合いだろうね
- 378 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 20:06:19 ]
- 1バイトって256種類のパターンを表現できるんだっけ
- 379 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 20:06:52 ]
- 普通はそう
Cにおいては絶対ではないが
- 380 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 20:06:58 ]
- cher型は嫌いです
- 381 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 20:12:08 ]
- ちーあ?
- 382 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 20:22:07 ]
- >>377
ありがとうございます。そういうことだったんですね。 C言語とC++は、こういう細かいところでも違うんですね。
- 383 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 20:26:19 ]
- なぁ、チーフって何だ?
- 384 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 22:20:53 ]
- 牛肉だろ
- 385 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 22:51:07 ]
- ロベール先生にお世話になることにしました
- 386 名前:デフォルトの名無しさん [2009/01/03(土) 03:20:44 ]
- 2ch終わった
2ちゃんねる、海外企業に譲渡 ― 西村博之氏からPACKET MONSTER INC.へ譲渡完了 www.rbbtoday.com/news/20090102/56801.html ニコニコに移行して2chは完全に切る気やな
- 387 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:30:31 ]
- 2chが終わるってのも、思い込みすぎかも。まぁ、2chは巨大になったことだし
もし消滅するなら、また別の人がサーバーを運営するだろうね。 手法などは、既に2chのを参考にすれば済むことだし、著作権だの 知的財産権だの、抵触せずに似たものはいくらでも作れるし。
- 388 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:35:19 ]
- IP記録を始めたときも、終わったというやつは大勢いたが、今まで生き残っている。
少なくともユーザに見限られるということはないだろうとは言える。
- 389 名前:デフォルトの名無しさん [2009/01/03(土) 03:37:26 ]
- 国内しかも個人が代表に見える格好だと
裁判とか税金とかうるさいから、 スケープゴートとして海外企業に移したんでしょ。 ひろゆきとしては譲渡していいことずくめだろ
- 390 名前:デフォルトの名無しさん [2009/01/03(土) 03:44:35 ]
- 大雑把に言って、内容は不特定多数の人が書き込んで出来上がっているし、
その不特定多数が消滅しない限り、やはり何かしらこういったコミュニティーは 継続するだろうしね。運営者も費用も必要だが。掲示板そのものに スタイルはいくつかあれど、誰でもやれることだし。ただ、一生をそんなことに ささげるだけの覚悟はあるかい?
- 391 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:55:02 ]
- つーか、ガンガン機能追加するわけでもないしね。
運用するだけじゃん。こんな掲示板 アウトソースすればよろし レスは1000までって制限も永遠と変わんないしw
- 392 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 05:38:23 ]
- 複雑な機能なんていらん
掲示板として書き込み/読み込みというシンプルな機能だけで十分 肥大化して良い事なんて無いってのはC++でもいえる
- 393 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 08:35:35 ]
- 2ちゃんねらーらしくもない話してるな
スルーしろよ
- 394 名前:デフォルトの名無しさん [2009/01/03(土) 11:03:58 ]
- protected private継承の違いについて
- 395 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 11:12:01 ]
- int i,j;
i=0; while(j=10-i++) ってのはありでつか?
- 396 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 11:14:57 ]
- ありだけど、キミが期待した通りかはわからん。
- 397 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 11:15:30 ]
- えぇ、変数って2個いっぺんに宣言できるの!?
ってかありなんじゃない
- 398 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 11:26:55 ]
- >>395
おそらく"ってのはありでつか?"がエラーになる
- 399 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 11:49:30 ]
- 文法上問題は無いが、何か気持ちは悪い。
- 400 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 12:03:01 ]
- >>395
あり。そう書いたとおりに動く。
- 401 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 12:22:43 ]
- >>395の話がCの宿題スレでよく分からん議論になってる
- 402 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 12:28:17 ]
- 少なくとも、読むときには困るコードだな
- 403 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 13:13:25 ]
- >>401
おそらく>>395が向こうで代入式!代入式!ってファビョってる奴だと思う。 追い詰められてこっちに助けを求めてきたんだろ。
- 404 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 13:20:32 ]
- printfでも入れてコンパイル&動かせばいいだけじゃん > ファビオジニオール
- 405 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 13:51:18 ]
- なるほど、宿題スレか。
宿題の回答としてはまずいと思うけどな。 わけもわからず写して動作聞かれたら困るべ。
- 406 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 13:52:50 ]
- >>403
お前がコンパイラが通すから良しといっている基地外だというこは分かったから、 いつまでも必死にファビョってなさいw
- 407 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 13:55:38 ]
- 本人登場w
- 408 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 13:56:14 ]
- >>403
見えない敵と必死に戦う低レベル講師乙。コードを客観的に考えるのと、 主観ばかりで意見する相手に対して、罵詈雑言で返すだけの無能は 黙っていた方が墓穴を掘らなくて済むぞw
- 409 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:03:49 ]
- >>408
キモッ
- 410 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:12:17 ]
- >>408
お前の発言が主観ではなくなんだと言うのだ
- 411 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:14:20 ]
- 408は自己紹介としては良く出来てると思うぜ。
- 412 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:21:00 ]
- ん?
>>408の日本語がよく分からんのだが、 "コードを客観的に考え"てるのが誰で "主観ばかりで意見する"のが誰で "罵詈雑言で返すだけの無能"が誰だって?
- 413 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:22:11 ]
- >>395は、くせぇくせぇ、○ンコの臭いがぷんぷんすんぜ、こりゃ〜生っ粋のクソースだ。
間違いねぇ、クソ麻呂のクソースだぜ、ぷぷぷw
- 414 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:34:49 ]
- マジレスするとgccだとコンパイル通らないよ
警告: 真偽値として使われる代入のまわりでは、丸括弧の使用をお勧めします だってさ
- 415 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:36:20 ]
- あっ、一応警告だけでコンパイルも実行もできた。
j=10 i=1 j=9 i=2 j=8 i=3 j=7 i=4 j=6 i=5 j=5 i=6 j=4 i=7 j=3 i=8 j=2 i=9 j=1 i=10
- 416 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:36:49 ]
- >>414
そりゃ、警告だ コンパイルエラーじゃない
- 417 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:38:13 ]
- 警告をエラーにするオプションを立てればエラーにはなる。一応。
- 418 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:42:41 ]
- 質問です.
・ソース #include <windows.h> #include <time.h> #include <stdio.h> typedef struct { time_t time; WORD namesum; BYTE name[254]; } HEADER1; typedef struct { time_t time; WORD namesum; // BYTE name[254]; } HEADER2; main() { BYTE name[254]; printf("HEADER1 = %d\n", sizeof(HEADER1)); printf("HEADER2 = %d\n", sizeof(HEADER2)); printf("name[254] = %d\n", sizeof(name)); printf("HEADER2 + name[254] = %d\n", sizeof(HEADER2) + sizeof(name)); } ・実行結果 HEADER1 = 260 HEADER2 = 8 name[254] = 254 HEADER2 + name[254] = 262 HEADER2 + name[254]はなんで260にならずに262になったのでしょうか?
- 419 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:44:07 ]
- 関係ない部分を削ってから質問した方がいいよ
- 420 名前:419 mailto:sage [2009/01/03(土) 14:44:54 ]
- ↑ 「ソースコードの」、関係ない部分を
- 421 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:45:49 ]
- ソースは全部あげたほうがいいだろ。
どこが「関係ない部分」かわかるくらいなら自分で問題解決できるって。
- 422 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:46:18 ]
- >>418
HEADER2 + name[254] = 8 + 254 = 262 ってそのまんだだと思うが
- 423 名前:419 mailto:sage [2009/01/03(土) 14:47:48 ]
- で、ソースを見たが、8 + 254 はどう考えても 262
- 424 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:47:54 ]
- 足し算w
- 425 名前:419 mailto:sage [2009/01/03(土) 14:48:48 ]
- >>421
まぁそうか・・・HEADER1はどう考えても関係ないんだが。スマソ
- 426 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:48:54 ]
- なんで260になると思ったのか説明して欲しい。
- 427 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:49:19 ]
- >>418の頭の中のバグを直すのは難しいw
消防からやりなおせってとこか
- 428 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:49:23 ]
- パディングの話だろ。
- 429 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:49:28 ]
- >422
HEADER2はHEADER1のname[254]をコメントアウトしているので HEADER2 + name[254] = HEADER1に何でならないのかと思いまして.
- 430 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:51:06 ]
- それぞれ全く無関係だから。
- 431 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:51:14 ]
- パディングとかアラインメントとかでググれ
- 432 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:52:31 ]
- なんかバカが紛れ込んでて話をややこしくしてるな。
>>422>>423>>424>>426>>427>>430 あたりは無視してよろしい。
- 433 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:53:03 ]
- いやいや、型の定義は (おまえの疑問とは) 関係ないよ。
printfで出力された値を見れば、ただ足し算するだけ。 定義のところに疑問があるなら、疑問を持つべきは最後のprintf文じゃないでしょ?
- 434 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:53:56 ]
- >>433
だから分からん奴は黙っとけ。
- 435 名前:418 mailto:sage [2009/01/03(土) 14:54:25 ]
- パディングでぐぐったら答えが出てきました.初めて知ったよ.
みなさんありがとう.
- 436 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:54:32 ]
- お前は代入式ってファビョってりゃいいんだよw
- 437 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:55:41 ]
- >>436
クソワロタ
- 438 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:57:26 ]
- パディングやアラインメントならsizeof(HEADER2)の値が6じゃないのを疑問に思うのが普通じゃね?
- 439 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:57:34 ]
- 数字だけ言うんだもん、足し算の問題だと思うわ
結局日本語で理解できなかったよ
|

|