X



C++相談室 part150

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2020/03/24(火) 00:04:33.93ID:YFRNwZnv
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part149
https://mevius.5ch.net/test/read.cgi/tech/1581974381/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1556142878/


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

[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)

テンプレここまで
0002デフォルトの名無しさん
垢版 |
2020/03/24(火) 02:17:13.57ID:9OEj9KSc
「ちんちんプラプラソーセージ」という言い伝えがあるがの、
それは、「C + + 双生児」、つまり、C++と双璧をなす言語の出現を予言したものだったのだよ。
0003デフォルトの名無しさん
垢版 |
2020/03/24(火) 13:19:52.34ID:j37mJqK4
STLつかうと一気に実行ファイルサイズが10倍に?!

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

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

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

#include <stdafx.h>
後死ね。

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

---- テンプレ ここまで ----
0005◆QZaw55cn4c
垢版 |
2020/03/24(火) 23:27:02.26ID:KtfI6cNR
https://mevius.5ch.net/test/read.cgi/tech/1581974381/937

https://ideone.com/Jso95a
江添さんが間違って「末尾再帰である」と断定した記述方法 f() を、
正しく末尾再帰で記述すると g() になります。
これを最適化して h() とするのには、関数 g() を特別に解析することなく機械的に変換するだけでいいのです
最適化に機械的に変換するだけでいい、というのが末尾再帰の本質です

したがって >>934 の制限は妥当でしょうね
0006デフォルトの名無しさん
垢版 |
2020/03/25(水) 07:20:29.52ID:2w2fR+tZ
941 自分:デフォルトの名無しさん[sage] 投稿日:2020/03/21(土) 19:59:14.68 ID:uResqVEz [3/3]
「末尾再帰」という情報処理用語を定義しているJIS規格票もしくは
"tail recursion" という情報処理用語を定義しているISO規格票の
条項を出せるやついるの?

これだけ上から目線でマウント取っといて
あげくオレ用語だったら恥ずかしいぞ
0007はちみつ餃子 ◆8X2XSCHEME
垢版 |
2020/03/25(水) 17:42:48.23ID:lGt7vmdl
JIS X 0007 に「再帰」に関連するいくつかの用語があるけど、
その周辺に「末尾再帰」は書かれていないので情報処理用語の規格として
定義されたものはたぶんないんだろうと思う。

用語として定義されてはいないけど、
DSSSL の規格 (JISX4153) に「実装は、正しく末尾再帰を扱えなければならない」という文言として
現れているのは見つけた。
DSSSL がベースにしているのが R4RS (← Scheme の規格の第4版の通称) であることも書いてあるから
ここでいう末尾再帰は R4RS が言う末尾再帰だと考えていいと思う。
だけど R4RS だとどういう場合が末尾再帰なのかようわからんのよなぁ。
(形式的意味論で書いてあるところを読み解ける人にはわかるのかもしれない。)

R5RS 以降だとだいぶん分かりやすく書いてあるんだけど。
0013デフォルトの名無しさん
垢版 |
2020/03/26(木) 00:08:16.23ID:fd5gxTEt
忍者だが、電車に乗っていたら下痢したのでそおっと席を立ち駅に向かったらしい
0015デフォルトの名無しさん
垢版 |
2020/03/27(金) 12:47:40.21ID:yDbWAejo
禿げや江添さん見て分かる通り。
禿げてる。
0017デフォルトの名無しさん
垢版 |
2020/03/27(金) 22:52:04.36ID:eQxgR1y2
ウルセー ハゲハダマッテロ
    ∧___∧    / / / /
  ⊂( ・∀・)  、,Jし //  パン
   (几と ノ   )  て.彡⌒ ミ 
  //'|ヽソ 彡  Y⌒Y( ´;ω;`)   
/ノ / | \ 彡      l r  Y i|
ヽ/、/ヽ/ ヽ/        U>>3|:_|j
0019デフォルトの名無しさん
垢版 |
2020/03/28(土) 09:50:32.23ID:laMmnOq7
ハゲが作った移動通信会社なんて知らない
0020デフォルトの名無しさん
垢版 |
2020/03/28(土) 16:10:38.05ID:jYzb+dLM
Visual Studio C++ 2019 にて、パフォーマンスプロファイラーを使うと、
__CheckForDebuggerJustMyCode
という関数が呼び出されていて結構な負荷になっています。

デバッグ時にこれをOFFにしたいのですが、どうやって消せばよろしいのでしょうか?
0022デフォルトの名無しさん
垢版 |
2020/03/28(土) 17:20:15.83ID:jYzb+dLM
>>21
見逃してたけろ(´・ω・`)

ありがとう
0023◆QZaw55cn4c
垢版 |
2020/03/28(土) 20:30:35.53ID:WJROMx30
江添氏 C++ 入門にまた誤りを見つけました
https://ezoeryou.github.io/cpp-intro/#nannot-a-number
> int main() {
> double NaN = std::numeric_limits<double>::quiet_NaN() ;
> // true
> bool b = NaN != 0.0 ;
> // false
> bool a = NaN == 0.0 ;
> bool c = NaN == NaN ;
> bool d = NaN != NaN ;
> bool e = NaN < 0.0 ;
>}
こちらで試してみると、bool c = NaN != NaN の値は true でした。
https://ideone.com/dzmyeq

>整数であれば、'a == b'がfalseであるならば、'a != b'なのだと仮定してもよいが、こと浮動小数点数の場合、NaNの存在があるために必ずしもそうとは限らない。
残念ながら、a, b, のいずれかまたは両方が Nan であっても、a == b が false ならば a != b true であることを確かめました

江添さん、だいじょうぶですかね?
0024◆QZaw55cn4c
垢版 |
2020/03/28(土) 20:33:39.15ID:WJROMx30
失礼
×bool c = NaN != NaN の値は true でした。
○bool d = NaN != NaN の値は true でした。
訂正箇所は他にはなく、「a == b が false ならば a != b true であることは、double a, b が NaN であってもいえる」
0030デフォルトの名無しさん
垢版 |
2020/03/29(日) 01:57:11.38ID:KAJzXRPk
デザインパターンのブリッジパターンやストラテジパターンのようなケースで
インターフェースクラスを継承して実装クラスを作る場合、
class If() /* interface */
{
public:
If() {}
virtual ~If*( {}
virtual void func() {}
};

class Impl() : public If
{
public:
Impl() {}
~Impl() {}
void func() {}
};

のようにすると思いますが、Implクラスをさらに基底クラス(ImplBase)と2種類の派生クラス(ImplA, ImplB)に分けたい場合、
多重継承以外でやるには、どうするのが良いでしょうか?
まず If を ImplBase に継承させて、次に ImplBase を ImplA と ImplB に継承させる事になるでしょうか?
その場合、純粋仮想関数func()はどのように書くべきでしょうか? ImplBase も virtual void func()としておいて
ImplA で実装するのでしょうか?
0032デフォルトの名無しさん
垢版 |
2020/03/29(日) 02:26:21.63ID:p3fh4h77
>>30
ImplBaseにどんな役割を持たせたいかによるんじゃない?
ImplAとImplBがそれぞれIfを継承するのでは何が不満なのかをハッキリしないと何を解決すればいいのかわからない
0035デフォルトの名無しさん
垢版 |
2020/03/29(日) 10:02:27.83ID:+/sFre8I
>>23
NaNが「不定」を意味するなら、理論的には
> // false
> bool c = NaN == NaN ;
> bool d = NaN != NaN ;
が正しいんだろう
仕様は上のようになってて、実装依存ということはないか?
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況