[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 02/13 21:50 / Filesize : 246 KB / Number-of Response : 943
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C/C++小心者スレッドPart1



1 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 06:18:18 ]
プログラミング言語C/C++についての、小心者向けスレです。質問・要望・雑談などどうぞ。
関連スレやURLは>>2以降。

■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
 ・ぐぐる
 ・マニュアルで探す 
 ・FAQを読む 例えば www.bohyoh.com/CandCPP/FAQ/index.html
質問には以下を書くこと。へたくそな質問は再提出を要求される。
 ・詳しい内容(「動きません」「うまくできません」では回答しようがない)
 ・エラーメッセージ(なるべくそのままで)
 ・実行環境(OS名、コンパイラ名)
 ・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。

■回答する人へ 
相手は小心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって小心者スレだもん)。
 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。


宗教的な話題は禁止します。


445 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 12:37:23 ]
>>444
・>443は「論理的ではない」と指摘している。「理論的」かどうかは言及していない。
・例がおかしいのは結局直っていない。
・「ヒープ上で使われなくなったオブジェクト」は「ガービッジ」とは呼ばれない。
・JavaやC#の実装がC++と同じである保証はない。

446 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 13:00:25 ]
garbageのカタカナ表記ってJISとかで決められてるの?

447 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 13:03:02 ]
ガベージ ガーベジ ガーベージ ガーベッジ ガービッジ
この辺はどれでもまあ通じるからいいかなって思うわ
ガベッジはイマイチ。

448 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 14:49:20 ]
>>445
いやgarbageって呼ばれるから。出直してこい

449 名前:429 [2009/08/25(火) 15:55:43 ]
皆さん、失礼します

AfxBeginThreadにて生成されたスレッドのm_bAutoDeleteの値がtrueであるにもかかわらす
破棄されないことがあるのはなぜでしょうか?

450 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 16:02:08 ]
>>442,444
で、文意を汲みとってあげると
1) MyObj a;
2) MyObj* a = new MyObj;
だとして、C++でさえ1がスタックで2がヒープとは限らない。

まあ普通に使われるWindowsやUNIXの処理系なら、前者はグローバル変数
やstatic変数じゃない自動変数ならスタックに確保されて、後者は
operator newで変なことしてなければヒープに置かれると思う。

C#やJavaでどうなるかは、処理系のソースを見たことないので何とも言
えない。処理系がじゅうぶん賢ければ、newしてたってスタック上にオブ
ジェクトを置くことは技術的に可能だと思う。


451 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 16:52:40 ]
newするオブジェクトの実態をスタックに置く最適化は「エスケープ解析」という名称で有名。Javaはやっている。
逆に、MyObj a;をヒープに置くのは、C++/CLI(VC++で.NET Frameworkを対象にコンパイルしたとき)で行われることがある。
まあ、そんな例外的な事象もある。

452 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 16:58:20 ]
>>449
AfxEndThreadは呼んでるのかな

453 名前:429 [2009/08/25(火) 17:27:49 ]
呼んでませんね。制御関数はreturnで終了させています。

制御関数を終わらせるにはreturnとAfxEndThreadの2つの方法が存在するが、
どちらでもOKだという認識です。

これが既に間違っているのでしょうか?

現在は431さんの方法
>m_bAutoDeleteがFALSEの場合はスレッド作成側で破棄しないとダメだよ。
>自動で破棄されるようにするには、サスペンド状態で開始し、m_bAutoDeleteをTRUEにし、リジュームする。
で試しています。




454 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 17:47:03 ]
>>453
正常終了じゃないのにreturnで終わってるとか。

455 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 18:05:37 ]
クラスについての質問なんですがあるサンプルプログラムで、

class Test01 {
protected:
int hoge01, hoge02;
public:
Test01();
~Test01();
}
// コンストラクタ
Test01::Test01() : hoge01(10), hoge02(20) {}

の様な部分があるんですがこの Test01::Test01() の後に続く : hoge01(10), hoge02(20) という記述の仕方は一体なんなんですか?
その後のプログラムの動作からメンバ変数に値を代入しているというのは分かるのですが、どうもはっきりしてなくもやもやします。
なのでこの書式の具体的な動作と名称を教えて下さい。

456 名前:429 [2009/08/25(火) 18:15:16 ]
>正常終了じゃないのにreturnで終わってるとか。
正常終了じゃないときはreturnで終わらせてはいけないのでしょうか?

