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


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

【初心者歓迎】C/C++室 Ver.47【環境依存OK】



1 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 15:14:51 ]
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.46【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1198755167/
【アップローダー】(質問が長い時はココ使うと便利)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm

862 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:21:39 ]
>>860
正解が何か知らんからわからんが
改行の位置がおかしいんじゃないか?

863 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:23:03 ]
>>861
スマソ
そうだね
改行は問題ないわ

864 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:23:08 ]
test

865 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:25:57 ]
>>860
>参考書どおりにコードを打ち込んだのに実行結果が違ってしまいます

このスレを見ている人はその参考書のことなんてしらない。
どのような結果を求めているのかを提示しないと、どこが違っているのか答えられないよ。

明らかにおかしいコードだから答えは>>861の通りだろうけど、もうちょっと質問の仕方を考えたほうがいいよ。


866 名前:デフォルトの名無しさん [2008/02/03(日) 18:26:15 ]
>>861
サンクス
無事実行できました。

867 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:26:28 ]
861に書かれていることと
その下の行の { が足りないことで
たまたま{ }の対応がうまくいってコンパイルは通ってるんだな。
なので2ヶ所修正

868 名前:デフォルトの名無しさん [2008/02/03(日) 18:26:51 ]
C言語でのアルゴリズムの質問をさせて下さい。

現在以下のようなプログラムを作ろうと思っています。

0〜65535までの数字をIDとしてユーザに割当てる。
ユーザが割当てられたIDを使わなくなったときはそのIDを返却し、
返却されたIDは回収されて他のユーザに割当てられる。

最も簡単なやり方は、user_id[65536]などの大きな配列を作って、
使用状況を配列の中身の0か1で判断する、といったものかと思います。

しかしこのやり方よりもっと効率的なものはないでしょうか?
このような大きな配列を作るのは実装としてまずいのかな…と感じています。

初心者で申し訳ありませんがアドバイスよろしくお願いします。

869 名前:867 mailto:sage [2008/02/03(日) 18:27:59 ]
あ、違った。
ごめん

870 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:29:28 ]
とはいえ入門書で{}略すのはイクナイと思う。



871 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:29:56 ]
>>868
64Kなら、オンメモリで処理してもいいんじゃね?
ビットで処理したら、8Kで収まる。

872 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:31:50 ]
>>868
更に上限を増やさなければならない可能性があるなら、
別のやり方を考えたほうがいいと思うけど、
それぐらいなら問題ないと思うね。

873 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:32:16 ]
>>870
ぜんぜんOK

874 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:36:59 ]
>>868
その、配列やり方でいいと思うよ。
ランダムに返却され再利用されるならそれしかない。>>871のようにビットマップで配列は小さくできる。

連続の範囲でとりますとか特徴があれば、それを使って効率的に管理することもできる。



875 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:37:36 ]
ある静的メンバ変数を含むクラスをテンプレート化しました。
この場合、静的メンバ変数は、テンプレート引数ごとに別々の実体が
作られるということで、このことは確認できました。
で、質問なのですが、この静的メンバ変数の初期化は、
いつ行われるのでしょうか?
テンプレート化してない場合は、mainが始まる前ということで、
これは手元の本にも載っているのですが、
テンプレート化した場合、実際にどんなテンプレート引数で
クラスが作られるかわからない段階で初期化ってできるのか、と
思ったものですから。
実際、mainの最初で、静的メンバ変数の値を見てみてみても、
なぜかちゃんと初期化した値が入っているように動きます。
なぜなのでしょうか。

876 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:41:47 ]
コンパイル終わったときにはわかってるから。

877 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:43:13 ]
テンプレートはビルド時に、
初期化コードも含めてすべて実体化されるだろ。

878 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:44:51 ]
>>876
>>877
むむむ、そういうことですかーーー。
考えが至りませんでした。
ありがとうございました。

879 名前:868 [2008/02/03(日) 18:56:06 ]
>> 871,872,874

アドバイスありがとうございます。
特に問題がないようですので、このやり方で続行します!

880 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 19:14:04 ]
C++だとbitsetでやるのが楽なんだろうけどな



