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


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

C++相談室 part95



1 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 04:55:24.99 ]
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part94
toro.2ch.net/test/read.cgi/tech/1329512856/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.78【環境依存OK】
toro.2ch.net/test/read.cgi/tech/1331894668/

■長いソースを貼るときはここへ。■
 codepad.org/
 ideone.com/

18 名前:デフォルトの名無しさん [2012/05/08(火) 21:45:33.62 ]
>>16
やっぱりそうですか。
通信周りの処理なんですが、既存のAPIと挿げ替えただけで動くと思って安請け合いした結果、
思った以上に面倒だったので困ってしまいました。

あまり手を加えずに既存のソースを流用したかったんですが、難しいですかね。
ありがとうございました。

19 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 22:00:07.36 ]
日本の失われた20年は在日マスコミの大嘘―日本は金融資産を増やし、成長を続けている

クルーグマンが、実は日本の00年代の一人当たりGDPの成長率はEU諸国、そしてアメリカよりも高かった事実を発表した。
バブルによる日本の不景気はあくまでも10年間で、それ以降は実はしっかり成長軌道に乗っていることを示して
失われた20年などというのは間違いで、無知な悲観論者の戯言だったとのこと。

※クルーグマンはノーベル賞やその他の経済学賞を受賞しているアメリカで最も著名な経済学者

image.space.rakuten.co.jp/lg01/80/0000186380/72/img66421dc8zik4zj.jpeg

noahpinionblog.blogspot.com/2012/01/japan-had-one-lost-decade-but-not-two.html
www.nytimes.com/2012/01/08/opinion/sunday/the-true-story-of-japans-economic-success.html?_r=1

20 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 22:22:09.11 ]
STLつかうと一気に実行ファイルサイズが10倍に?!

環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない

すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。

C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?

#include <stdafx.h>
後死ね。

言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。

一応地鎮祭な

21 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 22:55:42.98 ]
もう何年前になるんだっけそれ

22 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 22:58:42.97 ]
winsock と Linux のソケットってそんな違いあったっけ?

23 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 23:02:42.12 ]
read/writeと非同期

24 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 23:14:08.25 ]
AF_UNIXが使えないとか、いくつか関数名が違うとか、インクルードファイルが全然違うとか、
初期化してやらないとまともに動かねぇとか、selectがソケットしか受け付けねぇケチ仕様だとか、
struct in_addrのメンバが違うとか、それくらいかねぇ?

25 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 03:46:32.58 ]
>>21 logsoku.com/thread/hibari.2ch.net/tech/1291890680/24

26 名前:デフォルトの名無しさん [2012/05/09(水) 07:02:21.45 ]
double x,y;
に対して、
!(x>y)

x<=y
の結果って同じですか?
(infとかnanを気にしているわけではありません)



27 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 07:31:29.22 ]
誤差を考慮する必要がある

28 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 07:39:26.70 ]
そこがよくわからないのですが、
ビットレベルでそれぞれの不等式を実装した時にどういうことをやってるか教えてもらえませんか?
自分はx<=yを使わないようにしているのですが、誤差の意味でx<yのほうが優れていると言い切っていいのですか?

29 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 07:56:04.13 ]
同じですか?なら同じと言っていい

何をしたいかによるが、前後の誤差を考慮することが多いという話

30 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 08:02:45.17 ]
x yがともに浮動小数点数の計算結果の場合、


31 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 08:04:58.85 ]
…誤差がありうるから、等号を含む比較にあまり意味がない

32 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 08:49:15.53 ]
template <T,U>
bool compare(T x, U y) {
return x<=y;
}
みたいに使うので、intの場合にも同じ実装が使えることは(いまの目的では)けっこう重要です。
上にあるようにビットレベルで同じなら何の問題もないですよね?

33 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 11:09:32.29 ]
浮動小数点の何を等しいとするかは
目的とする精度によって違うから

34 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 11:15:30.34 ]
>>32
あんたがそれでいいのなら、それでいいよ。
うちじゃ話にならないけどね。