あと正常終了かどうかはどうやって判断すればいいのでしょうか?
自分の作った独自のロジックの中での正常かエラーかなんて
AfxBeginThreadの戻り値には関係ないと思うのですが、、、

それとも制御関数の中でエラーが発生してスレッドが落ちてしまった時に
AfxBeginThreadの戻り値はnullに戻らずそのままになってしまうということなのでしょうか?
ついでにそのときに画面には何もエラーが出てこないものなのでしょうか?

457 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 18:20:49 ]
>>456
俺もよく知らないで書いてんだけどね。
これ見ると正常終了以外はreturn使ってはいけないように見えるよね。
msdn.microsoft.com/ja-jp/library/2s21xzfe(VS.80).aspx

スレッドで使用しているリソースはすべて解放し終わってから抜けてる?

458 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 18:26:11 ]
>>455
メンバ変数を初期化する初期化子
初期化と代入の違いはメンバ変数がクラス型になるとわかる

459 名前:429 [2009/08/25(火) 18:28:09 ]
>>457
本当ですね。

スレッドの正常終了は
「 AfxEndThread 関数を使うことも、return ステートメントを使うこともできます。」
と書かれているのに対し、
スレッドの中断は
「終了するスレッドから AfxEndThread を呼び出すだけです。」
と書かれていて、returnには一切触れていませんね。

何でもかんでもreturnで返しているのが原因かなぁ、、、


460 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 18:35:44 ]
>>458
ありがとうございます

461 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 18:58:49 ]
>>455
メンバ変数のコンストラクタ呼び出し
作成時にパラメータを必ず受け取る必要のあるクラスオブジェクトや基本クラスがあるときなんかに必要になる
ちなみに変数名(初期化データ)はローカル変数宣言時でも使える, 代入演算処理が不要になるおまけつき
void hoge(){ int a(0); // aを0で初期化 };


462 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 19:08:50 ]
>>461
ご丁寧にどうもありがとうございます、参考になりますm(_ _)m

463 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 19:58:05 ]
>>459
少なくともreturnで終了させる場合はデストラクタも呼ばれ正常終了する。
異常終了とはデストラクタが呼ばれないことを覚悟して強制終了させることだと思う。
msdn.microsoft.com/ja-jp/library/2s21xzfe(VS.80).aspx
はAfxEndThreadで終了させる場合にデストラクタが呼ばれるとはどこにも書いてない。
MFCのAfXEndThreadは知らないが、Win32のEndThreadはデストラクタは呼ばれない。
ランタイムの_endthreadExも同様だけど、returnで終了した場合はデストラクタが呼ばれてから_endthreadEx
が呼ばれるので問題ない。




464 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 19:59:27 ]
>>463訂正
Win32のEndThread X
Win32のTerminateThread O


465 名前:429 [2009/08/25(火) 20:53:01 ]
>>463
そうなんですか、詳しい説明、ありがとうございます。。。
原因わけとして、returnで返すことは何も悪くないと。

デストラクタが呼ばれないと、スレッドが生きたままになってしまうことがあるということか、、、

長い間ありがとうございました。



466 名前:デフォルトの名無しさん [2009/08/25(火) 20:58:02 ]
char* pool = new char[100];
Hoge* ptr = reinterpret_cast<Hoge*>(pool);

というコードがあったとして、
delete ptr; よりも delete [] pool; が呼び出された場合、
ptrは解放されずにメモリリークを起こすことになるんでしょうか?

467 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 21:03:05 ]
というか、Hoge を new したわけではないのだから、Hoge を delete すべきではない
delete は new した char[100] に対してのみ行うべき

468 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 21:20:33 ]
ポインタをキャストしてるだけだから参照してるアドレスは同じってことだ

469 名前:デフォルトの名無しさん [2009/08/25(火) 21:21:05 ]
>>467
なるほど。
newはnew、キャストはキャストってことですね。
ありがとうございます。

470 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 02:42:25 ]
>>468
だからといって ptr を用いてdeleteできるとは思わんがね

471 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 10:06:16 ]
デストラクタだけの問題だ

472 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 19:08:10 ]
BYTE a[10],b[5];
としてaとbの配列を結合したい場合
新しい配列へ最初にa、次にbと
ループでコピーする以外に良い方法はありませんか?

強引に普通のcharとしてstrcatすると
当然ながら上手く結合されなくて


473 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 19:13:32 ]
memcpy()



474 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 20:20:22 ]
>>473
助かりました

475 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 03:00:17 ]
ファイルの後ろから指定サイズ分の領域を削除したいのだけど
先頭から削除領域までをコピーしたファイルを新たに作り
その後前のファイルを消すやりかたではなくて
直接その領域を無効化するにはどうすれば良いですか?

