C++相談室 part140

レス数が950を超えています。1000を超えると書き込みができなくなります。
2019/01/13(日) 05:56:22.70ID:9RrR7Arz
次スレを立てる時は本文の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/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/02/16(土) 18:43:27.21ID:e4F3ujKc
今ハード割り込みなんて気にするソフト書くとしたらOSがないやつだよね
2019/02/16(土) 18:46:53.94ID:LE6s3aZE
プロセスとして切り離しとけってアドバイスでこんなの終わりだろ。
2019/02/16(土) 18:56:31.75ID:q1DAaOKG
>>855
OSがない環境だから処理ルーチンもないんだろ
詳しくは>>852に聞いてくれ
2019/02/16(土) 18:57:29.43ID:q1DAaOKG
>>856
こんなスレで一般人の感想を言われても…
862デフォルトの名無しさん
垢版 |
2019/02/16(土) 19:57:22.22ID:OHubCgoF
一般人とか言い出すのはLinux板だけかと思ってた、ワロ。
2019/02/17(日) 02:38:22.89ID:WKDw+26J
ていうか今目の前にある環境でコード書いて試せばすぐわかることを聞いてくるやつは
エアC++
864デフォルトの名無しさん
垢版 |
2019/02/17(日) 04:21:07.23ID:N1izVyMt
Visual Studioでコード書いても何もわからない。
とても都合よくできてるから。
こっちが標準になればいいのに。
2019/02/17(日) 04:25:41.02ID:p4FwcX/Y
ラムダ式がいまだに書けないし読めないんだけど
書きたくなるようなメリット教えてくれ
866デフォルトの名無しさん
垢版 |
2019/02/17(日) 04:28:58.95ID:N1izVyMt
読みやすいし楽だからでは。
867デフォルトの名無しさん
垢版 |
2019/02/17(日) 04:46:40.12ID:4OnEl3He
C++を使うとコンパイラエラーで悩むことが多いがラムダは複雑そうなのに非常に素直だ。ラムダで問題がでることが一度もない。素直でできがいいと思うが残念なことに
そんなに使い道がない。
2019/02/17(日) 04:51:22.12ID:fsVSWZKv
関数の内部で関数を定義できる。すなわち、例えばデカい関数からいちいちその関数の外側に注意を向ける必要が無くなる。
869デフォルトの名無しさん
垢版 |
2019/02/17(日) 05:00:32.63ID:N1izVyMt
述語に使えば。
2019/02/17(日) 05:04:23.32ID:CcQWXdbL
STLでもboostでもQtでも使いまくるだろ
2019/02/17(日) 05:05:22.93ID:fsVSWZKv
std::sortの述語に使うのはよくあるね。
872デフォルトの名無しさん
垢版 |
2019/02/17(日) 05:32:44.80ID:4OnEl3He
>>868
それ凄くいい着眼点だと思うのだが、無名のnamespaceで代用できるし、どちらもそれぞれ利点が
あって、どうかするとnamespaceにしておく方が便利だったりする。
2019/02/17(日) 05:36:53.53ID:bztXspcu
std::thread t([&]() {
....
});

とか。
874デフォルトの名無しさん
垢版 |
2019/02/17(日) 06:17:10.31ID:4OnEl3He
>>873
文法的意味もよくわからないのだが、直観的にはわざわざそんなことをすることにどんな
意味があるのかというのもわからない。解説をたのむ。
2019/02/17(日) 06:33:40.59ID:fsVSWZKv
std::threadはスレッド。すなわち並列処理ができる。以前は別の場所に並列処理を行う関数を書かないと
いけなかったのが、ラムダを使えば処理をその場で書くことができる。
2019/02/17(日) 06:53:15.35ID:naWxhgEk
>>865
いちいち関数名考えなくて済むでしょ
2019/02/17(日) 07:51:55.06ID:O/E0SKNM
そんなしょうもない理由、どうでもいいわ。
てか可読性上げるために少しは考えろや。

他の言語なんかだったら部分的に引数を適用した関数(カリー化)が使いやすくなるとかはある。
2019/02/17(日) 09:00:43.73ID:naWxhgEk
名前付をしょうもない理由とか言う奴はもれなく使えない
そもそもその場で書いてるから可読性も上がるし
ラムダ使えない奴の戯言でしかないな
2019/02/17(日) 09:47:35.17ID:EB+Wm9hA
処理の一部を関数として受け取れるように関数書いといて
呼び側はラムダを好きに作ってそこに突っ込む
DRYするときとかに割とよくやるでしょ
880デフォルトの名無しさん
垢版 |
2019/02/17(日) 11:01:41.76ID:4OnEl3He
>>875
なるほど。それはC#なんかではよく思った。以前はdelegate関数を定義するのがめんどくさくてかなわなかった。
しかしC++はマイコンでしか使わないし、まだ恐る恐る使ってるレベルなのでthreadとかは使ったことがない。

以前はPC側はC#、マイコンはCと使い分けて書いていて今回初めてマイコンにC++を使ってるが便利
だとは思うが、困ることも多い。
 二人で開発をしているが、相方が意味のない機能をやたらつかいたがる。string やvectorをドンドン
使うのでプログラムが無意味にバカでかくなってしまう。自分は基本的にCレベルの機能しか使わない。
でもクラスやNamesapce が整理する上では便利だし、constexperも好き。
ラムダはデバッグターミナルを切り替えるのに使ってるが他にはつかうところが思いつかなかった。
2019/02/17(日) 11:05:05.20ID:ihUXQF5N
ラムダ式は名称が良くない
2019/02/17(日) 11:10:40.23ID:vi4O111w
>>880
君にはCがお似合いじゃないかな
コンパイルや実行時のある程度のオーバーヘッドを許容してでもOOPを導入して
楽に安全に大規模で複雑なプログラムを開発しようってコンセプトに馴染めないんだろう?
stringやvectorを使うとはそういうことだからこれを無意味と考えてる時点で向いてない
2019/02/17(日) 11:14:31.53ID:taqGnUFh
マイコンならCで関数ポインタ使うような所で一部代わりに使う感じじゃないの
ポインタを動的に取り替えたりしないなら間接参照がなくなって速くなる
2019/02/17(日) 11:28:22.52ID:WAEZojeG
頭が悪くてその機能を理解出来ず使いこなせないだけなのに
「書きたくなるようなメリット教えろ」と言い換えてるだけだ

「わたしの頭が悪い」ではなく「わたしにその機能にメリットが無いように見せているのが悪い(そちらから自発的にアピールしないのが悪い)」としてる
バカじゃないのかこいつ
2019/02/17(日) 11:32:45.27ID:pY7p2BwH
C++で安全になってるプロジェクトを見たことがありません。
2019/02/17(日) 11:55:17.00ID:Y22Zw0Bq
>>884
上の発言はおいらが書いたわけじゃないけど、どんどん色々と新しくなってるから
おいらも含めて昔からC++を使ってた人にとっては、vector、string、
smart pointerなどは知らないことなんだよ。文字列はMFCのCString使ってたし、
vectorの代わりに、自作のクラス・テンプレートを使ってた。
2019/02/17(日) 12:13:43.95ID:vi4O111w
>>885
それはC++のコンセプトを理解せずにまるでCみたいな手法を混ぜ込んでくる人が一定数居ることが最大の原因だろうね

Cを使うと低スキルのゲロゲロなC++プログラマを排除できるけど
C++を使っても低スキルのゲロゲロなCプログラマは排除できない
これはC++の弱点と言っていいだろう
2019/02/17(日) 12:19:18.91ID:EB+Wm9hA
vector stringがない昔ってC++98より前のお話か・・・?
2019/02/17(日) 13:07:09.82ID:Y22Zw0Bq
>>888
1998当時、本を買ってC++を学ぶと、C++98 の事は書いてなかったんだよ。
C++98 が本に書かれるようになったのは、何年か後。

使えても、実際に使われるようになったのは、感覚的には、
この5〜10年ほどなんじゃないかと思う。
2019/02/17(日) 13:26:22.07ID:taqGnUFh
VCが糞すぎた時代が長かったからねえ
だいたいあいつのせい
2019/02/17(日) 13:31:49.98ID:B6Z0xbW8
>>887
そう、絶対いるんですよ。
大規模になればなるほど避けられない。
2019/02/17(日) 13:47:28.47ID:GrqAm9XM
>>887
リーナス乙
893デフォルトの名無しさん
垢版 |
2019/02/17(日) 13:50:11.60ID:7mUUrd8D
>>857
GCは知らんけどSSDとかのレロケーションで固まったように見えるケースはあるね
2019/02/17(日) 14:51:27.44ID:CcQWXdbL
>>873
これとか頻出だと思うんだけど不思議と見たこと無い人居るんだなあ
他の言語でも良くあるパターンなんだけど
2019/02/17(日) 16:14:40.21ID:Y22Zw0Bq
このスレを見ようとすると、

503 Service Temporarily Unavailable

が出る人いる? 書くことは出来るはずだから、書いてみて。
2019/02/17(日) 18:54:54.93ID:MvGK95PG
>>876
結局ラムダ式の変数名考えなきゃならんのだから命名の手間は一緒では?
まさか f にする気か?
2019/02/17(日) 19:05:30.20ID:+0nZrljm
>>896
関数名って書いてあるんだが…
引数の命名は必要だけどスコープ狭いから命名にたいして苦労はしないだろ
それこそx, yとかでもいいレベル
2019/02/17(日) 19:07:19.51ID:CcQWXdbL
fでも良いレベルならfにするしもうちょっと詳しい方がいいときは動詞にする
2019/02/17(日) 19:18:21.48ID:MvGK95PG
>>897
命名面倒だからラムダ式で程度のもならprivateなんだし適当でいいのは同じだろ
2019/02/17(日) 20:01:49.45ID:taqGnUFh
メンバ関数だとクラス内全体に名前見えちゃうだろ
スコープ狭いから適当でいいって言ってるのに
2019/02/17(日) 20:22:43.95ID:naWxhgEk
>>899
まんま使えない子の意見でワロタ
いつもテキトーに命名してるんだろうな w
そもそもC++のprivate指定ってスコープの指定じゃないし
2019/02/17(日) 22:32:40.23ID:O/E0SKNM
>>894
c++慣れしてる人ほどスコープの抜け方になんとなく不安を覚える書き方だからだろ。
2019/02/17(日) 22:44:39.54ID:TOi2tzGo
>>887
>Cを使うと低スキルのゲロゲロなC++プログラマを排除できるけど
>C++を使っても低スキルのゲロゲロなCプログラマは排除できない

無論、低スキルのゲロゲロベロベロなC++を排除できるほうが優れた手法といえるだろう
上記のどちらかを選べ、というのなら、私はそうする
2019/02/17(日) 23:36:21.11ID:7lxezDVs
>>886 >>889
俺も 1998 年頃に ARM を読んで C++ を学んだが、そんな恥ずかしいことよう言わんわ。
当時の、それも日本語に限ってもネット上には情報があふれてたし、
2000 年頃になるとCマガ (επιστ?μη の連載) でも string や vector は取り上げてるし、
避けて通る方が難しいくらいの状況だったので、要するにお前が「あえて避けてた (逃げてた)」だけ。

そりゃあ当時の Windows での事情を考えれば MFC が妥当な選択だし、
MFC を使うとなれば文字列は CString を選ばざるを得ないというのはわかるよ。
よほどリソースが限られている組込み系とかなら vector でさえキツいって
状況だってあるかもしれんというのはわかるよ。
それに慣れてたら標準のライブラリの方がなじみが無いかもしれん。

でも、そういったライブラリのクソさに打ちのめされてきた経験があればなおさらのこと、
よりよい標準には飛びつかざるを得ないだろ。
よりよいということが理解できないほどクソの臭さに慣れてしまったなら、
そりゃやっぱりお前がクソなだけだわ。
2019/02/17(日) 23:49:56.95ID:WLFlc2AV
久々のダークサイド餃子
2019/02/18(月) 00:39:07.20ID:90CTQpRS
横からだが
>>904
>2000 年頃になると
>>889
>C++98 が本に書かれるようになったのは、何年か後。

たかが標準ライブラリでマウントとかやめた方がいいよ、見てて恥ずかしい
>>878なんかもそうだが
2019/02/18(月) 01:21:22.59ID:ViRlfcsh
>>906
大衆向けのプログラミング雑誌であるCマガにすら! 2000 年頃にはと言ってるんであって、
1998 年当時にでも情報はあふれてたと書いているんだが、そんなことも読めんのか?

その「たかが標準ライブラリ」すら知らん最低以下のクソ >>889 奴が
「昔から C++ を使っていた人にとっては」とか言って代表面してるのをぼんやり見てられるほど
俺は人が出来てないんでな。
908デフォルトの名無しさん
垢版 |
2019/02/18(月) 01:21:47.26ID:yYX5e63o
福田の本ほどわかりにくいものはない。
非お勧め。
2019/02/18(月) 03:09:31.91ID:90CTQpRS
>>907
>>889,>>886に人格攻撃されるような書き込みあるかね?
ついでに言えば俺も自作線形リストとか書いてたけど
(その頃はC++使い始めて2年程度で、参考にしてた本も古かったのでSTLについての解説が無かった)
STL知ってからは完全にそっちに移ったけどね
標準ライブラリ信者のお前からしたらそれすら気に入らないんだろうな
ほんと何様だよお前
2019/02/18(月) 03:12:36.05ID:90CTQpRS
あと1998年でネット使える環境の人間そんなにいねーよ
てかその当時からプログラミングやってるにしては・・・w
2019/02/18(月) 03:24:59.60ID:ViRlfcsh
>>909
最初は知らないというのは当然だし、使わないという選択をすることは否定しない。
規格にあっても実装が使い物にならない時代だって知ってる。

>>886 が学ぼうともしなかっただけなのに時代のせいにして俺を含む同年代の人間を巻き込みやがった。
何様だよっていうなら、勝手に時代の代表面をした >>886 に言うべきことだろうが。
2019/02/18(月) 03:42:21.75ID:90CTQpRS
>>886,>>889は知らないとしか言っておらず、使わないという選択だの使い物にならないだのは
一言も言ってないぞ
2019/02/18(月) 04:40:23.60ID:ViRlfcsh
>>912
俺が標準ライブラリに拘泥しているみたいに言うから反論したんであって、
関係ない >>886 を巻き込むな。
2019/02/18(月) 05:05:11.21ID:zr0LtZh3
>>906
> たかが標準ライブラリでマウントとかやめた方がいいよ、見てて恥ずかしい
> >>878なんかもそうだが
こっちは標準ライブラリの話じゃないんだが…
一応理由も書いてあるし
悔しくて当たり散らしてる感じ? w
2019/02/18(月) 05:13:59.72ID:90CTQpRS
>>913
>>904, >>907, >>911
マジで何言ってんの、頭沸いてるだろ
自分が何書いたか読み返せキチガイ

>>914
やってることは同じだろ、ラムダ使えないとか勝手に前提作ってマウントとか、やってて悲しくならんか?
2019/02/18(月) 06:15:11.87ID:zr0LtZh3
マジで当たり散らしててワロタ
2019/02/18(月) 06:31:20.82ID:90CTQpRS
アホだろお前
918デフォルトの名無しさん
垢版 |
2019/02/18(月) 08:53:15.92ID:LEH693AC
Visual C++ 2010 Express に相当する、無料版の最新版はどれでしょうか?
2019/02/18(月) 08:55:21.66ID:m+MvlS9t
2018 Community
2019のプレビューも出てるけど
920デフォルトの名無しさん
垢版 |
2019/02/18(月) 09:11:24.69ID:LEH693AC
ありがとう >>919
2019/02/19(火) 01:06:26.45ID:V8qmPrEh
ラムダ式で定義する関数の名前を動詞にしようとする香具師はどうしようもない…
2019/02/19(火) 01:36:14.38ID:HoDktNU7
auto型引数が使えるの知ってラムダ式が便利だと初めて感じた
テンプレートと違ってスコープ内でしか使わないから想定外の型が放り込まれることもないから適当に作れる
2019/02/19(火) 07:50:59.68ID:1erPK1jn
JavaからC++のプログラムを呼んでるのですが、こういう場合にC++のプログラムをgdbでデバッグしたいときってどうしたら良いですか
2019/02/19(火) 08:09:41.11ID:fDbgv8CD
アタッチできないのかねえ
2019/02/19(火) 08:23:25.75ID:1erPK1jn
できないです
2019/02/19(火) 09:41:57.99ID:fDbgv8CD
JNIでデバック、みたいな文章いっぱい引っかかるけどなにが違うんだろうね
2019/02/19(火) 09:54:37.53ID:b+RKSXhJ
ランタイムである点です
928デフォルトの名無しさん
垢版 |
2019/02/19(火) 12:56:43.76ID:Dp5mXjEy
>>922
便利だけど用途は限定的ってことですね
2019/02/19(火) 13:49:45.72ID:h1wI7nx1
アタッチできない理由を書けよ
2019/02/19(火) 14:03:05.95ID:JAI+ozPz
そう言えばなんかソシャゲでバグの説明にソースコード出した奴無かったっけ
確かラムダ式使われてたような記憶があるんだけど何だったっけ?
2019/02/19(火) 14:08:36.63ID:JAI+ozPz
ごめん
ググったら出た
2019/02/19(火) 14:19:25.93ID:/4RDdr4I
ドッカンバトルかな
2019/02/19(火) 15:36:52.16ID:WpsDjOEI
>>761
そもそもC++ではインタフェースなんか作らないのが吉
そこはC#
C++は処理実体を担わせるべき
2019/02/19(火) 16:55:21.34ID:h1wI7nx1
GUIのことをインターフェースって呼ぶ風潮
2019/02/19(火) 17:05:34.91ID:cyInrh9G
(GU)I
2019/02/19(火) 21:34:44.26ID:DbU8mxgP
(CU)I
2019/02/19(火) 22:02:44.91ID:0/4iEJd+
mfcとかいうからjavaのinterfaceと思いきやcomみたいなものを指してるんじゃないかと勘ぐっちゃったよ
2019/02/20(水) 05:22:26.29ID:wMUHduDL
言語単体では図形描写というのはできないのですか?
また、図形描写する機能は一般的になんと呼ぶのですか?

javascriptだとhtmlやcssを使うと思います。
2019/02/20(水) 06:08:35.28ID:uLJjwTiH
私のプログラムはポーカーフェイス搭載
何考えてんだかさっぱりわからん
2019/02/20(水) 06:13:56.92ID:V5JGZApS
>>938
画像を扱う機能をもった外部関数(ライブラリ)を呼ぶことで画像を表示する。
その意味では「C++では言語単体では図形描写できない」という認識で正しい。
…よね? 標準ライブラリにグラフィック含まれてないよね。

「図形描写する機能」ってのは一般的には何て呼ぶんだろ。
昔は「グラフィックライブラリ」とか言ったけど、
現在は「ウィンドウライブラリ」とでも言うのか?

Windows なら「Windows API のグラフィック関連部分」とか、
X Window System なら「X の API」とか、具体的に名指しするかな。
もっと上位のクラスライブラリでも同様かと。
2019/02/20(水) 06:44:28.39ID:wMUHduDL
>>940
グラフィックライブラリで調べてみます!
2019/02/20(水) 06:45:11.12ID:kMkx71jX
>>938
svgを出力しなされ
2019/02/20(水) 06:48:28.01ID:uLJjwTiH
図形描画は基本的にはメモリ配列に描画することだからな
2次元配列にドット打ったり直線引いたりとかcでも標準化されててもいいような気がする
2019/02/20(水) 06:52:12.33ID:6H7Ao8nE
標準に組み込まれてる言語がどれだけあるのだろうか
2019/02/20(水) 07:10:25.48ID:oqw8gF3u
>>944
言語自体に組み込まれてるのはNBasicとかぐらいしか知らんわ
2019/02/20(水) 07:15:02.69ID:6H7Ao8nE
WinFormsはC#の標準ライブラリだろうか
2019/02/20(水) 07:36:29.38ID:lAUU9gyq
cairoをC++標準に組み込むとかいう話はどうなったんだろう
2019/02/20(水) 07:44:49.23ID:V5JGZApS
LOGOのグラフィック機能(タートル)は標準じゃないかな。
使ったことないから実際のところは知らんのだが。

ROM-BASICの頃は、たいがい何らかのグラフィックを使えたけど、
方言ばっかりで標準とは言い難かったね。
2019/02/20(水) 07:49:44.24ID:9tgV50SM
>>947
待てど海路の日和無し
2019/02/20(水) 10:49:58.31ID:wMUHduDL
wolf editorみたいなのはC++なんでしょうかね
2019/02/20(水) 19:42:52.26ID:Y2O+s3lJ
iteratorのメンバへのアクセスは、なぜドットではなくアローなのですか?
2019/02/20(水) 19:43:28.58ID:6H7Ao8nE
ポインタとの互換性を持たせるため
2019/02/20(水) 19:54:35.48ID:V5JGZApS
イテレータを ++ で進めたり、比較演算子で終わりの判断をするため、かな。
つまり「ポインタとの互換性」か。
シンタクスとかセマンティクスとか、専門用語が出る部分だね。

あと、ドット演算子はオーバーロードできないでしょ。
954デフォルトの名無しさん
垢版 |
2019/02/20(水) 19:59:56.78ID:vIxNp1pR
std::next()って出来たけど、これは配列のアドレスと互換性を持たせるためかな。
std::advance()のように参照を渡すのがダメだとすると、戻り値で何かを返す場合、イテレータを返せなくなるので、どういう設計にしたらいいのだろ。
955デフォルトの名無しさん
垢版 |
2019/02/20(水) 20:19:38.87ID:sr7oPl81
>>943
TclTkのcanvasが便利
956デフォルトの名無しさん
垢版 |
2019/02/20(水) 22:16:30.19ID:QUf2KVgt
#include <chrono>
namespace user {
using std::chrono::operator""ms;
};

上の場合msというユーザー定義リテラルをuser名前空間内に定義した扱いになる?
2019/02/20(水) 22:23:30.88ID:MRDgobfX
tclとか嫌だよ
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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