X



C++相談室 part136
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ bf81-LHz9)
垢版 |
2018/06/07(木) 23:40:12.36ID:GNQuDMaA0
次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part135
https://mevius.5ch.net/test/read.cgi/tech/1522495206/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1509780815/

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

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

----- テンプレ ここまで -----
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
0424デフォルトの名無しさん (ワッチョイ 1fb3-RzAk)
垢版 |
2018/06/22(金) 18:20:27.94ID:0qBHNE4T0
一行おきになってから考える。
0426デフォルトの名無しさん (ワッチョイ 9fd2-GwbS)
垢版 |
2018/06/22(金) 19:10:51.02ID:PS4w2oBw0
>>422
クラス変数に統合されるとなぜ問題ないのですか?
そもそも統合とはどういう状態でしょうか。
ネームスペースにstatic constを書くのとあまり違いはないように思うのですが、どう違うのか教えてもらえませんでしょうか。
0432デフォルトの名無しさん (ワッチョイ ff0d-GwbS)
垢版 |
2018/06/22(金) 21:16:32.93ID:sLKAbUw90
   ___
  /彡彡))
  |彡( >
  ノノノ ヽ丿 <プロでござい
 / ̄ ̄ ̄\  n_
`/| _[]_ |/\ ( )
∧||バ| Y\ `/ /
\||カ| | \_/
(|  ̄ ̄ |
 |____|
 ||_|i|_||
 | ー|ー |
0436デフォルトの名無しさん (ワッチョイ 7fd2-XQuB)
垢版 |
2018/06/22(金) 23:02:52.73ID:tZy0W+/k0
まじめにデザインパターンを学習したくて書籍を探しているのですが、Javaで
説明しているものばかりで困っています。Javaは全く知りませんし、覚えるつ
もりもありません(自分にとっては不要な言語なので)。

C++でデザインパターンを開設している書籍を教えてください。
0438デフォルトの名無しさん (ワッチョイ 7f7e-09r9)
垢版 |
2018/06/22(金) 23:40:54.94ID:m8knQ0QO0
サンプルがJavaで書いてあるかどうかって関係あるか?
デザパタの本ならJava特有のことはやってないはず
何をやっているのかを理解してそれをそのまま他の言語に当てはめればいい
0445 ◆QZaw55cn4c (ワッチョイ 7f60-DJU/)
垢版 |
2018/06/23(土) 00:19:38.99ID:OlLfOCSW0
>>436
結城ならば簡単なJava だから、C++ の知識で Java の字面は追えますよ(なんとなくわかる)
私は結城 Java を C++ に書き直して習得しました
0446デフォルトの名無しさん (ワッチョイ ff9d-E6HK)
垢版 |
2018/06/23(土) 02:15:46.97ID:nmsTY6vF0
C#やJavaが動くのにC++を使うのは辛い。非常につらい。絶対にやめたい。にも拘らず
未だにC++を進める人がいるのは残念だ。
一方C++は組み込みには非常に威力を発揮する。しかし組み込みではいまだに90%
の人がCを使う。それはなぜなのか?
 CとC++ではスッポンと月ほどの違いがある。しかし残念ながらそれは
C++をフルに使える場合であって、フルに使える場合ならC#やJAVAを使った方がいいわけで
フルに使えないケースであるからこそ、C++を使うのが正しいのであるから、やはりC++は
Cに比べて月ほどではない。しいて言えば月というよりは牛だろう。ともすれば牛よりも
スッポン料理が高価なように、月になれるのに牛ではやはりかなり残念なのである。
どういう切り口でも残念な言語、それがC++だ。
0447デフォルトの名無しさん (ワッチョイ ff9d-E6HK)
垢版 |
2018/06/23(土) 02:24:54.31ID:nmsTY6vF0
C++開発をした人がC++の本を書いていて、先輩に「読め!!!」と勧められたので読んで
みたが非常にわかり難い。こんな頭の構造をした人が作った言語だからきっとわかり難いの
だろうと思う。一言でいうと簡単なことを複雑に説明する。
C++という言語もアフォほど簡単なことをやたらと複雑に書かなければならないことが多い
という気がする。
0448デフォルトの名無しさん (ワッチョイ ff9d-E6HK)
垢版 |
2018/06/23(土) 02:33:48.53ID:nmsTY6vF0
Headerファイルにメソッドを書かないスタイルは誤りだ。
理由
1.C++以外でそんなスタイルをとっているものはない。
2.なぜならメソッドも実体ではなく型だからだ。分離するメリットはないがデメリットは多い。
0449デフォルトの名無しさん (ワッチョイ 7f7e-09r9)
垢版 |
2018/06/23(土) 02:37:32.71ID:gROM9xFw0
>>446
コピペかと思ったけど違うのか
何でC#を使うべきケースとC++を使うべきケースを分けられない人が出てくるんだ?
インタープリタやC#やらがクソ簡単に書けるのはその下で煩わしいことをやってくれてる人がいるからだ
0451デフォルトの名無しさん (アウアウカー Sa93-x6qn)
垢版 |
2018/06/23(土) 07:07:27.53ID:CK76JyQna
c++が複雑なのはわかるがどんどん簡単に書けるように進歩してるだろ。

autoとかrange-based for loopとかconstexprとかlambdaとか。

他の言語並みに簡単に書けるようになるのはまだまだかかるとは思うが。
0454デフォルトの名無しさん (ワッチョイ ff9d-E6HK)
垢版 |
2018/06/23(土) 08:39:12.93ID:nmsTY6vF0
>>412
簡潔で綺麗だ。素晴らしいと思う。
0460デフォルトの名無しさん (ワッチョイ 1fb3-RzAk)
垢版 |
2018/06/23(土) 14:54:46.34ID:hRKVQ4t10
>>444
Javaは高価な機器を買わせるためにデザインされた言語だから用途が違うけど、他はソフトウェアを作るためでは?
0465デフォルトの名無しさん (ワッチョイ 7f5e-lC4z)
垢版 |
2018/06/23(土) 18:08:17.77ID:JrW4+gjv0
Expression templateでmatrix乗算、それが無理ならベクトルの内積
(それもコンパイル時計算じゃなくてコンパイラの遅延評価を利用して
一種の構文を記憶したもの)を計算するETを解説してるところしらないかな。

ベクトルのETによる遅延評価計算はC++テンプレートテクニックあるから
いいけどさ。

Matrixがわからんのよ。uBLAS、MET、TVMET探してもそれらしきソースコード
が特定できん。
0466デフォルトの名無しさん (ワッチョイ 7f5e-lC4z)
垢版 |
2018/06/23(土) 18:40:25.11ID:JrW4+gjv0
Expression templateは本命じゃない。難しすぎる。でも演算子オーバーロードの
弱点である一時オブジェクトによるロス(a*aみたいな乗算も含めて)を解決する
方法を20年以上前に考えたけど、それと速度を比較したい。
0472デフォルトの名無しさん (ワッチョイ 9fbd-yRyg)
垢版 |
2018/06/23(土) 22:49:55.46ID:uP340TqJ0
アプリ次第じゃね。
数値計算やアルゴリズムやってると、リソース、速度、必要精度に応じて、整数、浮動小数点、多倍長整数、有理数等々に対応できるように作るから、むしろテンプレしかない。
0473デフォルトの名無しさん (ワッチョイ 9f83-DJU/)
垢版 |
2018/06/23(土) 22:54:31.33ID:lx9rCNA70
>>470
うまい。プログラムがテンプレートだらけになってる奴は必死にマイレゴブロックを作ってる。
stl、boost、atl、既成レゴブロックは数多く提供され使われてるのだ。

そんなに理想の車輪がほしければ、
それこそ新言語を作ればいい。C++にアホ機能追加してる糞どもに言いたい。
0475デフォルトの名無しさん (ワッチョイ 7f7e-09r9)
垢版 |
2018/06/23(土) 23:07:53.81ID:gROM9xFw0
>>473
何言ってるのかわからん
stlやboostはブロックを作るための材料くらいの位置づけだぞ
テンプレートがstlのような比較的低レイヤーなところでしか使わないとでも思ってるのか
レゴブロックと言ってるのは大量のモジュールを読み込んで継ぎ接ぎしてるようなJSやPythonのコードのことだ
0479デフォルトの名無しさん (ワッチョイ 9f83-DJU/)
垢版 |
2018/06/23(土) 23:45:15.10ID:lx9rCNA70
>>474
過去の大量のC++コードを全否定する機能を追加するなら新言語にすべし。
Java、C#みなそれで成功している。C++の名前を借りないと使ってもらう自身がないならキミは向いてない。
0483デフォルトの名無しさん (ワッチョイ 9f83-DJU/)
垢版 |
2018/06/24(日) 00:13:58.88ID:rLugm4Eu0
それ。C++は当初から問題ある欠陥言語だから、素晴らしい新しい言語を作るべき。
古い大量のコードはもうどうにもならない。誰も更新費用の予算を計上してくれない。
COBOLと同じなのだ。老人のおれはC++と心中する。

おまえら若者は新しい船で新しい世界に旅立ってくれ。俺の屍を越えてゆけ。
0486デフォルトの名無しさん (アウアウウー Sae3-E6HK)
垢版 |
2018/06/24(日) 00:46:53.92ID:f93Q4KExa
老人はC++03と心中してくれ。俺はC++14以降の船に乗る。
0489デフォルトの名無しさん (ワッチョイ 1fb3-RzAk)
垢版 |
2018/06/24(日) 01:41:30.34ID:AKYv/9KI0
vectorはdata()が連続した領域を返さないといけないのが大きな制約になってるかも。
0493デフォルトの名無しさん (ワッチョイ 1f50-ddCb)
垢版 |
2018/06/24(日) 08:22:28.59ID:lrwvyFHq0
>>484
テンプレートは魔法じゃない

同等の速度を出す為には結局全て特殊化することになるし、
インターフェースも型によって違う方が良いこともある

性能、リソース、...
突き詰めれば全て特殊化

テンプレートは妥協だ
0495デフォルトの名無しさん (ワッチョイ 9fd2-GwbS)
垢版 |
2018/06/24(日) 09:08:30.29ID:6XPmSU1L0
cstdio と STLの連携を深めて欲しいね。

・FILE* に basic_string をバッファとして渡してメモリに読み書きする機能が欲しい。
・fgets() で得られた文字列長を再計算するコストが無駄なので、文字列長も取得できる機能拡張関数が欲しい。

何らかの処理の過程で副産物として得た文字列長を捨てて、別の場所で文字列長を再計算する無駄は、かなり多いと思う。
0497 ◆QZaw55cn4c (ワッチョイ 7f60-DJU/)
垢版 |
2018/06/24(日) 10:27:01.80ID:rYGVoBbS0
>>496
基底クラスのポインタで複数の派生クラスのポインタとして振舞えるの?
template を使ってポリモーフィズムを実装できるとでもいうの?
0498デフォルトの名無しさん (ワッチョイ 9fd2-GwbS)
垢版 |
2018/06/24(日) 10:27:08.87ID:6XPmSU1L0
>>496
FILE*を使う関数にbasic_stringをc_str()で渡すのではなく、
setvbuf() のようにFILE*の内部で使うバッファを basic_string に置き換える意味で言いました。
fprintf() でbasic_stringに書き込むことが可能になるイメージ。
C++にはpopen()で開いたパイプFILE*に相当するiostreamがないのでこれで代用可能。
0503デフォルトの名無しさん (ワッチョイ 7f7e-09r9)
垢版 |
2018/06/24(日) 12:56:28.50ID:l/Tfpprp0
>>497
ポリモーフィズム=継承ではない
継承もポリモーフィズムを実現するための手法の一つにすぎない
ざっくり言えば同じ名前で異なった振る舞いをするもののことを言う
関数オーバーロードもポリモーフィズム
0507 ◆QZaw55cn4c (ワッチョイ 7f60-DJU/)
垢版 |
2018/06/24(日) 16:48:47.47ID:rYGVoBbS0
>>503
>関数オーバーロードもポリモーフィズム
関数オーバーロードはコンパイル時には(どこからどこへコールしているかが)確定しているものですね
そういうものに「ポリモーフィズム」を当てるのは抵抗があります

もっとも wikipedia をみると、私の考えているポリモーフィズムは「部分型付け」(subtyping/inclusion polymorphism) としてサブクラス化されています
これは私の認識を修正しないといけない…
0511デフォルトの名無しさん (ワッチョイ ff0d-GwbS)
垢版 |
2018/06/24(日) 20:51:47.44ID:NxOKC53L0
拡大解釈すればできちまうものだからな
いくらでも俺様解釈し放題
それを聞かされている衆目がついていけないと言ったとき
強弁するやつと謙虚なやつでリトマス試験紙みたいになる
0512デフォルトの名無しさん (ワッチョイ 7f7e-09r9)
垢版 |
2018/06/24(日) 21:00:48.39ID:l/Tfpprp0
もともとプログラミング言語の理論の方から出てきた言葉なので拡大解釈ではないでしょ
オブジェクト指向言語がそれらの理論から引用してオブジェクト指向におけるポリモーフィズムとは継承とオーバーライドによるサブクラス化のことだと言っているだけ
0514デフォルトの名無しさん (ワッチョイ 9fc3-loLi)
垢版 |
2018/06/25(月) 19:33:27.29ID:INT0btTo0
個人的にはどっちかというと「動物ってのはワンワン鳴く奴のことだろ?猫や馬まで動物と呼ぶのは俺様解釈の拡大解釈」
って言ってるような滑稽さを感じる
■ このスレッドは過去ログ倉庫に格納されています

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