476 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 03:15:13 ]
>>475
対象 OS のファイル操作 API を調べると良いよ。

477 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 08:25:48 ]
CreateFileで開いたら
SetFilePointerで削除したいところまで移動させて
SetEndOfFileで切り捨てられる

478 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 15:14:49 ]
>>476-477
感謝します

479 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 01:59:29 ]
0x1234L
のように末尾に付く
Lの意味や読み方ってなんでしょう?

480 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 02:02:15 ]
その数値がlong型であることを表す
読み方は「エル」でいいんじゃね?

481 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 02:03:45 ]
>>479
整数リテラルの型を long にする指定。
読み方って、どういうこと?「える」とか、そういうの?

482 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 02:04:29 ]
うは、ごめん。

483 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 02:13:27 ]
サフィックスという言葉を知りたかったんじゃないのかと



484 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 03:45:26 ]
なるほど、詳しい解説ありがとうございました

485 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 19:54:04 ]
リストボックスでデータが追加されると
自動で最終行へスクロールするようにしたいのですが
LB_GETCOUNTで項目数取得 → LB_SETCURSELでその行へ移動
とやっても上手く行きません

どうやればいいでしょうか?

486 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 20:02:23 ]
>>472
最初から連結したバイト列を保存する配列を用意しておいて、
前半をAとして使って後半をBとして使うのではダメなのか?


>>485
そのあんたの使っているリストボックスとやらが含まれているライブラリのマニュアルを読んでください。
私には、それがどんなものかは想像するくらいしかありませんから。

487 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 20:29:28 ]
>>485
LB_SETCURSELのインデックスは0からのはずなのでLB_GETCOUNTの行は範囲外ではないか?

488 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 01:42:00 ]
ReadFileでファイルからデータを読み込み
ComboBoxへリストとして追加したいのですが
改行ごとの読み込み処理は皆さんどうやっていますか?

現在C++へ移行中で.NetではReadLineで簡単に出来たのですが
なかなか良い方法が見つからず数日ほど悩んでいます

489 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 02:02:46 ]
その流れだといろんな事が簡単にはできなくなるから覚悟しておいた方がいいと思うよー

490 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 09:47:42 ]
>488
改行単位で読むだけなら getline じゃないの?

491 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 23:05:18 ]
ウィンドウサイズで
大きさを制限する方法なら沢山出てくるのに
矢印自体を無効化する方のが見つからない

案外スタイル指定だけで出来たりするのかな

492 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 23:10:16 ]
WindowsならWS_POPUPにしてWS_THICKFRAMEを外せばおk

493 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 16:42:30 ]
>案外スタイル指定だけで出来たりするのかな
その通り



494 名前:デフォルトの名無しさん [2009/09/26(土) 03:42:47 ]
for (int i=0;i<N;i++)
{
    //処理A
    //処理B
}
より
for (int i=0;i<N;i++)
{
    //処理A
}
for (int i=0;i<N;i++)
{
    //処理B
}
と書いた方が速くなるときがあるのですが、何故だかがわかりません。
考えられる理由を教えてください

495 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 03:52:15 ]
大雑把過ぎてよくわからんけど、ぱっと思いつくのは
1.キャッシュに乗った
2.loop unrollが効いた

496 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 13:04:41 ]
一番考えられるのは、測定ミスだな

釣りじゃないなら、Nの値と処理A,Bの内容を示せよ
あと時間測定の方法も

497 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 13:09:04 ]
Windowsなら SetPriorityClass()、QueryPerformanceFrequency()、
QueryPerformanceCounter() を使って自動的に測定させればよい

SetPriorityClassを使うのはバックグラウンドでいらないプロセスが動いて
測定値にバラツキが出るのを防ぐため

測定後に元に戻しておかないと大変な事になる(再起動)

498 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 02:44:19 ]
>>494
どっちかのループでSSEが効いたんじゃない?

499 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 10:00:21 ]
C++でコードを書いていて引数にとったクラスにメソッドを適用する
関数を書きました。そのメソッドはクラスのprivate変数を変更するメソッドです。
デバッグプリントを追加して、メソッドが呼ばれている事や、
メソッドによってprivate変数が変更されている事を確認したのですが。
その関数を実行した次の行でそのprivate変数を確認するともとに戻ってしまっています。
適切に変更したいのですが、よろしくお願いします。
OS:MacOSX 10.6
Compiler: g++ 4.2.1

