C++相談室 part141

レス数が950を超えています。1000を超えると書き込みができなくなります。
2019/02/22(金) 03:07:43.52ID:MgOIx7iK
次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512

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

前スレ
C++相談室 part137 (正しくはpart138)
http://mevius.5ch.net/test/read.cgi/tech/1535353320/
C++相談室 part139
https://mevius.5ch.net/test/read.cgi/tech/1538755188/
C++相談室 part140
https://mevius.5ch.net/test/read.cgi/tech/1547326582/

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

■長いソースを貼るときはここへ。■
 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
2019/03/28(木) 00:53:54.09ID:AOcR4eqo
vector.data()、basic_string.c_str()はCと同じの配列の連続アドレスを保証する数少ないインターフェースでしょ。
2019/03/28(木) 01:07:32.08ID:Csoqrb4z
正直stringがゼロ終端を保証したのはちょっとどうかなと思ってる
いや便利なんだけどさ・・
2019/03/28(木) 01:15:59.09ID:eE4sGejC
>>853
特に不都合無いのだからいいだろう
2019/03/28(木) 01:39:16.25ID:AOcR4eqo
アドレスと一緒にバッファサイズを渡せないAPIが世の中に無数にある。ヌル終端は優しさ。
2019/03/28(木) 03:12:24.24ID:0b3fKrWQ
そもそも printf が
2019/03/28(木) 05:04:36.64ID:fRHhg+J8
>>851
なぜかC言語は固定配列でC++だと動的が基本らしい
前提違うのに速度ガーとか言われてもなぁw
2019/03/28(木) 05:12:10.50ID:3LZYwZb1
>>855
ヌル文字をデータとして扱えない、という決定的なウィークポイントが発生しますね…
昔、ツールがヌル文字を扱えない、という点が後から発覚してとても困った経験があります
2019/03/28(木) 07:13:39.49ID:mfvsZ6Gk
>>851
ようゴCマスター様
マスター様は知らなくてビックリするけど、C++ではvectorやlistは要素数が実行時に決まるときに使うんだ
そして驚くべきことに、Cにも要素数が実行時に決まるときに使うための愚かしい機能がなぜか備わってるんだ
reallocっていうらしいんだけどさ
使うときは確保済みのバッファの長さをいちいち調べて、足りなかったら再確保して必要に応じて要素を全部コピーするらしいっすよ
もちろんそんな馬鹿げたオーバーヘッドを払う奴はC++かぶれのド素人だけだけどな
真のCプログラマは一度確保した配列の自由なインデックスにコピーすることでvectorの無意味なオーバーヘッドを回避し超高速O(1)を実現するのだ
2019/03/28(木) 08:00:11.54ID:PaLXcDGr
なんかツッコもうと思ったら既に>>813に書いてあった
2019/03/28(木) 10:11:22.12ID:yLTGLAEP
>>857
C++の配列は固定長が基本。
STLやboostは、C++とは異なる。
2019/03/28(木) 11:32:51.21ID:yLTGLAEP
>>859
>そして驚くべきことに、Cにも要素数が実行時に決まるときに使うための愚かしい機能がなぜか備わってるんだ
>reallocっていうらしいんだけどさ