35 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 13:52:50.05 ]
>>34
単純な話、
bool compare(double x, double y) {
return !(x>y);
}

bool compare(double x, double y) {
return x<=y;
}
の結果が、doubleで許される全値の組み合わせについて同じかどうか聞いてるだけなんですが。
違うなら違うと言ってくれたらいいのに。

36 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 14:25:50.25 ]
全値の組み合わせを試せばいい



37 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 15:00:59.78 ]
心配なら8桁ぐらいで切り捨てておけ

38 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 15:57:01.60 ]
>>35
それが同じかどうかは環境依存。

39 名前:片山博文MZボット ◆0lBZNi.Q7evd [2012/05/09(水) 16:41:00.33 ]
>>35
コンパイラのアセンブリ出力オプションを試せば、
!(x>y)とx<=yの違いが分かる。

40 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 18:29:51.05 ]
シングルトンってRelease()があるのが一般的なの?
解放した後に再確保できると、シングルトンと
グローバル変数のインスタンスと違いがはっきりするけど。

初期化が一度しか行われないこともシングルトンの用件だとしたら
解放されちゃまずいよね。

41 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 18:54:59.09 ]
俺ならとりあえずRAIIなラッパかデリータ付きスマートポインタで
参照カウンタ付けとく
カウンタ0で解放とかするかどうかは内容次第じゃね

42 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 19:34:42.86 ]
別に”シングルトン”の条件なんてどうでもいいな
そんな概念なんて教条的なOOPデザパタカルトのキチガイが気にするだけ

43 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 19:53:40.54 ]
デザパタって「名前付けただけ」なんだよね
初心者への紹介も兼ねるけど

44 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 20:53:21.87 ]
いや。デザパタ本にも書いてあるけど、
デザパタがあって、名前がある。
まだ名前の無いデザパタも複数有る。
デザパタ本は、前書きに有るとおり、
複数あるデザパタから特に良く使うものを抜き出して
紹介しているだけで、デザパタ本に書いてなければ
デザパタに非ずというような物でもない。

45 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 20:55:50.34 ]
>>40
手段を目的にするなよ。
目的が達成できて問題がなけりゃ
どんな形式でもいいだろうが。

46 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 22:10:34.39 ]
>>44
複数あるって何だよw有限個じゃねーんだから
設計なんて無数だろ

名前が付いて初めてデザパタだよ
アレは銀の弾丸なわけでもなく
名前を付けることが他者との意思疎通に有用ってのが主旨だろ

典型例の紹介だけなら入門書にでも書いときゃいいんだよ



47 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 22:37:45.31 ]
>>46
「オブジェクト指向における再利用のためのデザインパターン 改訂版」
本位田 真一/吉田 和樹 監訳

この本のp13〜15に書いてあった内容引っ張っただけだし、
お前は、お前のデザパタ定義を貫けばいいんじゃないか?

48 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 23:00:49.21 ]
シングルトンクラスの利用者は
コンストラクタ・デストラクタを意識しなくていいよね?

49 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 23:07:08.47 ]
>>47
ああ、お前もお前のデザパタ定義を貫けばいいと思うよ

Design Patterns: Elements of Reusable Object-Oriented Software
>In general, a pattern has four essential elements:

>1. The pattern name is a handle we can use to describe a design problem, its
solutions, and consequences in a word or two. Naming a pattern immediately
increases our design vocabulary. It lets us design at a higher level of
abstraction. Having a vocabulary for patterns lets us talk about them with
our colleagues, in our documentation, and even to ourselves. It makes it
easier to think about designs and to communicate them and their trade-offs
to others. Finding good names has been one of the hardest parts of developing
our catalog.


50 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 23:07:52.05 ]
常識的な範囲内で美味いことやってくれるはずだから気にしなくて良い。

51 名前:49 mailto:sage [2012/05/09(水) 23:11:59.82 ]
一応ソースってことで
my.safaribooksonline.com/book/software-engineering-and-development/patterns/0201633612/chapter-1-introduction/3

52 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 23:19:23.92 ]
>>49
そらデザパタカタログに乗ってるものは名前ついてるわなw
一部だけ抜粋するんじゃなく、金だして一度全文読んどけよ

