1 名前:デフォルトの名無しさん [2009/07/19(日) 22:32:32 ] スレを勃てるまでもない低俗な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/
798 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 17:57:26 ] どの版がいいの
799 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 18:09:13 ] ええと、一番普遍的な版がいいのですが。 そんな最先端のプログラミング技法には深入りするつもりもないので。
800 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 18:27:02 ] テンプラメタプログラミングなんてやってなんか得したことあった?
801 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 18:41:44 ] 知的好奇心が満たされるw
802 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 18:49:15 ] >>800 似たような重複コードを書かなくてすむ用になる。
803 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 19:05:32 ] (プラシーボで)実行速度が速くなった
804 名前:デフォルトの名無しさん [2009/09/04(金) 19:48:32 ] C++でスレッドをやってみたら思いのほか簡単にできた。 それでも複数の値渡しはいちいち構造体を定義しないといけないなんてどうしてこんな回りくどいやり方でないといけないのか もっとすっきりしたやり方考えろよ
805 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 19:50:41 ] 自分で好きなように作ればいいじゃないか?
806 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 21:25:36 ] >>804 スレッド開始時の関数に引数を渡すときのことを言っているなら、boost::threadはどう? bindと組み合わせれば何引数でもいけるよ。 もちろん、それ以外のAPIでもbind使えるようにできるけど。
807 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 23:34:38 ] テンプレートメタプログラミングは定数のコレクションを生成するとき便利だよ。 その数が万単位になると劇的に速度が変わる。
808 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 23:37:14 ] テンプレートメタプログラミングは 天才がライブラリを作るときに便利だと思うよ。 凡人が挑戦すると死亡するだけ。
809 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 05:58:07 ] ちょっとやってみたけどコードがぐちょんぐちょんになった
810 名前:デフォルトの名無しさん [2009/09/05(土) 15:50:47 ] C言語における、ダブルクォートで囲んだ文字列と、 シングルクォートで囲んだ文字列は、どういう違いがあるのでしょうか? 明確に違って、ダブルクォートで囲んだほうは文字列の最後に何か追加されたような気がする、まではおぼえているのですが… どなたかご教授いただけませんでしょうか
811 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 15:52:34 ] >>810 シングルクォートで囲んだ文字列 の意味が分からん。 そんなもの存在しない。
812 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 15:56:35 ] >>811 ごめんなさい 文字列という言葉ではおかしかったかもしれません っていうか、シングルクォートで囲んだものは文字列ではなくて、文字、でしたっけ "aaa" == 'aaa' ではないことは覚えているのですが あえて "aaa"をあえてシングルクォートで囲んで表現したらどう表記するのでしょう、といった質問です
813 名前:811 mailto:sage [2009/09/05(土) 15:58:56 ] >>812 "aaa" -> 言語仕様として存在する 'aaa' -> 言語仕様として存在しない というこれ以上ないほどの違いがあるぞ。
814 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 15:59:51 ] つーか、どんなC使ってるのか知らんが、 'aaa' はCでは出来ないよ。
815 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 15:59:52 ] { 'a', 'a', 'a', '\0' } こんな感じか?
816 名前:811 mailto:sage [2009/09/05(土) 16:01:13 ] それとも "aaa" -> C/C++ではcharないしconst char型の配列型で、その数は4である。(終端にヌル文字が付く。) "a" -> C/C++ではcharないしconst char型の配列型で、その数は2である。(終端にヌル文字が付く。) 'a' -> const char型の文字型変数。 であることを言いたいのか?
817 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 16:01:55 ] char *p = malloc(3); p[0] = p[1] = p[2] = 'a';
818 名前:810 mailto:sage [2009/09/05(土) 16:02:24 ] 過去ログを読み直していたらこんなコードにぶつかったので質問した次第です 文字とか文字列とかそういう問題で捉えたのがいけなかったんですかね 624 :デフォルトの名無しさん[sage]:2008/01/30(水) 00:58:29 #include <iostream> int main(void) { const int max_str = 50 + 1; char str1[max_str], str2[max_str]; std::cout << "数値a入力>"; std::cin >> str1; std::cout << "数値b入力>"; std::cin >> str2; int len1, len2; for( len1 = 0; len1 < max_str; ++len1 ){ if( str1[len1] == '\0' ) break; } for( len2 = 0; len2 < max_str; ++len2 ){ if( str2[len2] == '\0' ) break; }
819 名前:810 mailto:sage [2009/09/05(土) 16:05:44 ] >>816 ヌル文字! と 文字数! それです、私が思い出したかったと思われるキーワードはそれです! あとは自力で調べられそうです ありがとうございましたー
820 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 16:07:04 ] たぶんシングルクォートの文字列は char foo[] = {'f', 'o', 'o', '\0'}; /* '\0'は'\000'または'\x00'などと同じnull character(JISではNULと表記される)を表す */ だと思う、シングルクォートは文字定数を表記するときによく使われる、そのほかの目的でも使うことはある ダブルクォートの例は char bar[] = "bar"; /* {"baz"};とかくこともできる */ char *baz = "baz"; ダブルクォートで囲んだ場合、文字列リテラル(文字列定数)と呼ばれる この場合、コンパイラは気を利かせてnull characterを付けてくれる したがって、sizeof(bar)は4となる しかしながら char hog[3] = "hog"; の場合、コンパイラは気を利かせてnull characterを追加しない、つまり char hog[] = {'h', 'o', 'g'}; /* char hog[3] でもよい*/ とした場合と同じ結果となる と長々書いているうちに解決していたでござるの巻
821 名前:810 mailto:sage [2009/09/05(土) 16:08:38 ] >>820 ありがとうありがとう 大感謝です
822 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 16:22:47 ] どうでもいいけど、 結局何を疑問に思っていてどう解決したのかさっぱりわからん。
823 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 16:30:04 ] 要はかなりのうろ覚えだからどう検索すりゃいいのかも分からなかったんだろ。
824 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 17:20:19 ] >>820 char *baz の sizeof は勘違いしたらいかんよ。
825 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 17:28:41 ] >824 例が悪かったか ほとんどの環境ではsizeof(char *)も4だったね
826 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 17:33:44 ] 記号関係で検索しようと思ったら確かに詰むわな。どうにかならんかな。
827 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 17:46:40 ] >>825 例えが悪いっていうか、同列に並べたら混同しちゃうだろw char bar[] = "bar"; とchar *baz = "baz"; じゃ意味が全然違うのに。
828 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 17:49:24 ] >>813-814 いや、'aaa'のように中に文字が複数ある場合、その値は処理系定義。 仕様にないとかできないとかはちょっと言い過ぎだと思う。 まあ、実際問題使わないからそういう認識でも構わないと俺も思うけどさ。
829 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 17:52:12 ] シングルクォートの中には文字が一つのはずと理解していたのに '\0'をみて、まるで2つの文字からなる文字列が入っていると勘違いしたんじゃないのだろうか。
830 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 17:56:07 ] VC++は'aa'と二つはできたな。 三つ以上は試したことがない。
831 名前:デフォルトの名無しさん [2009/09/05(土) 17:59:36 ] >>828 マジックナンバー表すのによく使われる。3文字は見たこと無いけど。
832 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 18:01:31 ] >>831 ちょっとマジックナンバーについて簡単に説明してもらえますか?
833 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 18:06:18 ] VC++ならchar c = '??/n';とかできるな
834 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 19:57:38 ] 問題を整理しよう。 ・>833はトライグラフ。 ・シングルクォートで囲える文字数は(トライグラフやエスケープ文字を処理した後の)4文字程度(環境依存)。 ・その場合のエンディアンも環境依存。 ということで宜しいかと。 で、例えばint foo = 'abcd'としてprintf("%d\n", foo)としたときの出力が、所謂マジックナンバー。
835 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 20:06:54 ] 多文字リテラルはC90でもあるだろうに
836 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 21:49:37 ] なんだかんだいって、もう本人は解決しちゃったんだろうぜ。
837 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 22:10:10 ] >>834 もう一度聞くけど、マジックナンバーについて簡単に説明してもらえますか? どうも一般的に使われているものと異なるように思うので。
838 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 22:25:51 ] やだね、こういう言いたいことを裏に覗かせつつ質問する馬鹿って。 >>837 マジックナンバーと呼ばれるものには私の知る限り3種類ある。 ・野球のマジックナンバー。詳細は知らん。 ・コード中に埋め込まれた由来不明の値。何故その数字か判らんが兎に角動くと言う皮肉を込めて、マジックナンバーと呼ぶ。 ・主にバイナリファイルの先頭に置いて、ファイルの種別を明示するために使われるバイト列。或いはそれを数値化したもの。 Unix使いなら/usr/share/file/magic辺りにあるから覗いてみるといい。
839 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 22:29:20 ] 馬鹿とまで言われるとは思っていませんでした。 > ・コード中に埋め込まれた由来不明の値。何故その数字か判らんが兎に角動くと言う皮肉を込めて、マジックナンバーと呼ぶ。 僕もこれだと思っていたのですが、>>834 さんは出力がマジックナンバーといっているので、 いったいどういう事だろうかと思ったんです。
840 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 22:33:47 ] 質問しただけで荒れるってジャスティスののか
841 名前:デフォルトの名無しさん [2009/09/05(土) 22:34:25 ] >>837 en.wikipedia.org/wiki/Magic_number_ (programming) まぁファイルフォーマットとかを直接触らない人には関係ないかもね。
842 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 22:40:05 ] >>841 ・an unnamed or ill-documented numerical constant value; これを言いたそうな気配はするんだが、なんか違った意味で使ってるよな そりゃ質問もされるだろうよ
843 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 22:52:03 ] 元素か
844 名前:デフォルトの名無しさん [2009/09/05(土) 23:05:49 ] Linuxでは出力もマジックナンバーと呼ぶんだけどな。 ドザは頭が悪くて困る。
845 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 23:09:48 ] C言語でプログラムを作成してる際にわからないことがあったので質問させてください 3次元座標(-0,5、0,5、0)を (sin(t)、t、cos(t)) みたいな形で現したいと思ってるんですがどのように現すのか教えてください よろしくお願いします
846 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 23:16:03 ] どうも使い方の間違いを肯定したくなくてすり替えばかりしているように見える よくあることだけどな
847 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 23:17:38 ] >>845 sin(0.5)は-0.5ではないし、cos(0.5)も0ではないが・・・ どういう意味なので?
848 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 23:19:00 ] >>845 double point_3d[3]; point_3d[0] = sin(t); point_3d[1] = t; point_3d[2] = cos(t); とか?
849 名前:845 mailto:sage [2009/09/05(土) 23:25:39 ] DrawLine関数で (-0,5、0、0)から(-0,5、0,5、0)までの直線をひきたいんですが、その後にその線を変数θを使用して回転させたいと思ってるのでsincosで座標を現したいと思ったのですが 可能でしょうか?
850 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 23:35:32 ] Linuxでも >例えばint foo = 'abcd'としてprintf("%d\n", foo)としたときの出力が、所謂マジックナンバー。 なんていったりはしないよ。 もし言うというなら、Linux板にコピペしてきてそのスレで1000人の同意があったら認める^^
851 名前:デフォルトの名無しさん [2009/09/05(土) 23:43:12 ] >>849 直交座標系と極座標系の変換を知りたいの? もし単に回転させたいならアフィン変換すればいいだけだけど。
852 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 23:48:39 ] >>851 よくわかりません x座標が-0,5なので-cos(60)でいいのかと思ってやってみてもうまくいかなくて… 3次元での座標を表すときのsinθcosθというのは単に数値を入れるのとは全く別物なんでしょうか? (0,5、1、0)の座標をsincosの座標で現したいと思ったときに(cos(60)、1、sin(0))と表してもまったく別の位置に表示されるんですけど
853 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 23:51:36 ] sin,cosの引数はラジアン。
854 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 23:52:08 ] sin、cosの引数は度じゃなくラジアンだから *3.14/180 しないとだめ
855 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 23:59:56 ] ありがとうございます わかりました
856 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 00:29:07 ] こないだからC++以前に数学がわかってないやつが多いな
857 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 00:34:46 ] というか、本にせよリファレンスにせよ、どっかで説明読めば 引数がラジアンだってことくらい書いてあるはず 理論に基づいて組み上げるんじゃなく カンでプログラミングしてるんじゃないか
858 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 00:52:37 ] 普段からsmartポインタって乱用してる? 複雑な管理が必要になる部分以外は余分なコストがかかるから使わないほうがいいのかなって思ったんだけど
859 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 01:02:17 ] RAIIとかPimplイディオムを実現するには必要不可欠だろうが
860 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 01:05:49 ] RAIIとpimplってほんとによく出てくるなぁ。 RAIIはさておき、pimplは目の当たりにしたことがないから実感がわかない
861 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 01:06:50 ] 使わなかったところで、それと同様のコードを自分で書く羽目になるだけ、自分へコストが跳ね返ってくる。 まあ、最も単純かつ実行時の負荷が低コストでしかも標準のauto_ptrが残念な出来なのは仕方がない。 unique_ptrに期待しましょう。
862 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 01:07:24 ] Exceptional C++を読みなせえ
863 名前:845 mailto:sage [2009/09/06(日) 01:51:30 ] すいません さっき教えていただいた通りにラジアンで線を引けたのですが、for文で線を何本も引いて円を書こうと思い (sin(θ×t)、1、cos(0)) とし、tの値を少しずつ大きくしていきました。 そうするとx軸に沿って円がかけるはずだとおもうのですが45度から130度くらいまでの扇形みたいな形しかできません まったく理由がわかりません どなたかアドバイスをください お願いします
864 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 01:59:23 ] 自己解決しました
865 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 02:01:44 ] 質問の文章考えてるヒマがあったらトライ&エラーやってた方が有意義じゃないか?
866 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 08:28:07 ] >>858 乱用してるよ!! スマポのメリット>>>>>>>>>>>>ほんのわずかなコスト
867 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 09:05:17 ] >>858 スマポの評価はboostのスマポ、特にshared_ptrを使ってからしたほうがいい。 マジお勧め。
868 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 11:04:43 ] 確かにboostのshared_ptrはその利便性からいって鬼。 これ以上ないほどの。
869 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 11:12:58 ] FFTで求めた実部データと虚部データから振幅スペクトルを求めるにはどうしたらいいですか? パワースペクトルだと大きすぎるのでさけたいです
870 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 11:19:21 ] >>869 帰れ
871 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 12:08:14 ] >>869 mag=hypot(real,image)
872 名前:デフォルトの名無しさん [2009/09/06(日) 12:19:02 ] >>870 だが断る
873 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 14:29:57 ] グローバル変数を使う時は、関数プロトタイプ宣言より前じゃないとダメなんでしょうか?
874 名前:873 mailto:sage [2009/09/06(日) 14:30:42 ] 日本語おかしかったです、すいません グローバル変数を使う時は、関数プロトタイプ宣言より前にグローバル変数の宣言をしないとダメなんでしょうか?
875 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 14:32:20 ] グローバル変数の宣言と関数プロトタイプは何の関係もなくね?
876 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 14:33:31 ] そうでしたか、ありがとうございます
877 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 15:45:55 ] かかわるプロジェクトでは必ず三項演算子は目の敵になってるんですがgotoみたいな存在なんですか?
878 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 15:48:40 ] そんなことないよ。 記述の仕方を統一したかっただけじゃない?
879 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 15:51:37 ] 行数稼げないからって理由だったら嫌だなw
880 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 15:54:15 ] >>877 なんでだろね。 どうも三項演算子を理解できないレベルに合わせろってことらしいんだが、まじかね。
881 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 16:26:07 ] 理解なんて数秒で済むと思うんだけど 古いコンパイラで条件演算子にバグがあって禁止されていた事はあった
882 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 16:58:04 ] >>880 構造化プログラミングから逸脱する場合には不可ってことだと 思うんだけど、本質が理解されないまま全部NGになってること はよくあるね。 参考演算子そのものの理解は当然だれでもできる。
883 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 17:01:43 ] ゴメン、「三項」ね。
884 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 17:02:09 ] 三項演算子は()を下手に省略するとアレ?って挙動になってバグ取り高い壁になる
885 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 17:10:05 ] >>882 構造化プログラミング? 逸脱する場合としない場合kwsk。 逸脱するというのであればすべて逸脱では。
886 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 17:14:19 ] どんな用途か知らんが、三項演算子は特に問題ないと思うがw
887 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 17:17:26 ] >>882 三項演算子どころか、ポインタもろくに理解せずに仕事してるやつ多数。 それが現実。
888 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 17:23:23 ] int x = 0; int y = 0; bool b = なにかを代入; //逸脱しないとき if (b) { x = 123; } else { x = 456; } これは、x = b ? 123 : 456; とできるけど、bの意味する内容とか局所性によってはまぁ許容かな…。 //逸脱するとき if (b) { x = 123; y = 234; } else { x = 456; y = 789; } こっちは x = b ? 123 : 456; y = b ? 234 : 789; で書けるけど、b の真偽値に応じた代入処理のセットだと言うことが分からない。 elseifの節が後で現れるともう保守性までNG。>>885 の指摘通り、逸脱するかと 言えば全部逸脱だと思う。ちなみにオレは三項演算子は、ほぼNGにしたい派。
889 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 17:27:37 ] >>888 そもそもそんなコード書かないだろというか例が悪すぎるw
890 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 17:32:20 ] 何とも都合のいい主観判断をするものだ
891 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 17:33:21 ] >>888 なんでNGかkwsk。 2つ目みたいな書き方はめったにしないと思うが、その最初の例でNGにしたい理由は?
892 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 17:36:16 ] class HogeString { private: char* str; public: bool isEmpty()const{ return (name == NULL) ? true : false; } // これをifで書いたら bool isEmpty()const{ if(name == NULL){ return true; } return false; } }; ifだと冗長的な感じがする。こういうのは三項演算子でも良いと思うんだけどな。
893 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 17:38:30 ] return name == NULL;
894 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 17:41:46 ] ですよねぇ〜。書いた後で気づいたわ。
895 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 17:43:47 ] ワロタ
896 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 18:54:01 ] string, int, int, int の4つのデータをまとめて扱いたいのですが、 mapだと2つ以上の値のセットを扱うとエラーが出てしまいました。 こういう2つ以上の値のセットを扱うためのコンテナってありますか?
897 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 18:56:27 ] keyとなるものだけを残して他の3つは構造体かクラスにすれば良いじゃん。
898 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 20:36:57 ] namespaceってプロジェクトにひとつぐらいで十分?もっと細かく分けたほうが良いかな
899 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 20:37:19 ] CからC++に来たけど&が参照だったりアドレスだったりして気が狂いそうです
900 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 20:39:40 ] >>898 好き好き。 >>899 狂ってろ。
901 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 20:52:05 ] *がポインタ宣言だったり参照はがしだったり掛け算だったりする Cから来たなら大丈夫よ
902 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 21:07:11 ] >>899 使い方が全然違うじゃん。 ・・・それぐらい分からないと他言語でも無理だろ。
903 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 21:08:13 ] >>898 俺は2階層ぐらいだけど。 一番大きいプロジェクトの根幹のnamespaceと、 namespace implementationとか。
904 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 21:37:13 ] C++のSTLに含まれているstringのメンバ関数に、 find_first_not_ofというものがありますが、 この関数を find_first_not_of("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789") という風に使って、アルファベットと数字とアンダーバー以外の文字数が 最初に出現する文字数を調べようとしたのですが、うまく働いてくれません。 (;や+などを感知してくれません) これはなぜでしょうか?
905 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 21:46:43 ] >>904 とりあえずソースかけ。 話はそれから。
906 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 21:49:20 ] >>904 codepad ttp://codepad.org/ ここで。
907 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 21:53:17 ] >アルファベットと数字とアンダーバー以外の文字数が最初に出現する文字数 文字数が出現する文字数ってなんだ?
908 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 22:12:22 ] ちょっとぐらい間違ってる日本語を補正する頭もないのかお前は
909 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 22:25:16 ] >>908 2か所間違ってるけどな。 まあなんにせよ>>906 にあるところに貼ってくれるのをまとう。
910 名前:デフォルトの名無しさん [2009/09/07(月) 19:31:24 ] CあるいはC++でSQLサーバに接続するにはどうしたらいいのでしょうか? 検索しても.NETFrameworkを使ったやり方しかなく困っています どなたかご教授お願いします
911 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 19:32:59 ] sage忘れすまそ('A`)
912 名前:デフォルトの名無しさん [2009/09/07(月) 19:48:12 ] 質問です。 32ビットのWindowsの場合malloc()で確保出来るメモリサイズは2Gほどだったと思いますが、 これは、1プロセスあたりの制限ですか? 1つのプログラムで、malloc()を2カ所で呼び出すと、それぞれの箇所で2G確保できるのでしょうか?
913 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 19:54:23 ] >>910 ODBCでよければ、 ODBC C++とか、ODBC VC++で検索。
914 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 20:11:32 ] >>912 プロセスごとに2GB
915 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 20:40:05 ] >>912 どんだけ激しいメモリ消費なんだw
916 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 20:44:44 ] >>914 THX 困ったなぁ・・・。ディスクアクセスしながらちびちびやるか。 >>915 48Gほどのテキストデータを木構造に展開して色々やらないといけないのよ。 う〜む、もう少しダイナミックにオンメモリでやりたかった・・・
917 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 20:45:33 ] >>916 You, 64ビットに移行しちゃいなYO!
918 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 20:48:57 ] BDが真っ青
919 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 20:53:13 ] >>916 64bitしかあるまいw どのみちそんなにメモリ詰めないだろw
920 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 20:59:40 ] サーバ用でもない限りマザーボードの上限に引っかかるな
921 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 21:25:21 ] >>916 アルゴリズムを検討してメモリの消費量を抑えるのが手っ取り早い。そのほうがいろいろ高速化できる。 それでも解決しないなら最後の手段として64bitOSと64bitコンパイラの採用を考える事になると思うよ。 どんなにメモリがあってもアルゴリズムを改良しないと演算時間がとてつもなくかかりそうな予感。
922 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 21:43:58 ] 48GBのテキストデータって何ぞ? 漏れのおかずフォルダでもそんなにねーぞ。
923 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 21:59:47 ] >>922 そうか、本当に無いのか検証の必要があるな。よし、どっかにアップロードしろ。
924 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 22:00:23 ] ゲーム作っててつまずいたので質問します struct Test{ TEST1 b[2]; 省略 } std::list< Test > lstTest; こうやって使ってるんですが、このTEST1の配列を動的に確保することってできますか? リストの中にリストとかしてみたんですが、同じような動きにならなくて困ってます。(ポインタの問題?
925 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 22:10:58 ] リストの中にリスト、大丈夫なはずだが
926 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 22:11:14 ] 64Gって、研究かな? 今は、64Gのテキストデータなんてのを普通に使うようになったのか・・ 恐ろしい時代だ・・・。
927 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 22:12:01 ] >>924 struct Test { std::vector<TEST1> b; }; でいいと思う。 あと解説サイトを見てlistとvectorの使い分けを覚えよう。
928 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 22:14:01 ] list -> 知的でおしゃれな感じを出したいときに使う vector -> スマートなやり手プログラマを演出したいときにはコレ deque -> 研究者気取りのあなたに
929 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 23:22:48 ] 48GBとかのデータを扱うなら、クラスタ上でMPIとか使って並列プログラミングってのが筋かなあ
930 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 23:54:41 ] buf[10] = 0xff buf[11] = 0x32 ... int kansu(u_1 *buf){` i = 10; printf("test buf[i] %d", i, buf[i]) このようなプログラムで、引数で配列を渡したとき printfでbuf[10]等の中身を見ようとしたとき、表示がおかしな値になるのですが どうしてでしょうか? %d, %s, %x 等もおかしかったのですが
931 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 23:55:52 ] "test buf[%d] %d" では?
932 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 00:14:45 ] >>931 すみません、ここに書き方間違ってました。 実際のプログラムではそうかいてます。申し訳ありません。 そう書いて、表示がおかしかたtのです
933 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 00:23:39 ] %x
934 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 00:34:53 ] ソースを張るなり上げるなりしてください
935 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 00:40:31 ] u_1が何なのかわからないとなぁ typedef unsigned char u_1; だったらprintf()はスタック破壊してるだろうし typedef unsigned long double u_1; だったら表示がおかしいとかの次元じゃないし
936 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 00:47:23 ] >>935 u_1は、unsignede char です スタック?どの辺がおかしいのでしょうか?
937 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 01:06:55 ] >>930 断片だけ書かれてもわからん。 おかしな値が再現するソースを見せてくれ。
938 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 01:11:54 ] >>937 すみません、今手元にないのでそのままお見せできないんですが 下のような感じです。とはいってもさっきと一緒で分かりにくいでしょうが・・ buf[50] ; buf[1] = 0; buf[2] =5 等代入 void kansu(buf); void kansu(u_1 *buf){` i = 10; printf("test buf[%d] %d", i, buf[i]) printf以降でbuf[i]の中身を別のバッファにコピーしてるのですが、 それを確認しようと思い、printfで確認しようとしたところ まずその確認以前にうまく表示できなかったもので・・・
939 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 01:18:12 ] そもそも、bufの型はなんなんだ? メモリは確保されてるのか?
940 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 01:18:36 ] >>939 malloc関数でかくほしております
941 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 01:19:31 ] >>939 bufは、unsigned char です
942 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 01:23:51 ] mallocで確保するんならbuf[50]は変な気がするけどな。
943 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 01:40:27 ] >>941 > i = 10; > printf("test buf[%d] %d", i, buf[i]) 別に表示がおかしくなることはないと思うがな。 この部分の、期待している表示と実際の表示を書いてくれ。
944 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 07:33:43 ] >>943 期待しているのは、buf[i]に代入した値が表示したいのですが、 全く関係ない数字が表示されてしまいます。4桁とか
945 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 07:47:07 ] 部分だけじゃ、どこがおかしいかわかんねえよw
946 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 08:04:01 ] いくら間違っても4桁になるのはありえなさそうなんだが。。
947 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 08:31:55 ] >>938 まだコードが断片すぎる。コンパイルできるぐらいのまとまったものが ないと他の人には問題は発見できないよ。
948 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 09:21:13 ] printf("%d", (unsigned char) 0xff)が何を表示されるのかって問題に帰結するのかな? それだったら255だ。これがもしprintf("%d", (char) 0xff)ならば、-1かもしれないが。 それ以外の結果になるというのであれば、他の何かがおかしいのだろうよ。
949 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 18:03:25 ] fopen()でファイルを開くコストって結構かかる物なのでしょうか? 今実装してるプログラム、メモリ的な制限から探索範囲を狭めるために、ファイルを結構細分化するつもりなんですが・・・
950 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 18:15:34 ] >>949 ベンチマーク取ればいいが、 どんだけ多くても数百個だろ?一瞬。 むしろそれを超えると、OSの最大ディスクリプタ数にひっかかる。
951 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 18:16:48 ] >>949 まあストレージの種類によるんじゃないかな。ハードディスク上のファイルだと、 ファイルが分散しててディスクヘッドが頻繁に移動するのはハード的にきつい
952 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 18:30:14 ] >>949 48Gテキストの人か
953 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 18:59:52 ] 頻繁にファイル開いて読み込んでってやってたらかなり遅くなるな。 一回読み込んだ内容はメモリ上にキャッシュして、キャッシュあふれたら 使用頻度低いほうから解放して…みたいな戦略は考えといたほうがいいと思うね。
954 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 20:04:30 ] >>949 ファイルのオープンクローズよりも、開いたファイルでシークしたほうがはるかに軽い。 ファイルの一部分をメモリにマップする手法としてメモリマップドファイルがあるよ。 ディスクキャッシュをメモリにマップするんで大きなデーターを効率的にアクセスできる。
955 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 20:08:25 ] Hoge::operator[](A,B,C); hoge[a][b][c]; みたいなことができればいいのになんでできないんだよ
956 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 20:25:33 ] >>955 それでオーバーロードを許したらambiguous多発で大変じゃないか
957 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 20:44:33 ] まあ仕方ないからhoge[make_tuple(a,b,c)]; とかやってるんだけどもっとクールアンドホットなハック的テクはないわけ?
958 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 20:46:37 ] >>957 プロキシーオブジェクト
959 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 20:53:26 ] >>955 ちょっと工夫すればできるから。
960 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 21:02:07 ] やろうと思えばそりゃできるけどさ コストとか範囲チェキとか考えると[][][]・・・でできるいいほうほうが浮かばないんだよ
961 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 21:02:39 ] >>955 ,958 ちとめんどいができるじゃんと思ったら あれプロキシーオブジェクトっていうのか 初めて知った。さんくすw
962 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 21:02:51 ] >>957 operator()じゃ駄目なのか?
963 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 21:03:31 ] >>962 見た目がまずダサいのでアウト
964 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 21:07:57 ] make_tupleにダサイって言われると地味に凹むな
965 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 11:35:00 ] 同意
966 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 23:13:55 ] ある本の息抜き用の演習問題に、「++CではなくC++と名付けられた理由を考えよ」ってのがあったのですが 正解は何なのでしょうか?
967 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 23:19:55 ] Cの互換性を保つため
968 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 23:26:45 ] あ、なるほど。前置インクリメントだともはやCではないものを意味するってことですね。
969 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 23:49:38 ] まあ、今適当に考えただけなんだけどねw トンチ的な問題だろうから、たぶんそんなに的はずれでもないと思う
970 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 04:17:25 ] へんなコストがかかるところ
971 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 11:40:42 ] >>970 深いな。
972 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 13:58:48 ] //beginコード1 for(int i=0; i<5; i++){ // コード } int i; for(i=0; i<5; i++){ // コード } C++で上か下、どちらのループの方が良い(皆さん使われている)のでしょうか?
973 名前:972 mailto:sage [2009/09/10(木) 13:59:57 ] 1行目の //beginコード1 は間違いです、すみません
974 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 14:03:33 ] i の中身がループの外でも意味を持つなら後者、持たないなら前者で十分。 どっちが良いとか悪いとかじゃなく。
975 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 14:35:18 ] >>974 なるほど、ありがとうございます。
976 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 15:45:51 ] >>966 C++ : Cを評価してからインクリメントする ++C : Cをインクリメントしてから評価する C++ は、まずCを評価してから機能を加えたんだよ。
977 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 17:13:48 ] baseクラスがいくつかの仮想メンバ関数を持っています(たとえば、void f1(), void f2()) f1の実装は2パターン、f2の実装も2パターンあります subクラス側で外部ファイルを参照してそのデータからf1,f2の組み合わせを決定したいです この場合4種類のsubクラスを作るほかやり方はありますか?
978 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 17:16:35 ] 仮想関数f1だけのクラスと仮想関数f2だけのクラスをそれぞれ作って2パターンずつ実装し、 subのf1, f2は単にそっちを呼び出す
979 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 17:17:02 ] >>977 f1 なり f2 の中で条件分岐すればできる
980 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 17:27:46 ] >>978 つまりこういうことでしょうか? class hoge { private: only_f1_impl *f1_; only_f2_impl *f2_; public: void f1(){f1_->f1();} void f2(){f2_->f2();} }; メンバ変数へのアクセスで一手間かかりそうですが、よさそうなので使わせてもらいます ありがとうございました >>979 条件分岐は後で大変そうなのでちょっと・・・
981 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 19:56:01 ] ##ってどういう意味か教えてください
982 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 20:01:49 ] そのトークンが現れる位置によって意味が異なるので一概に答えることはできない
983 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 20:38:19 ] インスタンスがshared_ptr(かweak_ptr)の形でしか生成できなくすることってできる?
984 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 21:07:22 ] >>983 コンストラクタをプライベートにして、ファクトリメソッドを書くとか。