Cでは、realloc は推奨されて無い。
Cで、要素数が実行時に決まるような集合を扱いたい場合は、自前で
ポインタでリンクする、リンクリストを使う。
毎回それをやると間違いやすいので、賢い人は、自前でリストライブラリを作って
それを用いて操作する。
2019/03/28(木) 11:39:08.71ID:dMtNAb9A
Linuxのソースなんだけど
close(0) close(1) close(2)って書いてあるの見つけたのだが
これってなんの効果が期待できるの?
ファイルディスクリプタ?だと思っていてオープン等をした値番号だと思ってたけど、0 1 2に該当するのがなんなのかと
2019/03/28(木) 12:01:08.00ID:5UOqavsG
stdin, stdout, stderr
865デフォルトの名無しさん
垢版 |
2019/03/28(木) 12:18:22.29ID:des+yyG9
iteratorでstartとendの中に納まってることが保証されてるのに
各要素にアクセスするときにまた範囲チェックとかあると無駄やん
そりゃ書こうと思えばいくらでも危険なコードは書けるけど
安全なときはそういうの省いて高速化出来るのがCの良いところなのに
(レジスタの値が知らない間に壊れても正常に動くようにとか言ってるなら知らん)
2019/03/28(木) 12:31:30.80ID:yd30y0n6
>>861
固定とか決めつけてるのを別にしても何を言いたいのかさっぱりわからん
2019/03/28(木) 12:34:41.89ID:OvbnMtjj
>>862
で、そのオレオレ車輪の再発明クソライブラリは
std::vectorやstd::listより何が優れてるの?
範囲チェックしないから高速wなの?
2019/03/28(木) 12:45:22.23ID:yiBU3VRL
差異があるとすれば、deep copyだね
決めつけ良くない
2019/03/28(木) 12:48:36.64ID:ADAikd1k
>>862
ランタイムでサイズが決まる動的配列にリンクリスト使うのはさすがにダメすぎる
2019/03/28(木) 12:56:24.56ID:TvMamSuP
>>863
デーモンになりたいんだろうな
2019/03/28(木) 13:00:41.99ID:yLTGLAEP
>>869
そもそも、C で出来ないことは、コンピュータのアーキテクチャ上、ほぼ
絶対に出来ない事。
だから、Vectorが、効率面でCを上回ることは絶対に有り得ない。
2019/03/28(木) 13:05:17.92ID:AOcR4eqo
>>869,871
ソートはどうなの? (・∀・)ニヤニヤ
2019/03/28(木) 13:06:22.45ID:AOcR4eqo
春休みでスレの勢いが上がり、スレの品質が落ちた。
874デフォルトの名無しさん
垢版 |
2019/03/28(木) 13:22:32.10ID:des+yyG9
義務教育でプログラミングとか教えたら
もっと変なの増えそう
python界隈に来ないで欲しい
2019/03/28(木) 13:29:56.71ID:t1sztID7
>>874
こういう金融とかの兵隊養成用だから競合はしないと思う
https://pbs.twimg.com/media/DwtF98FUwAIU166.jpg
2019/03/28(木) 13:49:18.36ID:KoUoPeo+
そのへんの化石言語はいい加減消滅させるべき
2019/03/28(木) 13:51:20.07ID:0CdADxX3
化石じゃないまだドメイン次第で現役Fortranだってこの間新しい仕様出たし!ってつっかかられるぞ
08をちゃんと実装したコンパイラ出してから言ってくれよって気持ちだが
2019/03/28(木) 14:01:46.15ID:Csoqrb4z
>>873
お前が言うな
879デフォルトの名無しさん
垢版 |
2019/03/28(木) 14:03:11.91ID:CwLqpfbs
_____(コボル)

答え COBOL

_____(フォートラン)

答え FORTRAN

これのどこが問題集やねん!
2019/03/28(木) 14:08:39.40ID:t1sztID7
来年度からこれが流通するぞ
2019/03/28(木) 15:14:03.54ID:KoUoPeo+
ほんと役人どもがやることはいつもずれてる
2019/03/28(木) 16:17:03.97ID:yLTGLAEP
>>880
その言葉を見る限り、あなたは日本人じゃない気がする。
この文脈で、あなたが言いたかったのは、
「来年度からこれが流通するぞ」ではなく
「来年度からこれが常態化するぞ」
という事だったと思うから。
2019/03/28(木) 17:38:04.05ID:ADAikd1k
>>871
それ言い出すなら逆もまたしかりだろ
extern "C"すればCで出来てC++に出来ないことはないぞ。
2019/03/28(木) 17:39:39.59ID:ADAikd1k
だいたいC++にはasmがあるしな
アセンブラで出来ることは出来るんじゃね
885デフォルトの名無しさん
垢版 |
2019/03/28(木) 18:18:56.58ID:JEyrctWP
>>881
おまえらが役人からずれてるんだろ。
日本は公務員のための国やぞ。
2019/03/28(木) 18:20:50.90ID:KoUoPeo+
それは一理ある
日本は官僚統治国家だから
2019/03/28(木) 18:30:14.54ID:t1sztID7
公僕が・・・舐めてると潰すぞ
888デフォルトの名無しさん
垢版 |
2019/03/28(木) 18:32:28.62ID:des+yyG9
888
2019/03/28(木) 18:42:36.05ID:pafVG92t
でも、ターゲットにRubyとC++を選択したのは正解だと思ってるよ。
2019/03/28(木) 18:43:27.34ID:KoUoPeo+
Rubyはない
2019/03/28(木) 18:45:09.06ID:yLTGLAEP
日本政府は日本人と将来の日本の年金などのための政治を行えばいいのだから、
日本人が作ったものを使うように推進するのは悪いことではない。
余りにも使いにくいもので無い限りは。
だからWordをやめて一太郎を使うようにしたり、Rubyを使うようにしたり
するとすれば、それは英断だよ。
892デフォルトの名無しさん
垢版 |
2019/03/28(木) 18:45:11.14ID:JEyrctWP
RubyはWindowsでまともに動かないから、Linux採用するのかな。
2019/03/28(木) 18:48:52.21ID:pafVG92t
>>892
自分の環境では、Windowsで普通に動いてると思ってるけど。
894デフォルトの名無しさん
垢版 |
2019/03/28(木) 18:49:56.61ID:JEyrctWP
関数型教えればいいのに。
2019/03/28(木) 18:58:40.35ID:KoUoPeo+
教えるなら実用性と手軽さからしてC++、Javascript、python
2019/03/28(木) 18:59:00.99ID:yiBU3VRL
>>883
えっ配列初期化子がC++でも使えるように?
897デフォルトの名無しさん
垢版 |
2019/03/28(木) 19:00:37.17ID:des+yyG9
>>891
国産のを応援するのは判るが
それが利権になってただのクズが集まって来たり
金貰うと進歩が止まったりするのが日本の悪いところ
2019/03/28(木) 19:04:55.98ID:KoUoPeo+
国産であっても良いものでなければ応援するべきではない
Rubyは滅ぶべき言語トップ10に入る
2019/03/28(木) 19:07:54.30ID:OttlZ3Q/
>>896
書き方同じじゃなくても同様の事が出来るだろ
cで出来ないこと無いって話にたいしてなのだから
2019/03/28(木) 19:20:56.01ID:pafVG92t
PythonとRubyだったら、Rubyもそんなに悪くは無いと思う。
Pythonは可読性が悪いように感じる。空白インデントだけでブロックや
関数の終わりを決めてしまうので、内部関数が終わってるかどうか分からず、
人の書いたソースが読みにくくて困ったことがある。
2019/03/28(木) 19:39:26.72ID:lj2W5NqA
C++er的には
動的型の時点でノーサンキューだろ
そういうのが嫌でC++使ってるんじゃないのか
2019/03/28(木) 19:40:51.32ID:lj2W5NqA
特にRubyは教祖様が
絶対に型は書きたくない
って駄々こねてるから

これはもう日本のガラパゴス化が一層激しくなるな
2019/03/28(木) 19:43:44.68ID:jnmpmBFr
pyは読みより書きの方が問題
間違えてインデントけずっても気づかないことが多い
2019/03/28(木) 19:51:12.67ID:WN0VVTEM
>>901
個人的には型のある言語の方が好きだ。
型があった方が、変な問題にはまる率が下がるので開発が速く進む。
大規模開発には絶対、型が必要。
初心者にも大人気言語だった元祖のBASICも、Aが浮動小数点型、A$が文字列型で、
確か、A% が整数型。配列は DIM A(100) や、DIM B%(10,10) などで、
宣言は省略できる場合が多いが、ちゃんと型はあった。
Rubyなどは、A にあらゆる型が入れられるので、関数呼び出しなどが
かなり怖い。間違っていても問題の切り分けが出来ないので「はまったら」大変。
だから、とても慎重にコードを目で見ないといけなくなる。
2019/03/28(木) 19:52:41.47ID:wxB03uV3
>>903
Pythonで、良く分からなかったのが、インデントの空白の個数。
2個でも4個でも好きな量を選べるのだろうか?
2019/03/28(木) 19:55:00.97ID:KoUoPeo+
言語仕様上は揃ってさえいればいい
2019/03/28(木) 19:59:44.37ID:WN0VVTEM
>>906
やはりそうだったんだ。だから余計に解読できなかったんだな。
エディタでカラムを数えたり、上まで戻ったりして、やっと認識していた。
でも不安が残った。ブロックが終わってるのかどうか物凄く分かりにくい。
2019/03/28(木) 20:02:46.54ID:eE4sGejC
今のPythonはカオスだからな
見易い文法目指していたはずが
内包表記やらラムダやら見づらくする文法が増えて推奨までされている

フレーム作るか否かもわかりづらいことこの上ない
2019/03/28(木) 20:22:58.04ID:3LZYwZb1
>>851
「実装A, B, C があり、機能 f について、A.f, B.f C.f のそれぞれに、こんなメリデメがあります!」
なら理解できますが、>>820 は、
「A.g, B.f, C.f のそれぞれにこんなメリデメがあります!」
でしょう?それって変じゃないですか?
A.g とかじゃなくて、A.f で比べて欲しいのですが?
2019/03/28(木) 20:33:45.97ID:BoT1RII7
>>908
最近の言語全般に言えることだな。
無駄機能入れすぎなんだよ。
クソみたいなシンタックス入れるくらいならライブラリを充実させるほうが正しい。
2019/03/28(木) 20:46:24.22ID:jnmpmBFr
メリデメっていうやつw
すまんがめっちゃ底辺臭する
912デフォルトの名無しさん
垢版 |
2019/03/28(木) 20:56:41.12ID:JEyrctWP
ハイクラスの人はなんて言うんだよ。
2019/03/28(木) 21:07:04.95ID:siqlJJfC
>>882
お前さんの言い換えた方の日本語もかなり不自然だよ。他人の言葉尻をとらえてどうこう言えるほど、お前さんも日本語が得意な訳ではないだろう。
そもそも、普通の人はそんなことで日本人かどうか気にしたりしない。
2019/03/28(木) 21:20:29.56ID:1SvA7cSr
>>858
文字列の途中に格納することは新仕様でもできるでしょ?
2019/03/28(木) 21:28:18.93ID:3LZYwZb1
>>912
「不正確な略語を口にするのは doubleplus-unwise である」
という事実をジョージ・オーウェルに学びました、彼は略語と esperant は毛嫌いしていたようです
https://ja.wikipedia.org/wiki/%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9%E3%83%94%E3%83%BC%E3%82%AF
2019/03/28(木) 22:54:40.69ID:e7Ukr6X3
double型の変数a、bがあるとして、
a/bが整数かどうか判定するには
2019/03/28(木) 22:55:53.73ID:Qz7GRSnS
厳密には無理
2019/03/28(木) 23:04:52.64ID:e7Ukr6X3
なぜ>>917はベストを尽くさないのか
2019/03/28(木) 23:06:15.20ID:2+cLemOj
標準のコンテナなんて使う理由ある?
遅くて使い物にならん

ストリームなんて実用に耐えれないくらい遅いだろ
2019/03/28(木) 23:08:40.51ID:t1sztID7
もう飽きたからいいよ
2019/03/28(木) 23:14:08.39ID:e7Ukr6X3
ではa/bに最も近い整数はどうやったら出せますのん?
2019/03/28(木) 23:17:25.36ID:AOcR4eqo
(int)((a + 0.5) / b)
2019/03/28(木) 23:17:26.82ID:EVp1RRUC
a/bを丸めりゃいいと思うが?
2019/03/28(木) 23:21:48.84ID:KoUoPeo+
std::round(a/b)
2019/03/28(木) 23:22:20.86ID:e7Ukr6X3
両方の案を採ってC++14ではstd::floor(a / b + 0.5)にケテーイ?
C99なら丸め関数あるけど…
2019/03/28(木) 23:23:14.15ID:KoUoPeo+
CにあってなぜC++にないと思った
2019/03/28(木) 23:24:22.62ID:e7Ukr6X3
C99はもはやC++とは別物やし…
2019/03/28(木) 23:33:50.74ID:eE4sGejC
丸めって絶対の正解がないからな
929922
垢版 |
2019/03/28(木) 23:36:38.79ID:AOcR4eqo
お恥ずかしい。素で間違えた。括弧の位置が違う。
930デフォルトの名無しさん
垢版 |
2019/03/28(木) 23:49:56.39ID:JEyrctWP
>>918
それは自分に問いかける言葉だったんじゃ。
2019/03/29(金) 00:05:03.99ID:daDbIW6D
>>930
>>918についてはまだ誰も判定精度のベストを尽くしていない件について:
多分
 std::abs((a/b) - ((a/b)の小数以下を丸めた値)) <= std::numeric_limits<double>::min()
あたりがベスト?
932デフォルトの名無しさん
垢版 |
2019/03/29(金) 00:08:06.95ID:KSfDlte3
>>931
いや、元ネタの話。
933デフォルトの名無しさん
垢版 |
2019/03/29(金) 00:09:22.47ID:KSfDlte3
上田次郎の言葉。
2019/03/29(金) 00:20:10.55ID:0t+U2b3s
一太郎は自滅したからなぁ
どうしているのかと思えば名簿の話であんなことしていたのかと・・・
上手くやればいくらでも出来たのに勿体無い
2019/03/29(金) 00:38:09.37ID:Sh9jl/tc
>>931
いやこの場合はイプシロンじゃなくバイナリ一致で比較すべき
2019/03/29(金) 00:53:41.69ID:e60P0oPD
まだ428万なのに一勝で400くらいしか上がらなくなったんだけど中堅名乗ってええか?
2019/03/29(金) 00:53:59.93ID:e60P0oPD
誤爆
2019/03/29(金) 00:59:27.21ID:PFvplbFR
>>910
おっ。
LISP で優勝って話?
2019/03/29(金) 01:45:14.97ID:DyQclHpC
lisp は大昔 emacs のカスタマイズするのにしょっちゅう書いてたけど
なんでこんなクソみたいな古代言語を有り難がるやつがいるのかいつも謎だった
普通に C 風の文法のスクリプトでも搭載してくれたほうがよっぽどありがたい
2019/03/29(金) 02:03:38.50ID:PFvplbFR
>>939
Emacs Lisp は今でも生き残っている LISP 系の言語の中ではクソな方なので、それで判断されてもな……。
AutoLISP よりはマシだが。
2019/03/29(金) 02:15:27.46ID:e60P0oPD
どうしてC言語風のスクリプト言語が無いんだ
どいつもこいつも分かりにくいうえにデバッガも無いもん作りやがって
942デフォルトの名無しさん
垢版 |
2019/03/29(金) 05:41:16.20ID:VktwsX1+
>>931
a = 1e15
b = 1e-15
943デフォルトの名無しさん
垢版 |
2019/03/29(金) 05:42:05.38ID:VktwsX1+
941
あったけど流行らなかった
pythonの方が役にたつ
944デフォルトの名無しさん
垢版 |
2019/03/29(金) 06:59:38.46ID:Eeymx9+7
>>916
int型にしてdouble型に戻したのと比較するとか、floor関数使ったのと比較する。
2019/03/29(金) 07:49:31.47ID:WBACpCX+
>>941
Cインタプリタってのがいくつもある
2019/03/29(金) 08:07:13.38ID:Ta+0qHqT
>>931
min()以下の非正規化数でも残差があればそれは整数じゃないんだから単純に0との比較でいい。
2019/03/29(金) 08:12:49.10ID:vRMp+NmG
固定小数型が標準でほしい
2019/03/29(金) 08:23:09.46ID:WBACpCX+
小数なんかいらん
ビッグインテジャークラスを標準でほしい
2019/03/29(金) 08:32:27.31ID:q1OkKHKh
設定はpythonでいいよ
2019/03/29(金) 09:40:31.26ID:e60P0oPD
>>945
あるけど誰も採用してない
何故かみんなオリジナルの言語を作り始める
相当慣れないとautotoolsとか解読困難だし
なんならこれもperlにすればよかったのに
おかげで出回ってるものもコピペを繰り返した秘伝のタレ状態だわ
2019/03/29(金) 10:25:09.68ID:c3N751dA
オリジナル言語といいつつ、
昔からあるautotoolsを持ち出すとか
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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