C++相談室 part144

■ このスレッドは過去ログ倉庫に格納されています
2019/07/22(月) 13:18:35.52ID:gptRHpgT
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

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

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
https://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/ (日本語)

----- テンプレ ここまで -----
2019/07/23(火) 16:32:47.77ID:tt/1GdHu
>>6
それじゃ変更前と同じ演算になってないだろ。x>=2mやx<0の可能性を排除しているから速いんじゃね。
2019/07/23(火) 16:32:54.11ID:+dwx5m0u
お前のプログラムa=999999、m=2の時に壊れてるよ
2019/07/23(火) 16:54:30.60ID:Rjd8/nXp
>>7-8
確かに
すみませんでした
2019/07/23(火) 17:33:44.97ID:35PXZxTn
https://cpplover.blogspot.com/2018/07/c17.html
2019/07/23(火) 18:24:59.51ID:u/gGnwtd
>>10
それ読んでもc++使う理由わからんよな
高速化が必要なコアのアルゴリズムにc++最新機能不要だろ
それより確率モデル使ってGPUで解くとかもっと賢くやれよと思うわ
2019/07/23(火) 20:42:24.11ID:Ptp4kmtT
単なるファッションだろ。江添もさ。
2019/07/23(火) 21:35:57.63ID:04X8GIZv
自分が食っていくためには自分に仕事が必要であるため、
C++言語仕様周辺で食ってる人は永遠にコネクリ回したいはず。
2019/07/23(火) 21:41:03.53ID:Ffr5F2PG
最新規格に合わせた方が生産性高く保守も容易になる

それに、cudaだってc++17相当で書けるだろうに
2019/07/23(火) 21:46:35.19ID:u/gGnwtd
やってから言え
2019/07/23(火) 22:06:34.72ID:q6q7AnvM
自明だよね
2019/07/23(火) 22:06:42.46ID:Ffr5F2PG
普通にc++17は便利に使っているが?

てか使っている実例に対して、無意味断定する根拠が適当過ぎる
それこそコードで示せと

そんなに大きくない会社が金かけてまでやっているのだから、それで利益が出る効果はあるんだろう
2019/07/23(火) 22:13:30.35ID:u/gGnwtd
>>17
お前が保守してるコードについて詳しくきかせてもらおうか
2019/07/23(火) 22:20:10.76ID:Ffr5F2PG
コーディング量減るし、constexpr ifでlambdaの記述が捗るだろ?
2019/07/23(火) 22:23:24.83ID:NxPnU+JE
俺c++03民、autoが使いたいです
2019/07/23(火) 22:36:46.59ID:u/gGnwtd
>>19
ごまかすなよw
お前が今保守してるコードについて聞いてる
c++のバージョンは?
行数は?
22デフォルトの名無しさん
垢版 |
2019/07/23(火) 22:39:03.45ID:TGpHom7B
速度とC++を使用する意義について問題提起したのかと思いきや生産性の話になってる
23デフォルトの名無しさん
垢版 |
2019/07/23(火) 22:51:25.14ID:LMG0h0kR
constexpr ifって言ってんのにC++のバージョン聞くってどういうこっちゃ
まさかC++20?
2019/07/23(火) 22:53:38.63ID:Ffr5F2PG
>>21
今のところc++17だな
17で0から書いたわけじゃないが、少なくとも有効にしないと通らん
行数はひとつじゃなくライブラリ沢山だから分からん
昔はlinuxメインでcudaとかも使って数値演算だったがここ数年はwindowsばかり
画像処理系、GUI、数値演算ライブラリその他装置制御とかのライブラリと組み合わせたアプリ作っている感じだな
2019/07/23(火) 22:58:50.26ID:Ffr5F2PG
画像処理だと要素型のテンプレートで基本操作をそれぞれ特殊化してintrinsicsで書いておいて、それを組み合わせて応用機能を実現している感じ
組み合わせで最適化可能な操作も基本操作に加えているけど
26デフォルトの名無しさん
垢版 |
2019/07/23(火) 22:58:57.04ID:TGpHom7B
>>23
何言ってだお前
2019/07/23(火) 23:02:07.66ID:N0M0V2oE
constexpr ifはC++17以降じゃないと使えない
2019/07/23(火) 23:03:45.37ID:Ffr5F2PG
通称constexpr ifなのに書くときは逆という罠
2019/07/23(火) 23:22:42.08ID:viG1+s3R
>>24
それ保守じゃねーだろ
2019/07/23(火) 23:25:00.99ID:Ffr5F2PG