881 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 19:20:13 ]
それだとフリー探索がO(N)になるから、vector<unsigned short>(65536)という
手もよくあるパターンではある。

882 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 19:23:17 ]
set<>は使えんの?

883 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 19:24:46 ]
>>881
なんでunsigned shortなの?

884 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 19:32:59 ]
intよりは節約できるし、IDは0〜65535なんだろ?

885 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 19:37:16 ]
サンプルコード見ながら勉強してるのですが

this->SizeGripStyle = System::Windows::Forms::SizeGripStyle::Hide;
#pragma endregion
private:

の、->、::、#、:、の意味がよくわかりません
調べたいのですが、記号はGoogleで検索できないので、この記号の名称を教えてください


886 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 19:42:26 ]
サンプルコードを見る域に達してないな

887 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 19:45:39 ]
だから質問しているんです

888 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 19:45:51 ]
それどころか勉強すら始まってないな

889 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 19:46:37 ]
なんか本買えよ。
というか、そんな変態言語じゃなくて、普通のC++から勉強しろ

890 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 19:50:40 ]
>>887
無料で見れる情報、無料で協力してくれる人だけをあてにして勉強する気?

独学で身につけるだけの基礎的な力をもっているならまだしも、
まったく何も持っていないなら勉強するための最低限の準備くらいはしたら?



891 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 19:52:27 ]
>>885
何でも良いからCの入門書を読んでからにしようぜ


892 名前:デフォルトの名無しさん [2008/02/03(日) 20:00:57 ]
質問ていうか相談なんだけど
TXTファイルの文字列置換ツール作たいんだけどさ
置換箇所だけ更新かけたいんだよ
でもさ、fopenでファイル開くと一箇所変えると全部上書きしないといけないじゃん
置換箇所だけ更新かける方法ない?

893 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 20:07:34 ]
C++/CLIの文法はアレだからなー。

894 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 20:07:49 ]
一旦、別のファイルに書き出す。
その後、元ファイルを削除し、
さっき書き出したファイルの名前を元の名前に変える。

895 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 20:08:21 ]
文字数変わらないなら、fseekとかfwriteあたりを駆使して
上書きすりゃいいじゃん。 ずれるのならご愁傷様。

896 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 20:29:30 ]
>>892
ファイルの途中でサイズが増減しても、局所的な更新だけですむような
ファイルシステムを実装する。

897 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 21:08:44 ]
>>874
> ランダムに返却され再利用されるならそれしかない。

そんなことはないだろ。

組み込み用途だと、8KB なんて言うテーブルなんてとんでもないと言う
こともあるだろうし、PC でも ID を 32bit にしたいとか言われたら、
どうするんだよ。(w

>>868
ID の範囲に比べて、同時使用ユーザ数が極端に少ないなら普通にリニア
サーチして管理することもできるし、同時使用ユーザ数がそれなりで
ID の割り当て・回収の処理コストが問題になるならハッシュとかBツリー
を使うこともできる。

898 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 21:09:38 ]
stl::map<stl::string, Animal> animals;
Animal &a = animals["cat"];

この時点で、aに入る物は出来ていますか?

899 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 21:13:50 ]
stlの定義による。
stlがstdの間違いなら、aは正しく要素を指している。

900 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 21:16:27 ]
>897
「何」を、リニアサーチするんだ?



901 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 21:16:42 ]
>>897
また組み込み厨がでたよ。
特殊な環境を持ち出して、いちいち反論するヤツ。

902 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 21:25:25 ]
>>897
ランダムに返却されれば、2^65536の組み合わせが発生する。それを記録処理するには65536bit必要になる。すなわち8Kバイトだ。
それ以下にするには、IDの消費が均一ではなく偏らせる必要がある。
たとえば、連続してIDを取得する。そういう特徴があれば、それに応じた処理にして節約すればいい。しかし、それはランダムとは言えない。


903 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 21:29:51 ]
>>897
どこに極端に少ないと書いてある?

904 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 21:31:54 ]
その次に「なら」ってかいてあるがな

905 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 21:33:18 ]
>>884
いまさらだけど、配列の中身は0か1って書いてあるんだからshortは必要ないだろ

906 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 21:34:05 ]
そこかしこのレスから揚げ足を取りたがってるオーラを感じるのは俺だけでいい

907 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 21:34:51 ]
文章構成がアレだね。
前半は、「パターンがランダムでも、メモリ8KBも取る必要はない」って言ってて、
後半は、「パターンがランダムでなければ、節約する方法がある」みたいな。

908 名前:881=884 mailto:sage [2008/02/03(日) 21:37:43 ]
えと、つまり、vectorのvがあるとして、
初期値として、(65535〜0)を入れとくわけね
で、こうするとO(N)で触れる、ってだけの話。
要求(){ return v.pop_back() }
解放(id){ v.push_back( id ); }

909 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 21:41:34 ]
それ O(N) じゃなくて O(1) だろ。

解放でデタラメな id 食わされたら死ぬとか言う問題もあるかもね。

910 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 21:43:20 ]
あーそうそうO(1)だね。
でたらめなIDって言っても、if文一発で済むでしょう。
同じIDが複数解放されてきたららドナノヨって話は知らない。



911 名前:883=905 mailto:sage [2008/02/03(日) 21:47:39 ]
>>908
大きな配列の変わりにvector使うのかと思ってたw

同じIDのチェックまでするならsetの方がよさそうだな

912 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:01:19 ]
Cでbool型って使えたっけ?

913 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:04:18 ]
>>902
もちろん、同時利用者数が最大 65536 と言うなら、ビットマップの方が
効率がいいのは自明だけど、>>868 が「そんな大きな配列」とか書いて
るから同時利用者数はそれほどじゃないのかも知れないと思っただけの
こと。

914 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:09:43 ]
同時利用がたとえば30なら、IDを65535も用意しとく必要無いじゃん。

915 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:26:06 ]
>>890
いいえ違います
ほかの単語は検索すればわかる、だけど記号は検索できないから質問してるの
検索できない単語が他にも沢山あるならまた質問しまくるかもしれませんが
幸い、検索不可能な記号はこれだけのようなので質問しました

>>891
手持ちの入門書には「System::〜と書けばこう動く」という記述はあったが
「::は〜という意味です」という記述はなかった

916 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:26:54 ]
>>915
もうちょっとまともな本を買うべきです。

917 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:30:37 ]
入門書どころか入門サイトにも名前つきで紹介されている件について。

918 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:31:15 ]
>>915
いいから、独習Cと独習C++あたりでも一通り読んできなさい。

919 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:35:38 ]
>>915
>>918の言うとおりだが、立ち読みは迷惑なのでちゃんと買おうな。

920 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:37:49 ]
つうか碌に参考書やサイト読み込んでないのバレバレじゃん



921 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:39:07 ]
大漁大漁^^

922 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:39:47 ]
今時釣り宣言とかwww

923 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:43:09 ]
ファイル書き込みについての質問なんですが
#include <stdio.h>
typedef struct{
char no[6];
char name[21];
int tanka;
}SHOHIN;
void main(void)
{
int i;
SHOHIN shohin[5];
FILE *fp;
if((fp=fopen("shohin.txt","w"))!=NULL);
{
for(i=0;i<LEN;i++){
printf("商品番号、商品名、単価\n");
scanf("%s,%s,%d",shohin[i].no,shohin[i].name,&shohin[i].tanka);

fprintf(fp,"%s",shohin[i].no);
fprintf(fp,"%s",shohin[i].name);
fprintf(fp,"%d\n",shohin[i].tanka);
}
fclose(fp);
}
return;
}
文字化けが起きてうまくいきません
例えば a,a,1と入力すると
a,a,11245072
となってしまいます
単純なミスだと思うのですがどうか教えてください!
コンパイラはbcc55を使用しています

924 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:46:09 ]
>>923
<scanf("%s,%s,%d",shohin[i].no,shohin[i].name,&shohin[i].tanka);
>scanf("%s,%s,%d",shohin[i].no,shohin[i].name,shohin[i].tanka);
こうするとどうだ

925 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:46:48 ]
>>923
次の二行を削除(もしくはコメントアウト)してみな
fprintf(fp,"%s",shohin[i].name);
fprintf(fp,"%d\n",shohin[i].tanka);

926 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:48:33 ]
>>924
同じでした・・・

927 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:49:37 ]
,の認識どうなってんだろうね

928 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:50:22 ]
>>925
文字化けが消えました!
どうもありがとうございました!!!

929 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:52:00 ]
>>914
将来の拡張のために ID の範囲は余裕を持っておく

ぐらいのことは普通にあるだろ。


930 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:53:40 ]
>>928
そうじゃなくて %s でひと続きの文字列として shohin[i].no 以下に格納されてるだけってのを見て欲しい



931 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 23:04:56 ]
突然ですが、実際のプログラム(main)って、
tryの中にほとんどの記述を入れるのでしょうか。
とある本で例外処理の部分を読んでいる初心者ですが、
この章だけは、mainのほとんど(catch以外)を
tryの中に入れてます。だけど、この後の章では
ざっと見た限りほとんど入れてないように思います。
例外をことごとく捕まえたいときには、実際の
現実的なプログラムだとどうなるのでしょうか。
先走っているのかもしれませんが気になるので教えてください。

932 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 23:10:06 ]
例外がキャッチされなかった場合、
自動変数のデストラクタが走る保証はない。
もしそれで致命的なリソースリークが起こるなら、
例外をキャッチするべきなんだろうな。

933 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 23:10:57 ]
  〜皿


    只只  只只只只
    只只  只只只
      |

      凸



934 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 23:13:57 ]
エラー処理と復帰処理のできるところで捕まえればいい。
mainの処理全体をtryで囲むのは、例外即終了でおkな場合でしょ。

935 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 23:15:43 ]
>>931
mainでキャッチしても、エラーメッセージ出すくらいしか使い道無くないかな
例外でアプリを落としてもいい場合は、キャッチしなくてもいいかな
落としたくない場合は、落としたくない箇所でキャッチすれば良い。たとえばメッセージループとかかな

質問だけど、DLL書いたとき、エントリのところで例外全部キャッチしたほうがいいかな

936 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 23:18:34 ]
>>934
基本は全部囲っておかないと、 catch 漏れが無いか気をつけないといけなくなる。

937 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 23:41:16 ]
>935
まあ、COM入門で出てくる話だが、「例外はDLL境界
超えられないものとして扱うべき」だな。

938 名前:931 mailto:sage [2008/02/03(日) 23:43:24 ]
>>932-
どうもでした。
mainの中で全部っていうのは、
この本の(この章の)説明の都合なんですね。

こういうことでよろしいのでしょうか。
・mainの中でcatchしてもエラーメッセージを出すくらいの
処理しかできないので、基本は処理できるところで捕まえる。
・ただし、catchもれの心配もあるのでmainも全部囲う。
(もしかしてここはプロの方でも人によるとか、、?)


939 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 00:12:56 ]
例外なんかキャッチしない仕事の人もいるぜ

940 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 00:17:20 ]
>>932
確認させてください。スタックの巻き戻しってのは
例外だろうが何だろうが、スコープを抜けたら
構築済みのローカルオブジェクトは正しくデストラクタ
が呼ばれて解放されるんではないんだっけ?
これがRAIIを使ったリソース管理のメリットだと
思ってたんだけど。throwされた例外は確実にcatch
されないとリークするの?

{
boost::shared_ptr<Widget>(new Widget);
throw Reigai();
}

この場合、例外でスコープを抜けても
どこかでcatchされないとデストラクタ
が呼ばれずに、そのままterminateしてしまう?



941 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 00:24:00 ]
terminate da Human.

942 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 01:15:31 ]
試したけど本当に呼ばれないな。
そういう規格なんだろうか。
ハーブサッターの本の例外の話は嘘か?

943 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 01:17:15 ]
例外を捕まえるハンドラがなければ、
throwした時点でterminate呼んでも良いみたいな話?

944 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 01:25:56 ]
本当だ。
規格に書いてあった。


945 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 01:29:13 ]
>>943
Exceptional C++の例外安全の話
項目13 P53とか
”例外が投げられてスコープから出たときにデストラクタが
呼び出され。。。”

って書いてあるから勘違いしてたかも。

946 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 01:49:51 ]
最終的にどっかでcatchされるという前提なんだろうな。


947 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 02:05:31 ]
しかしわかりにくい。。。
それじゃ、”例外が投げられてスコープから出たときに
デストラクタが 呼び出され。。。” じゃなくて、
「その例外がcatchされたとき、。。。」って書けよなあ。

948 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 02:10:42 ]
本当そう思う。
でもわかって良かった。

949 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 02:35:22 ]
要するにmainで全ての例外をcacheすればいいってことか。

950 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 02:40:10 ]
そういうことになるね。こんな記事見つけた。

Stack Unwinding in the Event of an Uncaught Exception

When an exception is thrown and no matching handler can be found for it,
C++ invokes the function terminate(). By default, terminates invokes the
function abort(). (ここまでは規格の話だろうね)

Some compilers guarantee that at this point, the stack
has been unwound, i.e., all local automatic objects have been fully
destructed, streams have been flushed, and open files have been closed.
Other compilers don't unwind the stack in this case. In other words,
whether the stack is unwound in the case of an uncaught exception is
platform-defined. Therefore, you should check your compiler's
documentation to know how it behaves in the event of an uncaught
exception.




951 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 04:16:27 ]
testというクラスがあって、
test::test(){各変数の初期化}というコンストラクタがあった場合

test *p;
p=new test [n];
とした場合も*p[0〜(n-1)]の全てがコンストラクタが実行されて初期化されますか?

952 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 04:32:25 ]
初期化されます

953 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 04:36:09 ]
>>952
ありがとうございます。
かなり時間かけてクラス作ったのにコンストラクタ実行されなかったら泣くところだった

954 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 07:36:14 ]
>>949
本当にそれした方がいいかどうかは分からんね。
どちらにしろ強制的に terminate される状況もあるわけだし、
よほど呼んでもらわないと困る処理は
set_terminate 側で対処した方がいい気もする。

955 名前:951 mailto:sage [2008/02/04(月) 10:45:38 ]
vector使った方が上手く処理できそうなのでvectorを使ってみたんですが、デバッグ
で追いかけてみたところコンストラクタが実行されてません。
もしかしてvectorで確保した場合はコンストラクタ実行されないんでしょうか?

956 名前:デフォルトの名無しさん [2008/02/04(月) 10:49:29 ]
STLのvectorでintとかdoubleなどの値を保持しているとき、それらの和は
どうやって計算するのが一番よいですか?
自分は、boost::lambdaをつかってるんですが、なんかもっと他の書き方が
ありそうな気がして。(自分的にはboostがインストールされてないとダメなのが
嫌なんだけど、和、積、など他の演算にも対応がしやすくていいと思ってる)
int tmp = 0;
for_each(v.begin(), v.end(), tmp += boost::lambda::_1);
ここのスレの他の人のやり方を見せてください。


957 名前:デフォルトの名無しさん [2008/02/04(月) 10:54:39 ]
ふつうは0からv.size()-1まで足すだろ

958 名前:デフォルトの名無しさん [2008/02/04(月) 11:24:24 ]
>>957
そうか、、、。
そういわれると、そういう気もする。
なんだか956が恥ずかしいな。わすれてください。


959 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 11:29:25 ]
しかもSTLにあるしなw
tmp = accumulate(v.begin(), v.end(), 0);

960 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 11:44:37 ]
>>955
コピーコンストラクタ書いてる?



961 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 11:45:08 ]
a > b であるunsigned int同士の引き算 b - aの動作は仕様によると
どうなるのでしょうか?

それと、ビットシフト演算子が算術シフトか論理シフトになるかどうかは
環境依存であってますか?

962 名前:デフォルトの名無しさん [2008/02/04(月) 11:55:12 ]
すみません。windowsXPで、eclipse+CDT+cygwinで勉強しています。
scanfなどで変数値を入力するプログラムを書いたとき、
事前に表示する「数字を入れてください」などの文章が出ず、
scanfに値を入力する待機状態になってしまいます。
どうしたらよいのでしょうか。
すみません。お教えください。






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

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

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