- 1 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 10:31:46 ]
- スレを勃てるまでもない低俗な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/ スレを勃てるまでもないC/C++の質問はここで 5 pc11.2ch.net/test/read.cgi/tech/1230516307/ スレを勃てるまでもないC/C++の質問はここで 6 pc11.2ch.net/test/read.cgi/tech/1231564903/ スレを勃てるまでもないC/C++の質問はここで 7 pc11.2ch.net/test/read.cgi/tech/1232983248/ スレを勃てるまでもないC/C++の質問はここで 8 pc12.2ch.net/test/read.cgi/tech/1235921779/ スレを勃てるまでもないC/C++の質問はここで 9 pc12.2ch.net/test/read.cgi/tech/1240022781/ スレを勃てるまでもないC/C++の質問はここで 10 pc12.2ch.net/test/read.cgi/tech/1242300936/ スレを勃てるまでもないC/C++の質問はここで 11 pc12.2ch.net/test/read.cgi/tech/1245059383/ スレを勃てるまでもないC/C++の質問はここで 12 pc12.2ch.net/test/read.cgi/tech/1248010352/ スレを勃てるまでもないC/C++の質問はここで 13 pc12.2ch.net/test/read.cgi/tech/1260842197/ スレを勃てるまでもないC/C++の質問はここで 14 pc12.2ch.net/test/read.cgi/tech/1269273471/
- 552 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 02:10:01 ]
- >>549
じゃあムービーのときだけIE立ち上げればいいよ
- 553 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 02:27:42 ]
- ノ´⌒ヽ,,
γ⌒´ ヽ, // ""⌒⌒"\ ) _/\/\/\/\/|_ i / ⌒ ⌒ ヽ ) \ / !゙ (・ )` ´( ・) i/ < 泣かせるおつむ > | /// (__人_)//| / \ \__ `ー'_/  ̄|/\/\/\/\| ̄ / ,}  ̄  ̄ { ヽ, / i i \ / /^i| |i^ヽ \ ヾ ̄ i / .l l \._ノ`フ  ̄ ̄ ト ,, ,.l  ̄ | \ / | l ヽ_r l | | | l ,,_ l _,,. l } ! { / 二二 | 二二ヽ i⌒i .i⌒i i⌒i ____ __ | .|.| .| | .| ,ー、◎ (____ ) (__) rヽ ノ ノ | .| , r───ヽ | .二ノ r───ヽ / / | | ノ ノ | .レ'ノ .ヽ───┘ | .|__ノヽ ヽ───┘ (⌒ / .ノ | ∠/ |____ノ ゝ___ノ ヽ ヽ ( ̄ ̄ ノ
- 554 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 02:35:48 ]
- >>545の質問お願いします。。
- 555 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 02:38:56 ]
- >>554
ttp://www7b.biglobe.ne.jp/robe/cpphtml/html02/menu02.html
- 556 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 05:02:05 ]
- >>555
サイトの紹介ありがとうございます。 データメンバも継承されることは分かったのですがprotectedがまだ今ひとつ分かりません。protectedは派生クラスから基本クラスの値を変更する為に利用するのでしょうか?それとも基本クラスから継承したデータメンバを変更する為に利用されるのでしょうか? よろしくお願いします、
- 557 名前:デフォルトの名無しさん [2010/06/11(金) 07:11:35 ]
- ポインタの意味がサイトとか見てもよくわかりません。
例えば (*p)はどういうことなんですか?(*f)もあるんですが
- 558 名前:デフォルトの名無しさん [2010/06/11(金) 09:19:45 ]
- C言語習得に一番初心者に優しいわかりやすいサイト教えてください。
猫でもわかる〜でも難しいです。
- 559 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 09:26:34 ]
- 猫の先生はいしゃ
www.orchid.co.jp/computer/cschool/clec2.html
- 560 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 09:37:01 ]
- >>556
protectedは実際はあまり使われない ロベールのC++でも買って読むと良い 基本クラスでprivateで、そのまま継承して継承したクラスからも 見えるようにしたい時に使う事か多いけど実際はそんなに登場 する機会はない
- 561 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 09:52:55 ]
- >>552
阿呆なのか?
- 562 名前:デフォルトの名無しさん [2010/06/11(金) 11:42:49 ]
- (*p)と(*f)の違いについて
- 563 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 11:57:27 ]
- そのサイトでは、変数 p と q は上のほうで何て定義してある?
猫の先生は内科の医者 www.orchid.co.jp/computer/cschool/clec13.html
- 564 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 20:34:43 ]
- >>560
ありがとうございました! 非常に参考になりました。
- 565 名前:デフォルトの名無しさん [2010/06/11(金) 20:40:05 ]
- 自作のテキストエディタに予想変換機能(簡単な物)を付けたいのですが
その手の解説かソースプログラムある場所ありますか? 出来ればVC++のウィンドウズ非コンソールプログラムで
- 566 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 22:25:15 ]
- >>565
現状何が問題なのよ。 予測文字列を算出することなのか、予測文字列群をポップアップで表示する方法なのか、いろいろあるでしょ。
- 567 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 23:29:28 ]
- >>566
出来れば予測文字郡をリストボックス形式で表示して 入力と共にリストが絞り込める形がいいです
- 568 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 23:37:24 ]
- share_ptrって凄く便利だけど遅かったりするの?
- 569 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 00:10:26 ]
- >>567
それで今どこまで出来てるの
- 570 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 07:52:52 ]
- >>568
メリットに対してコストは全然問題ないレベル。 普通に使って問題ないよ。万が一問題になったらそこで対応すればいい。
- 571 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 10:06:14 ]
- >>570
ありがとん! あともう一つ質問なんだけど、 listのremove()で、とあるメンバ変数が1だったら削除、とかやりたいんだけどどうやって指定したらよいの? いろんなサイト見てるけどlist<int>とか<char>ばかりで<class*>がない…
- 572 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 10:09:54 ]
- >>571
remove_ifを使う。
- 573 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 10:14:27 ]
- >>571
std::remove_if
- 574 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 10:27:20 ]
- >>572-573
センキュー!
- 575 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 10:42:09 ]
- ごめん、やっぱ分からん
メンバ変数の指定ってどうやるの?
- 576 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 10:49:25 ]
- >>575
std::mem_fun_refを使って渡す メンバ関数のアドレスを直接渡そうとするのはダメよ
- 577 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 10:50:14 ]
- ごめんなさい間違えました
- 578 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 10:56:45 ]
- >>575
bool func(Object t){ if (t.x = 1) return 1; else return 0; } みたいなのを作ってremove_if の第三引数に渡す
- 579 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 10:57:56 ]
- boost::bind使うと楽なんだけどな
- 580 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 10:58:42 ]
- C++0xだと思わずラムダ式を使ってしまう
C++にもboost::lambdaは使えるけど
- 581 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 11:06:52 ]
- >>578
なるほど、クラスまるごと受け取るのか やってみる
- 582 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 12:05:18 ]
- 一回の走査で配列から中間値に最も近い値をもつインデックスを見つけることってできる?
- 583 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 12:13:08 ]
- できたら、ソートのアルゴリズムに大革命起こせるな。
- 584 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 12:16:12 ]
- え?普通に出来るだろ。
- 585 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 12:21:32 ]
- >>584
やってみろよ
- 586 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 12:25:38 ]
- メモリーにインデックスと値の組を保存する。
値の平均を計算する。 平均に最もちかいインデックスを検索する。
- 587 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 12:26:10 ]
- ソートしておく
- 588 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 12:30:08 ]
- >>586
2回走査するうえに中間値でもない。
- 589 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 12:33:00 ]
- ほんとに中間値なら最大値と最小値の間の数は全部中間値ってことになるよ。
平均値の間違いかと思ったよ。 ちなみに走査は一回しかしてないよ。
- 590 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 12:37:10 ]
- >>587
ソートした時点で既にオーダーが最低NlogNになってまうだろうが O(N)にはならない
- 591 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 12:38:21 ]
- 590は必要条件と十分条件の区別が付いてないようだな・・・・
- 592 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 12:40:45 ]
- >>591
いや、区別は付いている ソートしてあるという前提条件が付いているなら それは必要条件になる
- 593 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 12:42:10 ]
- >>589
はかわいそうな子
- 594 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 12:45:08 ]
- >>589が正しい。
- 595 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 12:46:23 ]
- そうだな、>>589であってるよ。
- 596 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 12:46:41 ]
- O(N)⇒一回の走査だけど、
一回の走査⇒O(N)じゃないからね。 一回の走査したあと他に何かする場合もあるからね。
- 597 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 12:48:01 ]
- >>596
別の配列に移してソートするんですね。
- 598 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 12:48:43 ]
- >>597
その通りです。
- 599 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 12:51:18 ]
- >>596
>一回の走査⇒O(N)じゃないからね。 え?
- 600 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 12:52:39 ]
- 一回の走査をするアルゴリズムの略にきまってるだろ。
- 601 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 12:55:00 ]
- >>598
意味ねえーーー
- 602 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 13:28:59 ]
- だからソートしたらOが変わるって
- 603 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 13:57:55 ]
- listでさ
あらかじめある程度の領域確保しといて、足りなくなったら適当な所から取って使う みたいなこと出来ない? placement new+仮想メモリ みたいな
- 604 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 14:05:16 ]
- >>603
そういうアロケーターを書いてあるそのままに作ればいいと思うよ
- 605 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 14:37:17 ]
- >>603
listにはそのためにアロケーターを指定できるようになっている。 boostにすぐ使えるpoolアロケータが用意されているからそれを使うのが楽 こんな感じ list<hoge,boost::fast_pool_alocator<hoge>> a;
- 606 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 15:24:26 ]
- >>596
二回の走査でもO(N) 従って > O(N)⇒一回の走査だけど、 は間違い。
- 607 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 15:46:54 ]
- >>605
まじで! ありがとう、使ってみる
- 608 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 15:48:31 ]
- 綴りミスってた fast_pool_allocatorだな。
- 609 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 15:55:34 ]
- Boostのアロケータか
使ってみたけどあまり変わらんぞ はっきり言ってあまり期待しない方がよい 標準のアロケータで通常は十分
- 610 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 16:05:22 ]
- そもそも標準で十分だと思ってるヤツ向けの機能じゃないし。
- 611 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 16:07:08 ]
- boostって実際使って仕事してる?
規約で禁止されてるところとか多そう。
- 612 名前:デフォルトの名無しさん [2010/06/12(土) 16:09:06 ]
- 必要があれば使うけど、基本的には使わない。
- 613 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 16:29:53 ]
- >>609
意外と標準のnewは速いから大きな差はないな。差がないのはアロケータはスレッドセーフにする必要があるのが要因のようだね。 プールアロケータのメリットはたくさんのオブジェクトを作成、破棄を繰り返すときにヒープの断片化を防ぐ。これはnewの速度低下に地味に効いてくる。 あと、オブジェクトの生成破棄再生成を繰り返すときの高速化ぐらいだね
- 614 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 16:54:36 ]
- 二つ以上のクラスで同じ関数使いまわしたいんだけど何かいい方法ない?
class CA { void hoge(); } class CB { void hoge(); } void CA::CB::hoge() { } こんなイメージ(勿論上はエラー) まあ二回書けばいいんだけど、中身が数十行あるからうざったい
- 615 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 16:57:30 ]
- >>614
継承
- 616 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 17:05:11 ]
- テンプレート関数でできそうな飢餓。
- 617 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 17:11:33 ]
- 普通に
class Choge { void hoge(); } class CA:public Choge { } class CB:public Choge { } void Choge::hoge() { } これでいけるか 合ってるよね?
- 618 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 17:12:19 ]
- is-a に出来ないんだったら絶対にpublic継承は使うなよ
場合によっちゃprivate継承が適切なケースもあるが なるべくならコンポジションだ
- 619 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 17:20:35 ]
- もうちょっとわかりやすく!
- 620 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 17:21:21 ]
- >>617
そのhoge()はなんでメンバ関数なんだ? そこをよく考えて設計するべき。
- 621 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 17:33:14 ]
- >>617
あってるよ。それでいい。
- 622 名前:614 mailto:sage [2010/06/12(土) 17:55:09 ]
- ありがとうございました!
- 623 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 19:06:49 ]
- std::istringstreamからstd::getline()やらread()やらでデータを取得していって、
さぁ残りの文字列を取得しようとstr()を呼んだら最初の初期化で指定したものが出てきました。 現在の読み込み位置以降の文字列を取得するスマートな方法は無いですか?
- 624 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 19:21:49 ]
- >>623
istreambuf_iteratorでもなんでもいいけど、 istringstreamから残り全部の文字を読み出すようなコードを書くのが手っ取り早いと思う。
- 625 名前:623 mailto:sage [2010/06/12(土) 20:11:54 ]
- >>624
どうもありがとうございます。大当たりです。 std::string str( ( std::istreambuf_iterator<char>(istr) ), std::istreambuf_iterator<char>() ); で期待した動作になりました。
- 626 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 10:22:26 ]
- c++の学習のためにゲームを作っているのですが、コードを書くごとにどんどんグローバル変数が増えていって困っています。
呼び出し関係のない2つの関数で共通する変数を扱う為にグローバル変数を使う、というパターンがほとんどなのですが、 こういう場合にグローバル変数をなるべく使わないで済ます方法はないでしょうか? たとえばカーソルを動かして選択肢を選ぶ処理を作るために、 「キーボードの入力を受け取ってカーソルの位置情報を動かす」関数と「位置情報からカーソルを描画する」関数があり、 カーソルの位置情報をグローバル変数にするという感じです。(上記の関数はどちらもゲームのメインループから呼び出しています)
- 627 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 10:28:05 ]
- >>626
「カーソル位置情報を動かす」オブジェクトが「カーソルを描画する」オブジェクトを参照できるようにしておく。
- 628 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 10:33:57 ]
- >>626
オブジェクトうんぬんじゃなくて、ただの構造化プログラミング的には キーボードの入力を引数にとり、カーソルの位置情報を返す関数 位置情報を引数にとり、カーソルを描画する関数 キーボードの入力を受け取って上記二つを呼び出す関数 に分けるとか そういう風にするだけでも、関数内でそれなりに完結するようになって大分良くなるんじゃないかな
- 629 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 10:34:08 ]
- カーソル位置情報を関数に参照渡しすれば?
- 630 名前:626 mailto:sage [2010/06/13(日) 10:44:34 ]
- ご回答ありがとうございます。
実は学習のしかたが偏っていたせいか、今まで参照がどんなものなのか知りませんでした。 今参考書をあたりつつ、関数の分け方も考えています。
- 631 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 11:20:34 ]
- listがremove()使ったほうがいいって言われるのはなんで?
一個だけ削除するにもremove使ったほうがいいの?
- 632 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 12:22:43 ]
- >>631
どこに書いてあった?
- 633 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 12:23:52 ]
- 普通の関数のremoveよりメンバ関数のremove使った方がいいって話と勘違いしてるとか?
- 634 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 13:47:08 ]
- >www.geocities.jp/ky_webid/cpp/library/003.html
>erase() はイテレータを使い、指定された要素を削除します。ただし、list の場合は要素の削除には、 remove() の方を使うべきです。 >remove() は、指定した値を持つ全ての要素を削除します。remove_if() は、削除する要素の条件を指定できるものですが、この辺りは使い方が難しいので説明を省きます。
- 635 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 14:06:42 ]
- ?removeは機能も違うし置き換えにはらんだろう。しかもO(N)じゃないのか?
- 636 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 17:42:48 ]
- >>634
そこ間違いが多いから参考にしないほうがいいよ
- 637 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 01:03:17 ]
- 高橋麻奈著の『やさしいC』を読み終えファイル入出力までは理解できた
次は何すればいい?C以外の言語を学んだ方が良い?
- 638 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 06:42:49 ]
- 次は自分で考える事を勉強する、かな
- 639 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 11:46:43 ]
- >>637
書け。
- 640 名前:デフォルトの名無しさん mailto:void main() (笑) [2010/06/14(月) 13:13:06 ]
- >>637
つpc12.2ch.net/test/read.cgi/tech/1274827528/
- 641 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 13:31:03 ]
- ソースファイル落としたら.mの拡張子のファイルも入ってて良くわからないです
明日までにとりあえず動作させなければいけないんで 使い方だけ簡潔に教えていただければ助かります
- 642 名前:デフォルトの名無しさん mailto:void main() (笑) [2010/06/14(月) 13:39:29 ]
- m4 かなあ?
- 643 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 13:45:10 ]
- mファイルと言うらしいのですが、matlabは触ったことがないので全然分からないのです…
特別なコンパイラとかいるのでしょうか?
- 644 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 13:46:38 ]
- matlabが必要になります。
- 645 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 16:14:58 ]
- オーバーフローアンダーフローを検出してくれる整数演算のライブラリってなんかありますか?
- 646 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 17:54:08 ]
- .mってObjective-Cじゃないんかね
- 647 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 18:39:43 ]
- >>645
SafeInt
- 648 名前:デフォルトの名無しさん [2010/06/14(月) 23:13:49 ]
- 初期化子でポインタは初期化できないのですか?
- 649 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 23:15:07 ]
- 初期化出来るでしょ
- 650 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 23:24:35 ]
- MATLAB なら Octave が free soft。
- 651 名前:デフォルトの名無しさん [2010/06/14(月) 23:55:01 ]
- int i;
sscanf(str, "%d", &i); これでstrにiを超える桁数の数が入ってたら 適当に丸めてくれるの? それとも桁あふれになるの?
- 652 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 19:29:53 ]
- struct Rec {
int type; /* 0なら四角、1なら丸*/ int yoko; /* 幅*/ int tate; /* 高さ*/ }; struct Cir { int type; /* 0なら四角、1なら丸*/ int r; /* 半径*/ }; struct Zukei { int type; /* 0なら四角、1なら丸*/ }; void RecCreate(void* hoge){ (Rec*)hoge->type=0; (Rec*)hoge->yoko=10; (Rec*)hoge->tate=5; } void CirCreate(void* hoge){ (Rec*)hoge->type=0; (Rec*)hoge->r=7; }
|

|