53 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 23:30:04.50 ]
どうでもよろ

ま、デザインパターンの意図としてはパターンを有限個にしたいということであって>49で正解だが
可算無限濃度の設計の中から残すだけの価値があるパターンがこの先可算無限濃度見いだされる可能性は
>49とて否定できないハズ
なにしろ「洗練されたコード」と言うのと同じで数学的基準があるようでない世界だからな

54 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 23:45:47.55 ]
「何がパターンで、何がパターンでないかは、人それぞれである。」

55 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 23:53:26.18 ]
パターン入った!

56 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 23:56:24.63 ]
シングルトンさえできりゃ他はいらん



57 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 00:01:07.16 ]
>金だして一度全文読んどけよ
いや、お前が読んどけよ
どうやってあのURLを見つけたと思ってんだよ

>>53
俺は>>44
>まだ名前の無いデザパタも複数有る。
を否定しただけ
カタログにした理由、名前を付けることの意義
何故GoFがパターンに不可欠な4要素の第1項目をpattern nameにしたか、そういった話

あれを「さいきょうの設計かたろぐ」だと思ってる層から
意味不明な信者と、アンチが出てくるんじゃないかね

58 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 00:02:18.35 ]
>>56
Factory MethodとStateぐらいは知っとこうよ

59 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 00:06:38.78 ]
>>48
しなくていいけど
むしろシングルトンであることを意識しないで済む方がいいと思う
後でシングルトン(プロセス毎)からスレッドローカル(スレッド毎)に変える場合も楽

60 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 00:08:57.21 ]
スレッドってどういうところに使ってるの?

61 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 00:14:22.10 ]
>>58
んなもん聞いたことないわ

62 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 00:19:12.98 ]
>>60
forkが使えない環境のときとか
GUIで重い処理中にキャンセルボタン出すときとか

63 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 00:20:49.30 ]
>>60
ついぞ昔ならGUIプログラムの非GUI処理。
特にI/O関係。マルチプロセッサーやマルチコアが
現れてからは、並行処理で使われる事が増えつつ有る。

64 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 00:22:05.96 ]
>>56
Singletonの方がよっぽど要らんだろうに・・・

65 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 00:27:55.90 ]
結局はお互いのクラスでデータをやりとりできりゃ何でもできるようになった
シングルトンを知ってすべて解決した

66 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 00:33:25.78 ]
グローバル変数より幾らかマシってものだしな

俺は実態がシングルトンでも
初期化引数かスレッドローカル経由かインジェクションで
xxxContextとかを渡す方が好み



67 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 00:41:28.38 ]
>>61
Factory Methodを使うとC#におけるBeginInvokeみたいなことがサッと安全にできる
ていうかFactory Methodでクロージャを生成するのだと考えればマルチスレッド状況をスキーリ安全に扱える

Stateはキーマトリックスの処理ルーチンを書くのに個人的に重宝した

>>56
マルチスレッド状況下で呼ばれるSingletonは奥が深い…




68 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 00:45:48.49 ]
フィライウェイトとか、ファクトリーとか入出力と組み合わせる事は有るけど、
クラスの外から見て状態を持ち変化があるものには絶対つかわんな
ループ中にどっか別の関数でシングルトンが書き換えられてたらデバッグしづらすぎる


69 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 01:10:58.56 ]
グローバル変数がごく簡単に使える C++ でシングルトンとかマッチポンプすぎる。

70 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 01:14:27.49 ]
グローバル変数を使うのが難しい言語の方が珍しいだろ

71 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 01:26:41.19 ]
別にC++もJavaも変わらないよな
ideone.com/aOWhQ
ideone.com/rPUpT
グローバル変数に直よりかは関数経由でアクセスしたり仮想関数使える方が良いだろう
まぁグローバル変数もシングルトンも使わない方が良いけど