よろしくお願いします。

500 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 10:05:43 ]
>>499
引数の型はなにかね?

501 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 10:19:33 ]
メソッドの引数ですか?
独自で作ったHogeクラスのインスタンスです。
void FooBar (Hoge x)
{
x.SetX(10);
}

みたいな感じで使っています。
Hoge baz;
FooBar(baz); //ここでbazのprivate変数Xは10にかわったはず!!
baz.GetX() //なぜかここの返り値がもとのXのまま

といった感じです。


502 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 10:23:54 ]
そりゃbazの変数が変わったように見えてるだけで、実際変わったのはxの変数だ。
bazとxのアドレス確認してごらん。

503 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 10:26:00 ]
なるほど、関数はHogeインスタンスのポインタを引数にとるようにし、
bazのポインタを引数に渡せばいいという事でしょうか?




504 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 10:29:53 ]
ポインタでもいいし、C++だと参照ってのもあるから好きなほうを使えばおk。

505 名前:デフォルトの名無しさん [2009/10/23(金) 09:01:30 ]
負の値も含めて四捨五入する方法を教えてください

506 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 10:22:17 ]
std::vector<int> vA;
std::vector<int> vB;

// vAに値をpush_back

vB.reserv(vA.size());
std::copy(vA.begin(), vA.end(), vB.begin());


としたときに vB.size() でサイズを取得するには何か細工が必要ですか?

507 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 10:23:42 ]
>>505
tech.ckme.co.jp/cpp/cpp_round.shtml

508 名前:506 mailto:sage [2009/10/23(金) 10:42:22 ]
すみません解決しました

509 名前:デフォルトの名無しさん [2009/10/28(水) 05:31:06 ]
Windowsで実行ファイルのディレクトリを取得する方法を教えてください

510 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 09:06:03 ]
WinAPIスレにでもどうぞ。
それにしても、「実行ファイルのディレクトリ」とは「実行ファイルのあるディレクトリ」なのか
「実行ファイルを起動したときのディレクトリ」なのかはっきりしないもんだな。

511 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 22:00:44 ]
後者は普通カレントディレクトリと呼ぶだろ

512 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 22:40:41 ]
実行ファイルを起動したときのディレクトリのことをカレントディレクトリと呼ぶだって?
やめてくれないか。

513 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 23:00:36 ]
>>509
GetModuleFileName
_fullpath
とか、使って



514 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 23:42:32 ]
>>512
「実行ファイルを起動したときのカレントディレクトリ」と言いたいのだと思う。

515 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 02:13:32 ]
/usr/bin/ls

516 名前:デフォルトの名無しさん [2009/10/30(金) 03:42:49 ]
デフォルトのコピーコンストラクタは
ビットコピーをすると教わりましたが

stlコンテナを含む自作クラスについて
それをすると問題が起こりませんか?
大丈夫ですか?

代入してスコープ抜けるとき
コピー先の奴が元のを破棄してしまいませんか?

517 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 04:50:35 ]
>>516
> デフォルトのコピーコンストラクタは
> ビットコピーをすると教わりましたが

それは、うそだ。

518 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 06:57:24 ]
>>517
では全てのメンバオフジェクトに
operator=を適用するのですか?

519 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 07:38:15 ]
>>518
コピーコンストラクタならコピーコンストラクタ。
operator= なら operator= 。

520 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 07:40:49 ]
>>519
アハ!悟った!
あり^^

521 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 18:43:32 ]
すみません。計算式についてなのですが

long a = 3210;
double b = 23.456789;
long y = (a*3.1415) - (b+10.5) * 6.28;

例えばこうやって変数yを求めた場合、
「計算の為に見えない変数が確保され、メモリを消費する」という現象は起きるのでしょうか?
もしそうだとするならば、

long a = 3210;
double b = 23.456789;
double c = a*3.1415;
double d = (b+10.5) * 6.28;
long y = c - d;

こうやって(計算式がもっと長ったらしい場合)コードの可視性を良くしておいても
メモリ消費や、処理の負荷は変わらなかったりするのでしょうか?
それとも何かルールが有るのでしょうか。

「このURL読んで来い」とかだけでも何でも構いませんので、
情報を教えて頂けると助かります、よろしくお願いします。 orz

522 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 18:47:34 ]
>>521
気にするな、コンパイラは善きに計らってくれる。

523 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 18:50:51 ]
>>521
どうしても気になるなら、(最適化ありで)コンパイラにアセンブリ出力を出させて較べてみればいい。
>521が全てなら、恐らくはyが即値で得られるだろう。