開発したアプリやライブラリの機能追加とかバグ対応とかって保守だろ
2019/07/23(火) 23:38:39.91ID:OTk37+kC
それ保守ってほど時間たってないんじゃね?
しかも他人のコードじゃないならなおさら
2019/07/23(火) 23:42:48.79ID:Ffr5F2PG
17にしてからは1年も経ってないかも知らんが、14,11の頃から数えれば数年前のソフトいじるとかは普通にある
弄るついでに最新規格でコンパイル通るようにしたり、使ってたライブラリ最新版に置き換えたりしてる
2019/07/23(火) 23:43:53.31ID:OTk37+kC
>>32
だからそれ保守じゃねーから
変えてんじゃん
2019/07/23(火) 23:46:09.85ID:OTk37+kC
自分のちっさいライブラリでしょどうせ
他人の膨大なソースコードでそれできんのかと
仕事で保守したことないやつの戯言
2019/07/23(火) 23:50:18.68ID:+dwx5m0u
機能追加やリファクタも保守だぞ
変えないことが保守だと思ってんの?仕事で保守したことないやつの戯言
2019/07/23(火) 23:51:10.09ID:Ffr5F2PG
他人のなら、1ソース数10万行のが50ファイルとかあって、中身がコピペ改変のネスト構造になっているとか頭おかしいコードのデバッグとかすることもあるよ。
おんなじバグが100箇所くらいあったりするのw
2019/07/24(水) 06:44:19.68ID:8xr9hPJ6
cudaに対してc+17使うとか100%死亡パターンだろw
2019/07/24(水) 07:38:12.78ID:xGXQ+cSs
>>36
そういうやつは触れない
そうじゃないやつはリファクタリング可能
統一して語る必要はない
39デフォルトの名無しさん
垢版 |
2019/07/24(水) 15:35:36.80ID:51dv4//C
修正は保守に入るだろうけど、
機能追加はどうかな。保守ではないような気がするが。

別にどうでもよいけど
2019/07/24(水) 17:30:07.43ID:2ifmVNIE
新しいOSに対応しろ、ファイル形式に対応しろ、こういうAPI追加しろ、出力形式変えろ、速くしろ、軽くしろ
保守ってそういう要求に対応すること・対応できる体制を維持することだと思ってたんだが、そうじゃない宇宙もあるのかな
2019/07/24(水) 20:29:11.56ID:TdGR8UUG
ソフトの保守って受けたことねーや
納品したらそれまで
改修や機能追加は別料金
2019/07/24(水) 21:09:49.20ID:j4f+/jKb
> 改修や機能追加は別料金
オレが決められるなら当然そうするんだが
クソ脳無しの営業どもが
2019/07/24(水) 21:52:55.40ID:94R5D7K2
元来の意味は現状維持なんだから機能追加するものは保守とは言わんよなぁ
どうしても直さないといけないバグとか、開発環境変わったことによる対応とか、そういうのだけいやいややる感じ
2019/07/24(水) 22:50:28.58ID:2ifmVNIE
保守(maintenance)ってのはソフトウェアの利用価値を持続させることでしょ
そのために必要なら修正もするし機能追加もする
「保守だから現状維持、改修や追加なんてしないししてはいけない」なんてのは思考停止
2019/07/24(水) 23:04:23.71ID:u4NdgWgN
パッケージだと正式リリースした後のバージョンアップはすべてメンテナンス
2019/07/24(水) 23:30:16.15ID:bRKaVM+S
業務で保守契約っていわれたら機能追加はないイメージだな
2019/07/24(水) 23:31:07.37ID:8xr9hPJ6
思考停止っつーか実際問題そんな仕事ないだろ。
c++バカによくある妄想に付き合う必要はない。
2019/07/24(水) 23:38:01.87ID:TdGR8UUG
ある人にとっての「保守」は
趣味プログラマによるお仕事ごっこという文脈でのそれなのかな
2019/07/25(木) 00:16:11.89ID:f/JymLGM
ソースコード変えたらテストせねばならないがC++は単体テストの記法がイマイチ
Google Test一時期使ってたがテスト対象を呼び出すコードを書くまでのタイピング量がけっこう生じる
GoやRustはいいいぞ〜☆
2019/07/25(木) 02:35:44.89ID:f/JymLGM
ていうかC++の自己責任が伴いすぎる自由に疲れた、
2019/07/25(木) 02:39:40.09ID:f/JymLGM
苦労して自由を行使した末に得られる見返りのは
たいていはわずかばかりのパフォーマンス向上と
二度と見る気がしない気がする醜いソースコードやし、

保守wwwwwwwwww
52デフォルトの名無しさん
垢版 |
2019/07/25(木) 06:25:29.69ID:GrqrASiv
const std::string & を std::string_viewに置き換えている記事をよく見かけます
後者を使うことに何か意味はありますか?
単に置き換え可能だと言うことを解説したかっただけなのでしょうか
2019/07/25(木) 06:43:57.53ID:jgZKUqYh
後者は部分文字列を切り出したいときにメモリ確保と文字列のコピーが発生しない
2019/07/25(木) 09:08:23.71ID:fv/O10Ch
c++は、スマホでは動作しませんか?
VSでコンパしたものでは、ダメですか?
2019/07/25(木) 09:17:00.66ID:QDSJiMEy
はい
https://docs.microsoft.com/ja-jp/visualstudio/cross-platform/?view=vs-2019
5654
垢版 |
2019/07/25(木) 09:25:28.09ID:fv/O10Ch
>>55
丁寧な解説を、ありがとうございます。
2019/07/25(木) 12:47:32.28ID:i0AuwjJi
streamで固定長の文字列分解したい
以下イメージ

istreamstring ss(“0123456789”);
string no1;
int no2;
char no3;
ss >> std::setw(4) >> no1;
ss >> std::setw(4) >> no2;
ss >> std::setw(2) >> no3;

結果
no1=0123
no2=4567
no3=89

みたいな感じで
環境はコンパイラc++03、boost使えず
std::string::substr使ったやつはもう作ってます
よろしくお願いします
2019/07/25(木) 13:05:43.49ID:eYgqWI8M
>>57 「substr()使ったやつ」で何が不満なのか?
2019/07/25(木) 14:10:42.84ID:HIqmru9O
>>58
項目ごとにstreamかまさないと、型で自動変換してくれないし、抜き取り開始位置指定しなくちゃいけないし、なんか冗長でカッコ悪し
みたいな理由です。
2019/07/25(木) 15:06:48.36ID:eq0G00ml
ABIの変更ってこれから先何度もあるんでしょうか?
stringとか基本のクラスが変わるのはきついんですが
2019/07/25(木) 16:49:16.74ID:E2feltVj
そのあたりほんとc++クソだよ
というか標準化委員会がクソ
2019/07/25(木) 17:01:42.02ID:XeL2zPLs
ABIはしゃーないな
VCとgccが違うの知った時泣いたわ
2019/07/25(木) 17:11:22.15ID:DsBc3y+y
BeOSっていうOSが昔あって、純粋にC++でゼロから作られたOSなんだけど
コンパイラのバージョンアップだとかでABIが変わって
アプリの使うAPIの互換性が保たれてなかったんだよね
(後継のHAIKU OSも同じ問題抱えてる)
そこらへん標準で決めててくれればいいのにねぇ
2019/07/25(木) 21:34:32.20ID:E2feltVj
OS作ってんならABIは自分で定義しろよ
2019/07/25(木) 21:46:01.89ID:PNoIdPh5
それ言い出すとcでいいやんてなる。
2019/07/25(木) 23:57:42.04ID:n2Si4yAe
C++の委員会って規模やリソース的に多言語と比べてどうなんでしょう?
かなり恵まれているほうえすかね?
2019/07/26(金) 00:08:47.64ID:v7MbZVD8
C++くらい規格化ちゃんとやってる所って他にある?
2019/07/26(金) 00:21:17.49ID:wfZPJP/7
Javascript?
2019/07/26(金) 00:33:24.31ID:eT9T+6Bl
規格合致したコンパイラなんて過去に存在したのかしら
2019/07/26(金) 00:47:51.48ID:qhxgv2BF
そもそも1つの規格を元に複数のコンパイラが存在するって言語が少ないだろ
2019/07/26(金) 01:25:43.63ID:6ttC61YN
>>52
例えば文字列リテラルを与えた時にconst std::string &だと暗黙的に一時オブジェクトが構築され、バッファの確保と文字列のコピーが発生する。
std::string_viewを使うと、文字列の先頭アドレスと長さだけが渡されることになるので、効率の良いコードが生成される。
2019/07/26(金) 03:37:13.13ID:8OK0KeqS
>>69
VSコンパイルで、なんでもOKだろ。
2019/07/26(金) 06:49:13.69ID:4yTQHcMn
>>55
これは、IDEはVSでも使用するコンパイラ本体は MSC(?)ではなくclang ですか。
2019/07/26(金) 06:51:05.54ID:/WSqmbNM
>>70
せ、せやな

   FORTRAN, COBOL
2019/07/26(金) 08:35:39.46ID:TlXJotF6
実用的な言語の話をしているキリッ
2019/07/26(金) 08:49:06.77ID:PZK88cLJ
ecma334
2019/07/26(金) 13:37:03.81ID:X7S0ZvoC
Fortran今も使われてるのか
研究室のコードが軒並みFortranでイヤイヤ使わされた記憶がよみがえった
C++だのなんだの色々流行ってるが研究者はそんなものに振り回されるな
Fortranは完成された言語なんだとボスが力説してたわ
2019/07/26(金) 13:40:16.10ID:X7S0ZvoC
言い忘れたがFORTRAN77ね
90とか使うと怒られた
2019/07/26(金) 14:33:55.87ID:qhxgv2BF
今はPythonかMATLABが多いかと
2019/07/26(金) 14:48:21.28ID:pSMqg5vs
Pythonは「CPythonの実装が規格だ」だし
MATLABはそもそもプロプラで言語仕様や変更プロセス自体ブラックボックスだし
あんまり依存するのは危険だと思うんだけどな
アカデミックでは特に
2019/07/26(金) 16:28:07.22ID:/WSqmbNM
>>77
Fortran 2008の規格書印刷してボスの机の上に置いてやれw
2019/07/26(金) 16:39:45.36ID:1S1aSnkU
かといってANOVAやMCMCをC++で実装するのは検証も含めて愚かでしょ
2019/07/26(金) 18:18:30.43ID:4cv+0ZCY
ボイジャーのメンテナにFORTRAN使い募集してたやん
2019/07/26(金) 22:42:11.25ID:eT9T+6Bl
JAXAの若手プログラマは自殺してなかったっけ?
2019/07/27(土) 01:32:43.02ID:KwccJBez
>>80
それでもpythonのリスト処理の仕様の方がc++のuniversal initializerなんかよりも
よっぽど仕様として安定してる。それが現実だ。
86デフォルトの名無しさん
垢版 |
2019/07/27(土) 07:33:07.73ID:NQ4+UjHL
>>53
それは存じていたのですが、単にstringの参照を渡したいときにまで(const std ::string &)std::string_viewを使う意味はあるのかなぁ…?というのが疑問でした
上手く伝えられずすみません

>>71
非常に納得しました。そういう意図が有ったのですね
ありがとうございます
2019/07/27(土) 08:41:09.41ID:m1vSIns3
個人的な話だけどstring_viewはconstexpr対応してる点で有利。
2019/07/27(土) 09:24:24.73ID:utI+NfFM
パイソン2と3が混在してるのがややこしい。
spirvのビルドスクリプトは2でしか動かない記述なのに勝手に3を探してきて動かそうとするとか混乱が甚だしい
2019/07/27(土) 11:41:57.01ID:zR8v2AWF
>>88
ちょっと話はそれるけど、外国製の言語処理で最近やたらとネットから勝手に
いろんなものをダウンロードしてくるものが増えて嫌だ。
2019/07/27(土) 13:02:56.66ID:P/JKsCl6
なんというか世の中全てがオンラインが前提みたいになってて辟易します
2019/07/27(土) 13:17:47.97ID:zR8v2AWF
>>90
凄い分かる。

>>89
誤:言語処理
正:言語処理系
2019/07/27(土) 13:57:22.46ID:zfEkdoko
別にオンライン前提でもいいんだけどエラー処理が糞なのが多くて、オフラインだと起動が超遅くなるとかそもそも起動しないとかあるのが
2019/07/27(土) 17:04:11.07ID:BDHmD2jF
これからはonline merged offlineらしいです
2019/07/27(土) 17:04:42.40ID:BDHmD2jF
あ、dはいらんか
2019/07/27(土) 17:25:47.08ID:zR8v2AWF
要らない物を売りつけてくる天才みたいな感じだからな、アメリカは。
2019/07/27(土) 18:56:25.83ID:KwccJBez
アメリカ関係ないだろ。
エヴァンジェリストとか名乗る馬鹿が要らんものばっか押し付けてるだけで。
2019/07/27(土) 19:08:52.15ID:zR8v2AWF
VSもASもみんなそうだし。
2019/07/28(日) 03:30:37.94ID:tecnuiEb
エヴァンジェリストっていう単語はじめてきいたときは
エヴァンゲリオンのファンの事かとオモテタ
2019/07/28(日) 03:52:29.03ID:5UHV96py
ヒエッ…い、祝福王……!
2019/07/28(日) 06:12:59.88ID:mOcFR82C
広告宣伝しまくってプロパガンダのゴリ押しで本当に要らないものを買わせる奴らだろ
神からプログラミング言語までなんでもアリだ

ハロウィン文書なんかは異教徒抹殺のための冷静な分析でこれは宗教ヤってる目つきの物言いだ
キリスト教各宗派の合宗国のアメリカはそういうの強いよ
どこかのバカが州とか訳したけどね、真実を悟らせないようにする翻訳テクニックじゃねえの
つまりあいつらのやってることは邪悪だから気をつけろ、ってことだ
2019/07/28(日) 09:08:49.65ID:cFlW55NM
で、C++の話題はまだかい?
2019/07/28(日) 09:44:05.47ID:5UHV96py
C++がいかに委員会制を敷いて仕様をがっちり固めているといっても
元になっているC言語がUnix記述のためにデニスリッチーがほぼ一人で考えたドメイン固有言語みたいなものなので
後方互換性というものを重視すればするほど後発言語に対してハンデ戦になってしまうのは仕方が無い
Rustを見たらC++のconstや参照がいかに危険で不用意なブツになってしまっているかがワカル

・こんな人はRustを使うべき(中略

・今すぐRustを使うべき10の理由(ry
2019/07/28(日) 09:53:00.46ID:5UHV96py
ていうかUnixの記述自体が文書整形をやりたいから(後にroffとして結実)という
システム記述ではなくてアプリ実現要求に端を発しているから、
やっぱ全体を俯瞰するとろくでもない流れの末に生まれたC++は不幸な出自と言えるかもしれん…
2019/07/28(日) 10:38:12.67ID:p9n7KwZ9
C互換無くなってきてるやん
2019/07/28(日) 10:57:33.68ID:c9+bQbdr
2の補数以外を捨てたのと、評価順序を規定したあたりでCとは決別したと思ってる
これ生粋のCerは絶対受け入れられないでしょ
2019/07/28(日) 10:58:21.15ID:/T7nmvYx
>>89
ウチは羹に懲りて膾吹いてるので許可したサイトにしかつながらない
パイパイすらつながらない
■ このスレッドは過去ログ倉庫に格納されています