72 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 09:59:09.71 ]
自前クラスはポインタ使わず全部参照でやっていますが、
メソッド関数を呼び出すコードを見て、
「この変数は値を渡しているだけなのか、書き換えられて返ってくるのかどうか」がぱっと見分かりません。
(引数がconstかどうか調べれば判断つきますが、面倒で付けずに済ますこともあるし、呼び出し側のソースを流し読みしてるときに分かりずらい)

書き換えないなら必ずconst、呼び出し側のソース見てるときは、メソッドにマウスカーソル合わせて引数をチェック、
というやり方しかないのでしょうか?

73 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 10:07:28.94 ]
>>72
そういうことにならないように関数名や引数並び、引数に使う変数名をちゃんとつける。
どうやったところで関数宣言を見ないのなら正確に把握というわけにはいかない。

74 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 11:18:37.08 ]
>>72
それを嫌って、書き換える場合はポインタ、書き換えない場合はconst参照、と使い分ける人もいる。
私の場合、関数名にgetなどが含まれていて戻り値のない関数は、一番目の引き数が書き換え対象だ。

75 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 11:57:23.49 ]
bool hoge(){
bool result = false;
/* いろいろ処理*/

// 戻り値の用意
return (ioResult&&sockResult&&time<10);
}

なんて関数をコーディングした場合、
if(hoge())
ではなく、戻り値必要ないので
hoge();
なんて書いた場合は、コンパイラの最適化でvoid版hoge()を作って、returnの行を出力しない、
みたいなことはしてくれるんでしょうか?
普通にbool版hoge()が呼ばれて、普通に関数内全部実行して、戻り値はテンポラリかなにかに入れてすぐ捨てるんでしょうか?

76 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 12:02:41.77 ]
>>75
return の式に非ローカルな副作用が一切無いのであれば、そういう最適化は可能ではある。
ただしあまり大きな違いにはならなさそうなので、実際に最適化されることは少なくとも現時点では
あまりないだろうと思うし、気にするべきでもないと思う。



77 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 12:04:56.89 ]
最適化されたコードのレジスタ確認してください

78 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 12:27:30.80 ]
>>75
そのhoge()が同一翻訳単位内から呼ばれた場合は、インライン展開される場合がある。
そのとき、そのreturn文には副作用がないので省略される可能性は高い。
# 一部のコンパイラでは、同一翻訳単位外からでも最適化されうる。
とは言え、void版のhoge()が用意されるわけではない。

79 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 12:34:37.23 ]
>>75は無理だろ。
hogeがstatic関数とかでコンパイル単位内ローカルなら可能かも知れんが
やってるコンパイラは無いだろう。

80 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 13:01:08.60 ]
ああそうかインラインなら最適化できるね

81 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 13:41:32.29 ]
staticじゃなくてもVC++のLTCGとかならやってくれるんじゃね

82 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 13:57:55.02 ]
>>81
確かにそうかも。試してないけど。
最適化技術って進んでるんだね。

83 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 22:33:31.08 ]
Microsoft (R) C/C++ Optimizing Compiler ならDLLに入ってても
インライン展開してくれるし、親クラスにキャストしてるオブジェクトの
仮想関数ですらインライン展開してくれるからな。

84 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 23:14:48.25 ]
オブジェクトファイルかなんかと勘違いしてんじゃないか

85 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 23:23:53.10 ]
勘違いってなんの事を言っている?

インライン関数のインポートとエクスポート
msdn.microsoft.com/ja-jp/library/feffc7b5(v=vs.80).aspx

86 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 23:52:13.14 ]
それはインライン関数をDLLに入れられるって話で
DLL内の関数をインライン展開できるって話じゃないだろ



87 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 23:58:02.23 ]
意味が解らないの?

注意
インポート インライン関数は、DLL のバージョン間で矛盾することがあるので、
インライン関数のインポート時は注意が必要です。インライン関数は、アプリケーション コード内に展開されます。
このため、関数を書き直した場合は、アプリケーション自体をコンパイルし直さないと、
インライン関数は更新されません。通常、DLL 関数は、関数を使うアプリケーションをビルドし直さなくても更新できます。


88 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 00:20:06.29 ]
それのどこがDLLの関数をEXE側でインライン展開できると読めるんだ?