524 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 20:51:29 ]
>>522-523
アセンブリ出力・・やってみて確認してみようと思います。
ありがとうございました。 orz

525 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 22:05:01 ]
すみません。
「整数同士の割算」の結果が「整数のみ」か「少数を含む」かを見分ける時、
今はintとdouble2つの割算をし、それらが等しいかif判定しているのですが
もっとスマートな方法をご存知な方はいらっしゃられないでしょうか?

526 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 22:40:57 ]
if(a%b==0)

527 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 05:12:31 ]
割り切れるかどうかってこと?
あんまりこういうこと言うスレではないかもしれんけど、正直、一瞬で>>526
浮かばないようだとヤバくね?

528 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 16:04:09 ]
そりゃ人によるでしょ。C/C++勉強し始めてすぐならしょうがない。
仕事でC/C++使ってる人間なら確かにヤバい。


529 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:17:26 ]
>>526-528
成る程。何か効率化の方法が有りそうだとは思ってたのですが
526の式にピンとこず、実際数値を当てて試してやっと理解できました。
アマチュアだけど、センスがないなぁ・・自分。
ありがとうございました。

530 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 14:31:50 ]
%を知らなかった(か、見たことはあるけど使ったことがなかった)のか?

531 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 15:37:13 ]
>>530
いえ。知っていてほんの数回は使っていたんですが、実際に余った数値そのものが欲しい時ばかりでした orz
普段少数しか扱ってなくて、余り=何かの数値 という先入観が強かったのも有るかもしれません。

ピンと来れず申し訳ないです。 orz

532 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 16:12:09 ]
まぁ謝ることではない

FuzzBuzz問題を解けないのが普通、って話も少し実感できた

533 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 16:12:49 ]
FizzBuzz問題だった



534 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 23:27:57 ]
まぁこういうのはセンスよりも経験だから
積めばそのうちピンと来るようになるさ

535 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 19:07:57 ]
代入演算子=がオーバーロードされているBaseクラスを
public継承したDerivedクラスがあり、
そのDerivedクラスは代入演算子=をオーバーライドしてあります。

そんなDerivedクラスのコンストラクタ中で、
@*this=100;
Athis->operator=(100);
Boperator=(100);
CBase::operator=(100);
これらはして良いコードでしょうか?



536 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 00:55:29 ]
>>535
1〜4のどれもコンパイルエラーにならないんで、あとはやりたいことを
書いてもらわない限りはそれ以上の良し悪しを判断できない。

537 名前:535 mailto:sage [2009/11/18(水) 06:13:06 ]
>>536
ありがとうございます。
コンストラクタ中で、thisポインタや代入演算子を使用しても大丈夫なのでしょうか?
ということが伺いたかったのです。


538 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 08:31:52 ]
>>537
同じじゃねーか馬鹿。

コンパイルは通る。一定の動作もする。
「大丈夫」かどうかは、少なくともその動作が期待している動作と合致するかどうかによる。
今のところ期待している動作は不明。したがって判別不能。

539 名前:537 [2009/11/18(水) 20:03:46 ]
仕様上未定義の動作でないことが分かれば大丈夫です。
ありがとうございました。

540 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 23:21:25 ]
条件によっては未定義動作も有りうるって言われてるんじゃないの?

541 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 17:39:59 ]
質問です
10×10のマス目を「0,1,2」で埋める。使わない数字があっても可
それを例
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
と言うテキストファイルで出力したい。ファイル名は連番。
すべての可能性を(回転して同一等を排除しない)出力するためのプログラムって
どうやって書いたらいいんでしょうか??

見当が付きません。

542 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 17:45:00 ]
3^100 ≒ 5.15×10^47通り全部書き出す気?

543 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 17:49:05 ]
3~100になるんですか……
100~3だと思ってた…………

えらいことになりますね。



544 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 18:07:30 ]
>>541 のお陰で、STL に next_combination がないことに
今頃気付いた。

545 名前:541 mailto:sage [2009/11/19(木) 20:45:31 ]
少しアプローチの仕方を変えてみようかな
まず10桁の数字を「1,2,3」で埋める。使わない数字があっても可

これなら3^10=59049個で、一つずつファイルに出力は厳しいけど
一覧で表示だけならできそうだ。

1111111111〜3333333333
までの数字で「0,4,5,6,7,8,9」を含む物を削除ってほうがわかりやすいのかな。

まぁそのあとどうやって縦に10桁並べるのかよくわからんけどww








[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<246KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef