- 1 名前:デフォルトの名無しさん [2006/08/22(火) 09:21:31 ]
- はきだめのスレへようこそ
ここは、C/C++に挫折し、それにもかかわらず、C/C++やらなければならない者達がたむろするスレです。 なお、質問する人は回答はあまり期待しないでください。 前スレ:はきだめC/C++下級者の質問箱 pc8.2ch.net/test/read.cgi/tech/1124256027/
- 369 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 19:53:08 ]
- >>368 何の話だ?
- 370 名前:デフォルトの名無しさん [2007/01/06(土) 18:19:48 ]
- boolは1バイト消費するのですか?
- 371 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 19:48:59 ]
- かもしれないし4バイトかもしれない
- 372 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 08:06:00 ]
- >>370
STLなら1ビット
- 373 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 12:43:05 ]
- >372
はぁ?
- 374 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 15:18:41 ]
- >>373
std::vector<bool>のことを言っているんだろう
- 375 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 16:46:38 ]
- vector<bool> は領域節約のため特殊化する必要があるが
それは 1 bit を保証するものではない。
- 376 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 17:15:33 ]
- >>374-375
それって valarray<bool> のことじゃなかったっけ?
- 377 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 00:18:10 ]
- >>376
23.2.5 Class vector<bool> [lib.vector.bool] 1 To optimize space allocation, a specialization of vector for bool elements is provided
- 378 名前:デフォルトの名無しさん [2007/01/12(金) 17:01:28 ]
- 引数を受け取るコンストラクタがある関数オブジェクトを
渡す方法を教えてください。 struct Func { int data; func(int v) : data(v) {} int operator() (int i) { return v*i; } } template<typename F> int Test(F f, int i) { return f(i); } int main() { Func func(1); return Test(func, 2); } Test<F>(Func) に一致するものが見つからないと怒られます。 struct Func { int operator() (int i) { return i; } } こうすると通ります。なぜでしょうか?
- 379 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 17:02:51 ]
- func(int v) : data(v) {}のところはFunc(〜のtypoです
- 380 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 17:28:07 ]
- struct Func
{ int data; Func(int v) : data(v) {} int operator() (int i) { return data*i; } } まだ間違ってました。
- 381 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 17:33:04 ]
- >>378-380
通るじゃないか。コンパイラ何使ってんの?
- 382 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 17:36:23 ]
- うあれ?TurboC++です。もう一度やってみます
- 383 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 17:42:23 ]
- gcc3.4.2なら通るぞ。
- 384 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 17:42:26 ]
- すみません、再構築したら通りました・・・・
- 385 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 17:50:21 ]
- makefileをちゃんと書いてないんじゃないの?
ヘッダとの依存性とかを
- 386 名前:デフォルトの名無しさん mailto:sage [2007/01/15(月) 22:00:14 ]
- C++で
vector<counter> v(dic.begin(), dic.end()); sort(v.begin(), v.end(), cmp); for (vector<counter>::iterator i = v.begin(); i != v.end(); ++i) cout << i->first << ":" << i->second << endl; return 0; の部分の機能がわからないのでどなたか解説してください
- 387 名前:デフォルトの名無しさん mailto:sage [2007/01/15(月) 22:50:34 ]
- www005.upp.so-net.ne.jp/episteme/html/stlprog/
- 388 名前:デフォルトの名無しさん mailto:sage [2007/01/15(月) 22:52:01 ]
- dicというコンテナからcounter型のvectorを生成し、
それをcmpを比較関数としてソート ソート結果を表示
- 389 名前:デフォルトの名無しさん [2007/03/02(金) 11:50:48 ]
- 1.0-1.0が0にならない理由を教えてくだすれ
- 390 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 12:02:14 ]
- 0になるだろ
- 391 名前:デフォルトの名無しさん [2007/03/03(土) 00:45:07 ]
- ポインタで
char *p; p = "ABC"; とした時の pは"ABC"を表すのですか? *pは何を表すのですか?
- 392 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 02:01:01 ]
- pは"ABC"の先頭アドレスをさす
*pは'A'を表す
- 393 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 03:11:04 ]
- >>392
ありがとうございます!
- 394 名前:デフォルトの名無しさん [2007/03/04(日) 18:58:20 ]
- C言語系のサイトでよく見るんですが
kitty on your lap とは何なのでしょうか? hello worldみたいなもの?
- 395 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 19:08:10 ]
- ぐぐっても…一番上には出てこないのか。
何番目かに引っかかる「ひざの上の同居人」ってゲームに そういうサブタイトルがついてたんだよ。 今では陳腐に見えるけど、当時はまだまだ新鮮なコンセプトで、 一部の猫耳好きから圧倒的な支持を受けた。
- 396 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 19:09:23 ]
- よく見るって…そんなの使ってるの一箇所だけだろ
- 397 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 19:12:02 ]
- さくら、ケロちゃんと同じくらいは使われてるんじゃね?
- 398 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 19:15:57 ]
- あのヲタクチックなサンプルコードさえなければ
あそこは最高のサイトだと思うんだがな…
- 399 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 19:20:44 ]
- 一昔前はプログラマ言ったらそんな奴らばかりだっただろ
- 400 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 19:37:35 ]
- 今もだけどな
- 401 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 23:04:36 ]
- pc11.2ch.net/test/read.cgi/prog/1166284393/842
に誤爆してしまったのでこちらに再投下します。 std::string変数を空にするのに、 var=std::string(""); とか馬鹿馬鹿しいことやってるんですが、普通はどうするんでしょうか。
- 402 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 23:13:33 ]
- >>401
var.clear();
- 403 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 23:22:07 ]
- あっあありがとうございます。
- 404 名前:デフォルトの名無しさん [2007/04/13(金) 09:12:41 ]
- nullと0の違いを教えてください
- 405 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 09:21:57 ]
- 0はただのゼロだが、nullは「意味を持たない」という文脈で使われ、
その実体は必ずしもゼロではない 例えば大抵の処理系では int *p=null; と int *q=0; は等価だが、 場合によっては q はメモリの「ゼロ番地」を指しており、 実際に読み取ることができる、ということもありうる
- 406 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 09:33:16 ]
- とすると、大抵の処理系では、0番地とヌルポはどのようにして見分けているのですか?
- 407 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 09:48:57 ]
- >>404
CにもC++にもnullなんてものはない。 NULLのことなら、NULLが0なんじゃない。0がNULLなんだ。
- 408 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 10:13:41 ]
- >>405
いくら「はきだめ」でも、嘘はいくない。
- 409 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 10:58:09 ]
- >>404
C言語の定義によればどんなポインターの型にも特別な値、 すなわち 「ヌルポインター」が存在する。このヌルポインターは 他のどんなポ インターの値とも区別可能で、「いかなるオブジェクトや 関数へのポ インターと比較しても等しくなることがないことを 保証されている」。 すなわちアドレス演算子&を適用した結果が ヌルポインターとなることもない。 C言語の定義によれば、ポインターを書くべきところに現れた定数0は、 コンパイル時にヌルポインターに変換される。すなわち初期化・代入・ 比較をするときに左辺/右辺のどちらかにポインター型の変数か式が 現れたときは、コンパイラはもう一方の側の定数0がヌルポインター を要求していることを理解し、適切なデータ型のヌルポインターの値 を産み出す。
- 410 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 19:12:14 ]
- C++Q&Aの2.24に
class Vehicle{ public: virtual void startEngine()=0; vietual ~Vehicle(); }; Vehicle::~Vehicle(){} 「そこから導出される派生クラスではstartEngine()メンバ関数を提供してはいけない。」 とあるんですが、これは使うなって事ですか? 「提供してはいけない」っていう言葉の趣旨がわからんのですが。
- 411 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 19:15:40 ]
- 多分
s/しては/しなくては/ ではないかと。
- 412 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 20:41:27 ]
- ですよね。
定義しないとエラーになるんで、これは一体・・・と思ってた所です。 訳者が監修扱いになってるんで、誤訳かなぁと思ってた所です。
- 413 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 20:45:54 ]
- デストラクタをvirtualにしないと駄目な理由がいまいちわかりません。
- 414 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 20:49:42 ]
- >>413
struct Base { // virtual ~Base() {} }; struct Derived : Base { Derived() : p(malloc(100)) {} ~Derived() { free(p); } private: void* p; }; { Base* x = new Derived; delete x; }
- 415 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 21:06:15 ]
- そこでshared_ptrですよ、と惑わしてみる
- 416 名前:デフォルトの名無しさん [2007/04/15(日) 08:19:41 ]
- 動的束縛(アップキャスト)を使った状態でのdeleteが駄目って事ですか?
- 417 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 09:42:37 ]
- float x=0.1;
exp(0.1*x)だとfloatなのにpow(0.1*x,2)だとdoubleになってしまうのは何故なのでしょうか? pow(float(0.1*x),2)とすれば、floatになってくれるのですが、expとpowで何が違うのでしょうか?
- 418 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 09:49:12 ]
- んなこたーない。
つーか、何を根拠にfloatだのdoubleだの言ってるんだ?
- 419 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 16:40:47 ]
- まずCかC++かはっきりさせろ
- 420 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 16:48:26 ]
- C++です。
- 421 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 17:25:36 ]
- で、根拠は?
- 422 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 17:33:13 ]
- cmathを使っている
- 423 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 18:57:11 ]
- ダメだこりゃ。
- 424 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 19:14:06 ]
- math.hを使え
- 425 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 20:25:31 ]
- なんでやねん。
- 426 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 21:33:50 ]
- >>417
0.1 * xは、0.1がdouble型だからxもdouble型へ昇格され、全体としてもdouble型になる。 expもpowもdouble型の引数を取るものが呼ばれるはず。 そうでないならコンパイラがおかしいはず。 そもそも418も指摘しているとおりで、417自身がどうやって調べたのかも怪しいが。 ついでにいくつか言うが、float型リテラルを作るには0.1fのようにfを後置しろ。 そんな関数スタイルのキャストでも(勿論Cスタイルのも)使うな。 ここではstatic_castを使え(Boostのimplicit_castもありだ)。
- 427 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 13:06:00 ]
- #include <windows.h>
#include <stdio.h> void main() { double a; a = 2/6; printf("%f\n", a); } VC6にて上のように単純に2÷6を計算したら0が出力されます。 0.33333・・・を出したいのですがどうすればいいのでしょうか?
- 428 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 13:48:59 ]
- >>427
a = 2.0 / 6.0;
- 429 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 13:54:24 ]
- >>428
ありがとー
- 430 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 20:52:34 ]
- 共用体が有効なときってあるの?
活用方法が見出せない。
- 431 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 22:11:20 ]
- >>430
確かに。職業PGだが、BigEndianとLittleEndianが混在した状況で 共用体が必要な場面は少ないと思う。実際使わないし。 組み込み系ならBEかLEかははっきりしているので union X { long a; char b[sizeof(long)]; }; とかやることがあるかも。
- 432 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 23:37:36 ]
- 領域をケチりたい場合にはよく使ったが、
最近はメモリに気を使う必要性が減ったから、 わざわざそういうことはしなくなったな。
- 433 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 01:02:36 ]
- union REGS は昔良く使われてたな。
今は struct sockaddr 関係で使われてたような。 sin_addrが内部の何かのdefineだった気がする。実装依存だろうけど。
- 434 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 11:00:22 ]
- >>430
であれば、使わなければよい。 実例としては、例えば「ICMPヘッダ union」でググるよろし。
- 435 名前:デフォルトの名無しさん [2007/04/21(土) 18:03:25 ]
- freeにNULLを渡した場合の挙動は仕様として決まっていますか?
また、一般的な処理系ではどうなっているでしょうか。
- 436 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 18:24:28 ]
- >435
標準CではfreeにNULLを渡したときは何もしない(だから渡してもよい) ことが保証されている。
- 437 名前:デフォルトの名無しさん [2007/04/30(月) 09:05:06 ]
- 32bit Windowsと64bit Windows両方で共通のコードを書きたいのですが、
int、doubleなど同じ変数型でも変数の桁数、精度がそれぞれで違うと思いますが、 これらの違いの一覧はどこかで公開されているのでしょうか? これらはOS依存なのでしょうか?それともコンパイラ依存なのでしょうか?
- 438 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 10:41:58 ]
- VC++なら、
たぶん求めてるのはこの中から見つけ出せると思う。 ttp://msdn2.microsoft.com/ja-jp/library/02c56cw3(VS.80).aspx
- 439 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 10:49:34 ]
- intってコンピュータが64bitなら64bitになるというものじゃないのですか?
- 440 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 11:00:43 ]
- IP64,LP64,LLP64とかでググレ
- 441 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 16:20:50 ]
- if文の条件としてキーボードでaが入力されたら〜ということを表したいのですが、
char c; if((c=getchar())==a) と言ったものを考えたのですが、 char c; if((c=getchar())=='a') に直すべきでしょうか。 非常に稚拙な質問ですが、よくわからないので助けてください。
- 442 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 16:26:29 ]
- >>441
正しくコンパイルできて動くほうを選べ。
- 443 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 17:07:24 ]
- >>442
ごめんなさい、今出先なのでコンパイルできる環境がないもので・・・。 どうか教えていただけませんか。
- 444 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 17:12:29 ]
- >>443
教えるも何も >>441 からでは判別不能。エスパーの召喚が必要だ。 コンパイルできない環境で知る必要も無いだろう。帰ってからゆっくり試せ。
- 445 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 19:00:38 ]
- >441
前者は、入力した文字を 変数 a の内容と比較している。 後者は、入力した文字が a という文字かどうかを判定している。 さあ、選べ。
- 446 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 01:23:21 ]
- >>445
トークンa 'a'という整数
- 447 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 07:40:59 ]
- >441
ついでにgetchar()の戻り値、文字リテラルの型はintだからchar c;ではなくint c; とすべき
- 448 名前:447 mailto:sage [2007/05/01(火) 07:42:04 ]
- >文字リテラルの型はint
Cの場合ね。
- 449 名前:デフォルトの名無しさん [2007/05/06(日) 19:11:31 ]
- 下記のファイルの3列目を読み込んで配列に格納したいです。
----- 1,2,3,4 5,6,7,8 9,8,7,6 5,4,3,2 ----- 数値はカンマで区切られています。 どうやったら a[0]=3, a[1]=7, a[2]=7, a[3]=3 というふうに格納できるでしょうか? a[0][2]=3, a[1][2]=7, a[2][2]=7, a[3][2]=3 でも構いません。よろしくお願いします。
- 450 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 19:12:13 ]
- 宿題は宿題スレへ
- 451 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 19:19:57 ]
- >>449
適当でいいのなら fgets で 3 列目まで読み込んでから sscanf(buf, "%d,%d,%d,%d", &a[0], &a[1], &a[2], &a[3]); みたいに。 真面目にやるなら strtok とか、コンマを strchr で探して切り捨てたりしてから、 atoi とか。
- 452 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 19:31:52 ]
- 一行読み込むごとに
sscanf(buf, "%d,%d,%d,%d", &dummy, &dummy, &a[i], &dummy); でいいじゃん
- 453 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 20:42:28 ]
- 普通に %*d つかえよw
- 454 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 20:45:02 ]
- あ、三列目ってそっちか。
- 455 名前:449 mailto:sage [2007/05/06(日) 20:47:58 ]
- >>451-454
とくに宿題ではないのでここに書かせてもらってます。 型は決まっているのでsscanfでできました。 ありがとうございました。
- 456 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 00:21:59 ]
- >>453
すっかり忘れてたわー
- 457 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 11:33:22 ]
- >>452
で、3カラム目だけ得る目的なのに4カラム目を空読みする理由は? #"%*d,%*d,%d"で充分。
- 458 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 17:30:42 ]
- >>457
上につられたってことにしといてください
- 459 名前:デフォルトの名無しさん [2007/05/07(月) 23:31:13 ]
- #include <stdio.h>
#define JIJYO(x) ((x)*(x)) main() { int i = 1; while(i <= 5) { printf("結果:%d\n", JIJYO(i++)); } } において、実行結果は1^2,3^2,5^2の順に表示されるのですが、 何故、1^2,2^2,3^2……とならずに、i++が2回ずつ呼びだされるのでしょうか?
- 460 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 23:42:30 ]
- 見え見えの落とし穴にはまるあなたは
きっと仲間内では天然キャラとして愛される存在なのでしょう
- 461 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 23:53:10 ]
- >>459
漏れも初心者なんで、あってるかどうかわからないけど。 #define JIJYO(x) ((x)*(x)) ((i++)*(i++)) に展開されるんじゃないかな。
- 462 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 23:56:59 ]
- マクロを教える時に必ず注意される所だと思うが。
- 463 名前:459 mailto:sage [2007/05/08(火) 02:02:18 ]
- >>461
なるほど……。 ありがとうございました。
- 464 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 13:38:07 ]
- C++について。
問題文: f(x)=x^3(xの3乗)のdf(x)/dxのプログラムをC++で作れ。 (1≦x≦2、xは0.01ずつ増加<x(i+1)=x(i)+0.01>、そのときのf(x)の値も用いる。) 5月14日までに考えて来い!との事なので・・・ どうかご教授願いたく存じますm(_ _;)m
- 465 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 13:56:57 ]
- >>464
for (int x=100;x<=200;x++) { cout<<(x/100.0)<<" "<<3*(x/100.0)*(x/100.0)<<"\n"; }
- 466 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 13:59:49 ]
- >>464
宿題スレとのマルチはお勧めしない。
- 467 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 15:44:46 ]
- さすが掃き溜め。
- 468 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 16:20:58 ]
- C++厨死ね
- 469 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 01:28:34 ]
- >>464
丸投げしといて、回答があれば丸写ししようなどと考えてる (らしい) 奴が >ご教授願いたく などとふざけた台詞を吐くお陰で、この単語に脊髄反射してしまう奴が 後を絶たないんじゃないかと思うようになって来た。
|

|