89 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 00:23:33.94 ]
namespaceの別名って、undefみたいに消せないのか?
どうせアセンブリコードに展開したときは、本来の名前空間の
名前になるんだから、不要になったら削除できてもいいだろうに

90 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 00:26:30.84 ]
>>88
インライン展開しないなら、こんな事わざわざ書く必要ないだろ。
逆に「DLLにインライン関数定義してもインライン展開できません」と書くのが筋だろ。

>インポート インライン関数は、DLL のバージョン間で矛盾することがあるので
>。通常、DLL 関数は、関数を使うアプリケーションをビルドし直さなくても更新できます。

91 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 00:38:58.63 ]
インライン関数を定義したヘッダとDLLが矛盾するケースがあるって話なんだが、それ
そもそも、リンク時に使うのはインポートライブラリであってDLLそのものは一切使わない


92 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 00:44:47.35 ]
ヘッダーじゃねぇよ。cppに定義して、__dclspec(export) inline 〜と書いた関数でも取り込まれる。
DLLを参照してるアプリケーションをコンパイルするとき、DLLが参照できればぶっこ抜かれるんだよ。


93 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 03:34:47.68 ]
韓国で貯蓄銀行4行また営業停止
仰天!会長は元偽ソウル大生、中国密航で逮捕
jbpress.ismedia.jp/articles/-/35163



自己資本比率5.6%、実はマイナス16.2%だった

営業処分の直前に漁船で密航を試みた会長の正体

金会長は、未来貯蓄銀行に対する営業停止処分が不可避と見て、かねて準備していた密航ルートを使って中国に逃亡しようとした。
金融委員会は未来貯蓄銀行など4つの貯蓄銀行を営業停止処分とした。
来貯蓄銀行の場合、粉飾決算を重ね、「5.67%」と発表していたBIS基準に基づく自己資本比率が実際はマイナス16.2%であることが明らかになった。
jbpress.ismedia.jp/articles/-/35163

◆貯蓄銀行とは庶民専用の銀行

貯蓄銀行(ちょちくぎんこう)とは、個人の貯蓄を引き受けることを主目的とする金融機関である。
庶民に対して倹約を奨励し貯蓄により生活を安定させるための公益的な金融機関。
ja.wikipedia.org/wiki/%E8%B2%AF%E8%93%84%E9%8A%80%E8%A1%8C

94 名前:デフォルトの名無しさん [2012/05/11(金) 05:33:41.33 ]
struct X {
const int x;
X(istream& is) try: x(read_int(is)) {
catch (何か) ...
}
const int read_int(istream& is) const {
int x;
is>>x;
if (x<0) throw 何か;
return x; }
};

int main()
{
X a(cin);//負の数が与えられるまで読み続ける
}

みたいなことってできませんか?

95 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 06:21:28.72 ]
X(istream& is) {
int x;
for (;;) {
is >> x;
if (!cin) {
cin.clear();
cin.ignore( 1024, '\n' );
continue;
}
if (x < 0);
return ;
}
};

96 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 06:30:32.40 ]
>>94
何がしたいの?



97 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 06:50:37.13 ]
>>94
のポイントは、
- constメンバを初期化子を使って初期化していること
- tryブロックをそこにかまして、例外処理にしていること
です。
無論、95みたく普通にやればいいのだが。

98 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 07:11:41.62 ]
>>95
はread_intね。いけてる気がする。

99 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 07:19:17.27 ]
try {
cin >> x;
} catch (...) {
入力を求める
}
みたいなことを初期化子についてやりたかった。

100 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 07:33:31.87 ]
int read_int(istream& is) {
try {
int x;
cin >> x;
return x;
}
catch (...) {
return read_int(is);
}
}
みたいな雰囲気。
例外の使い方がよくわからないし、istreamは例外投げないのかな・・・
ひっかかってくれない。

101 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 07:39:30.34 ]
try {
int x=-1;
cin >> x;
if (x<0) throw x;
return x;
}
catch (int input) {
cerr << input << endl;
read_int(is);
}
でイケた。かっこよくね?

102 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 07:42:50.74 ]
初心者だからアホーなことしてたら指摘してほしいです。
こんなので大丈夫なのかしら・・・。

103 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 07:44:39.57 ]
status = !status;

これが右に偏ってる気がして気持ち悪いんだけど
どうにかならない?

104 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 08:19:53.45 ]
うん

105 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 08:30:41.25 ]
intだと上のでいいのですが、
double x; cin >> x;
の結果がよく分かりません。

stdinに数値でない"abc"を入れたときxは0にセットされるようなのですが、
doubleなのでx==0で判定するのも気持ち悪い。
cinが例外飛ばしてくれたりしますか?

106 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 08:36:01.98 ]
飛ばさねーよ



107 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 08:43:35.84 ]
やっぱif(cin>>x)で判定して、自分で例外飛ばせばいいか。

108 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 08:51:53.96 ]
ところで95で
cin.ignore(1024,'\n');
としてる箇所ですが、INT_MAXとかを引数にしてもいいんですかね?
決め打ちを避けたいだけなんだけど。

109 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 08:56:45.82 ]
>>105
std::cin.exceptions(std::ios::failbit | std::ios::badbit) ってやれば例外飛ぶよ。
cin に設定しちゃうと思わぬところで飛んで困るかもしれないけど。

110 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 09:03:59.04 ]
>>109
へぇ、そんなのがあるんですね。
JavaだとデフォルトでIOException飛ばすから、コンパイル通すまで面倒だったりしますが。

>>108
numeric_limits<streamsize>::max()
を第一引数に渡すのはやりすぎでしょうか?

111 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 09:20:10.07 ]
>>107
C++設計者の例。
www2.research.att.com/~bs/bs_faq2.html
の↓あたり。
while(cin>>d) v.push_back(d); // read elements
if (!cin.eof()) { // check if input failed
cerr << "format error¥n";
return 1; // error return
}


112 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 11:08:35.52 ]
音声ファイルのパスSoundPathを受け取り、StartSampleからEndSampleまでの標本の値を調べ、
その区間の音量を返す関数を作ったのですが、現状ではwavファイルにしか使用できません。
mp3とoggにも使用できるようにしたいのですが、どのようにすれば可能ですか?

int CBgm::VolumeMean(int StartSample,int EndSample,char SoundPath[]){
FILE* fp;
errno_t err;
short int LVol=0,RVol=0;
int Ave=0;
LONGLONG Sum=0;
if((err=fopen_s(&fp,SoundPath,"rb"))!=0){
return 0;
}
fseek(fp,44+StartSample*4,SEEK_SET);
for(int i=0;i<EndSample-StartSample;i++){
fread(&LVol,sizeof(LVol),1,fp);
fread(&RVol,sizeof(RVol),1,fp);
Sum+=MAX(abs(LVol),abs(RVol));
}
if(EndSample-StartSample>0){
Ave=(int)(Sum/(EndSample-StartSample));
}
fclose(fp);
return Ave;
}

113 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 11:34:52.67 ]
前もってユーザが自分でwavに変換するようマニュアルに書いておく

114 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 15:48:55.12 ]
ま、ファイルから直接〜じゃなくて、一旦展開してから同じように調べるとかでいいんじゃね?

115 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 15:49:55.94 ]
適当なフリーの変換ツールでも呼べばいいんじゃね?

116 名前:デフォルトの名無しさん [2012/05/13(日) 09:05:43.48 ]
class X {
int a,b;
inline int f() { return a+b; }
int g() { return a+b; }
int h();
inline friend int plus(X& x) { return x.a+x.b; }
};
inline int X::h() { return a+b; }

hの定義につけたインライン要請は意味があると思うのですが、
クラス内で定義しているfにつけたところで、何もつけないgとまったく同等なのでしょうか?
あと同様にクラス内に書いたfriendについてもお願いします。



117 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 09:11:11.31 ]
inline int X::h()これ以外全部意味がない

118 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 10:13:52.49 ]
クラス定義内でメンバ関数・friend関数の定義を書いた場合、暗黙的にinlineがついてるものとみなされる






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

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

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