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/ (日本語)

テンプレここまで
0457はちみつ餃子 ◆8X2XSCHEME
垢版 |
2020/04/26(日) 21:11:50.20ID:Kc4H3V0/
>>455-456
事例としては

例1: 使い捨てスクリプト
  その程度の管理で良い。
  ガッと動かしてそのまま終わるので管理もクソもない。

例2: サービスの変更が多いウェブサービス
  まずは早期に動かすことが大事。
  細けぇことは後でプロファイラを見ながらなんとかする。
0458デフォルトの名無しさん
垢版 |
2020/04/26(日) 21:14:39.85ID:PBJtHpgo
>自動化されてるんだから手を出しちゃダメ
ハアwwww?
コードで明示的にマークも出来ますが何かwwwwwwww

>あげく解放されませんでした、解放されてるかどうか確認をせよ
ハアwwwwwwwww?
>>456は不具合を発見してから不具合がないか確認するタイプ?wwwwwwwwwwww
0459デフォルトの名無しさん
垢版 |
2020/04/26(日) 21:31:08.35ID:O/ywVmO1
>>457
テキトーこきたいって正直に言ってくれれば
こっちもあっそーで済む

>>458
明示的にマークという時点でGCの敗北なんだよ
仕事でもそうだろ、引き受けたことをやってくれないやつは
もう信用されない できねえことは端っから引き受けるな

おまえさん、ぬるま湯に浸かってる人かい?
0460デフォルトの名無しさん
垢版 |
2020/04/26(日) 21:38:26.82ID:O/ywVmO1
「資源の解放はお任せくださいっ!!(キリッ
「あのー循環参照が・・・
「メモリーだけです!!(汗
「資源じゃなかったんですか?
「そのくらい察して下さい!!(滝汗
「もういいです
0461デフォルトの名無しさん
垢版 |
2020/04/26(日) 22:53:28.79ID:QPzhUi52
仕事でしゃーなしに使う言語あるいは
知ったかしたいアマチュアが使う言語、それがC++
0463◆QZaw55cn4c
垢版 |
2020/04/27(月) 00:44:23.98ID:UZ/xcmyp
>>462
java は、少なくとも昔の java は、厳しく抑制のきいた文法と豊富なクラスライブラリでいい感じだと思いますよ、文法は意味があっての簡素なほうが好みですね
c# は、クラスライブラリの全容を把握していないので、まだ評価にとりかかれないのですが、これからじっくり調べたいと思っています
0464デフォルトの名無しさん
垢版 |
2020/04/27(月) 00:49:16.60ID:fjvRegs6
Javaは新しいCOBOLになってしまった
当初の理想は良かったと思うけどままならんもんだね
0466デフォルトの名無しさん
垢版 |
2020/04/27(月) 07:39:21.53ID:xj40wisa
まともにコンパイルも通してないで知ったかしてるバカに言えることなんてないけどね。
0467デフォルトの名無しさん
垢版 |
2020/04/27(月) 10:24:31.10ID:GkRU7UlF
>>459
gcの勝ち負けなんか論じてないだろ
話すり替えて誤魔化すな
お前態度でかいわりに理解が周回遅れなんだよ
0469デフォルトの名無しさん
垢版 |
2020/04/27(月) 15:48:22.92ID:D/t5uqt1
なんで
long long abs(long long x)
なんだろうか
負の数の方が絶対値の大きい値が表せちゃうのに
0470デフォルトの名無しさん
垢版 |
2020/04/27(月) 15:59:47.26ID:l27UEbbh
0x8000000000000000 代入してみろ
0472デフォルトの名無しさん
垢版 |
2020/04/27(月) 16:31:02.95ID:l27UEbbh
unsigned long long じゃね
0473デフォルトの名無しさん
垢版 |
2020/04/27(月) 16:32:36.82ID:CPqejn5Z
>>465
このスレで知ったかの相手すると荒れるから、大抵中身の無いマウントカキコはスルーされてるんだが
0474デフォルトの名無しさん
垢版 |
2020/04/27(月) 16:44:05.42ID:8maROmCe
つまり、こういうことか
template <typename T>
auto abs(T val) -> enable_if_t<is_integral_v<T>, make_unsigned_t<T>>;
0475デフォルトの名無しさん
垢版 |
2020/04/27(月) 17:10:02.87ID:GkRU7UlF
singedとunsigned混在すんなってことだよ
c言語レベルの質問はc言語スレでやれ
というか語りつくされた話題だから適当にググれ
0477デフォルトの名無しさん
垢版 |
2020/04/27(月) 18:01:51.48ID:BO0mpPru
C++14(gcc)でUTF8の正規化をする場合、どんなやり方が良いとされているのかご教示ください。

C++ではやったことがないので初歩的なところからご教示いただけるとありがたいです。
・ICU以外の選択肢はあるのか?
・ICUを使う場合、直接APIを使うよりBoost.localeを使った方が良いのか?
0479デフォルトの名無しさん
垢版 |
2020/04/27(月) 20:41:43.99ID:GkRU7UlF
>>477
文字コードスレできいたら?
icuで足りるんならicuでいいと思うけど
自分の経験ではicuのでかくて重いのが問題だったらから
必要な機能だけ自作したな
(unicodeがリリースしてるテストデータをパスさせた)
0483デフォルトの名無しさん
垢版 |
2020/04/28(火) 03:25:29.21ID:5RYVSkyg
>>476
Cはかつて最大人気言語だった歴史があるのに対し、HaskelやRustはそうではない。
C++もCの人気を受け継いだ言語だし、処理速度が高速でメモリー使用量も少なく、
起動も速いし、Windows以外でもとても広いプラットフォームで簡単に動くのだから、
使うのは自然な流れだし、背伸びとかではない。
例えば、C#をAndroid/iOS/Linux/Macで動かすのは容易ではない。
Wasmで動かすにもネットからのダウンロード量が多くなり起動が遅くなる。
一方、C++ならWasmでも起動が速い。
0484デフォルトの名無しさん
垢版 |
2020/04/28(火) 03:31:09.13ID:5RYVSkyg
>>483
C++を動かすのはOS以外に基本的に特殊なランタイムが要らない。
C#やJavaでは.NET環境やJVMが必要となる。
AndroidでもJNIを使えばC/C++は起動も速く動作速度もJava/Kotlin以上に軽快に動く。
同様にiOSでも、Swiftとリンクできるので同様。
逆にC#は、iOSやAndroidで動かすにはダウンロード時間や起動速度に問題があり、
動作速度にも desktop マシン以上に問題がある。
Androidだと、Java/Kotlinの仮想マシンの上に、.NETの仮想マシンを二重に載せる
形となるため、C/C++と比べれば、掛け算の形で遅くなってしまう。
0490デフォルトの名無しさん
垢版 |
2020/04/28(火) 11:08:41.96ID:zAZN/f3s
テンプレとかソース小さくするためにあるからな
0492デフォルトの名無しさん
垢版 |
2020/04/28(火) 11:43:34.53ID:A6/2gkMb
Arduinoで使ってること考えたら、十分使える。
RAM2KBしかない。
0495デフォルトの名無しさん
垢版 |
2020/04/28(火) 13:35:25.37ID:IyPBiCvR
>>485
.NET環境は、それどころじゃない。
それはWindows Updateを見ていれば分かる。
.NETのUpdateのために、数百MB〜数GBダウンロードされる。
0496477
垢版 |
2020/04/28(火) 18:29:02.65ID:pPza+bvz
>>479
自作はやりたくないのでICUを軸に色々試してみることにします。
ありがとうございました。
0497◆QZaw55cn4c
垢版 |
2020/04/28(火) 18:49:27.35ID:cQuYXkHz
>>494
gcc のオプションに -static を加えればいいのでは?
0500はちみつ餃子 ◆8X2XSCHEME
垢版 |
2020/04/28(火) 19:15:02.93ID:jkGkDNpV
>>499
流れを読め。 >>485 みたいな状況でバイナリがデカくなる→何がスタティックリンクされるんや? って話題だぞ。
0501はちみつ餃子 ◆8X2XSCHEME
垢版 |
2020/04/28(火) 19:16:34.52ID:jkGkDNpV
マップファイルを出力させてみれば実際に何がリンクされるかはわかるんちゃう?
試してないけど。
0503デフォルトの名無しさん
垢版 |
2020/04/28(火) 19:32:38.39ID:AaGQGXoS
libgccの大きさじゃなくてunwind用のハンドラコードの増加じゃないの?
(間違って別スレに書いてしまった)
0504デフォルトの名無しさん
垢版 |
2020/04/29(水) 02:43:38.13ID:BrDWvzn9
>>503
RTTI の場合は、仮想テーブルと同様の場所に、実行時型情報へのリンクポインタが
書き込まれるようになる。
それがなかなか複雑な構造をしている。
RTTI情報も、ヘッダファイルの中に構造体が書いてあると、COMDAT形式で
全ての *.obj ファイルの中にいったん書きこまれることがある。
リンク段階で同じデータのsectionがある場合は、単一のsectionだけを残して
他は削除されてしまうが。
0507デフォルトの名無しさん
垢版 |
2020/04/29(水) 10:03:27.37ID:I9/54o5j
enum class を1オリジンにするスタイルはどの程度使われていますか?
0508デフォルトの名無しさん
垢版 |
2020/04/29(水) 10:59:38.40ID:I9/54o5j
char8_tってどういう経緯で採択されたんですか?
Microsoftを利する提案が受け入れられるのは相当珍しいと思いますが。
0509はちみつ餃子 ◆8X2XSCHEME
垢版 |
2020/04/29(水) 12:00:55.06ID:sxS/u8Yc
>>508
色々と事情はあるみたいなんだけど、
UTF-8 の文字列と従来の文字列を型で区別したいというのが主な理由だと思う。
0510デフォルトの名無しさん
垢版 |
2020/04/29(水) 12:20:11.19ID:I9/54o5j
その要望は昔からあるけど阻止してきたのに、なぜ解禁されたのか事情知りませんか?
0511はちみつ餃子 ◆8X2XSCHEME
垢版 |
2020/04/29(水) 12:43:30.81ID:sxS/u8Yc
>>510
江添亮のブログで関連する提案や議論が取り上げられているので順番に読んでみたらいいと思う。
https://cpplover.blogspot.com/search?q=char8_t
具体的にこれが理由と言えるひとつの理由があるわけではないけど、
やってみたらやっぱ要るわ……という雰囲気っぽいかな。
要するに文字列をナメてたんだろう。
0513デフォルトの名無しさん
垢版 |
2020/04/29(水) 14:13:57.87ID:j7Bsjnws
charにutf8突っ込むだけでunicode対応できるとか考えるやつがようやく淘汰されてきてありがたい
0516デフォルトの名無しさん
垢版 |
2020/04/29(水) 15:01:51.37ID:I9/54o5j
std::size(u8"あいうえお" - 1)みたいな感じですかね。
0518デフォルトの名無しさん
垢版 |
2020/04/29(水) 16:10:17.68ID:I9/54o5j
>>514
W3CもアンチMicrosoftではないのだけど、会員がIT業界の人たちなので、結局のところ、如何にしてMicrosoftを落とすか討論する場所になってました。
0526デフォルトの名無しさん
垢版 |
2020/04/29(水) 21:36:36.72ID:mBdz0qQc
そうかな
utf8をコア仕様にいれたら「文字とは何かを理解する」ってのは
ちょっと同意できないな
0527デフォルトの名無しさん
垢版 |
2020/04/29(水) 22:08:32.37ID:I9/54o5j
constexprがあるので、エンコーディングを型に組み込んでしまっても、困ることは全くない。
C++のお作法になじんでいれば、お得な事しかない。
0529デフォルトの名無しさん
垢版 |
2020/04/29(水) 23:00:00.81ID:I9/54o5j
連れてきてくれたら、ガツンと言ってやるよ。
0532デフォルトの名無しさん
垢版 |
2020/04/30(木) 12:38:45.38ID:yesxJOcI
>>512
下のサイト的に言えば、誰もが
固定長に数値が収まるという夢を見た愚か者たち
なので、必要悪な気はするな
0533デフォルトの名無しさん
垢版 |
2020/04/30(木) 12:45:47.62ID:ERcZittz
>>531
code point単位なら結局utf32にして数える(部分的に可能)
面倒なのはgrapheme clusterから上
もう土方レベルが扱える代物じゃないね
0534デフォルトの名無しさん
垢版 |
2020/04/30(木) 12:50:20.00ID:IVFUa3Rm
ICUのイテレータ使えばよいのでは。
0535◆QZaw55cn4c
垢版 |
2020/04/30(木) 20:12:10.12ID:IOnQoYGj
内部では utf-32 ベースで処理して、出口入り口で utf-8 に/から変換するものだと思いますが…
0536デフォルトの名無しさん
垢版 |
2020/04/30(木) 20:49:36.61ID:IVFUa3Rm
そんな単純なものではないだろうけど。
0537デフォルトの名無しさん
垢版 |
2020/04/30(木) 23:06:50.07ID:b9TIw4B4
期間工ブログの収入は1500万円でした。【フリーランスの現実&底辺からの復活編】
https://www.youtube.com/watch?v=aijLjFLOuC4
工場勤務、30代フリーターが「ブログ」で200万稼げた理由! ◯◯があったから?
https://www.youtube.com/watch?v=Cjmk4XusQVM
ブログで月200万稼ぐ、フリーランスの1日
https://www.youtube.com/watch?v=jaV2GyBgNX4
【クラウドソーシング】Webライティングで月商100万円まで稼ぐ方法をプロに解説してもらった!
https://www.youtube.com/watch?v=oYoaBwQt0Cg
1年半でライターの地位を確立した営業術!駆け出しフリーランスは要チェック【ニシキドアヤト】
https://www.youtube.com/watch?v=DFtmkhw-lHM
0539はちみつ餃子 ◆8X2XSCHEME
垢版 |
2020/05/01(金) 01:06:57.59ID:Qu9UE9Tc
>>535
色んな文字コード (符号化) を扱うときは出入口で変換する方法は妥当な選択だと思うけど、
UTF-32 を中心に据えるのが良いかは一概に言えるものでもないでしょ。

たとえば Windows API がいう Unicode は UTF-16 なわけだし、
外部とのデータのやりとりで内部用の符号に変換する処理が入るのは仕方がないにしても
API の呼び出しのときまで毎回変換が入るのも煩雑なんで、
UTF-16 に統一した方全体としては楽じゃない?

サロゲートペアの扱いが面倒くせぇとかいうのと天秤にかけたとしても
Windows では UTF-16 から離れられない。
結局のところ実行環境とかフレームワークとかの都合に縛られるから
(内部用の符号として UTF-32 が優秀なことは承知しているが)
そのへんの規約とか習慣に従うしかしゃーない。
0540デフォルトの名無しさん
垢版 |
2020/05/01(金) 01:37:06.74ID:/3xCHgCD
出入り口から内部処理まで出来る限りutf-8で統一して処理するのが
トラブルが少なくて済む(個人の感想です)
0541デフォルトの名無しさん
垢版 |
2020/05/01(金) 02:27:55.90ID:uatxyJey
それは文字列としてだけ扱って文字単位(code point単位)の操作しないときでしょ
あるいは小難しいところは全部ライブラリに投げてるとかね
0542◆QZaw55cn4c
垢版 |
2020/05/01(金) 07:33:59.06ID:w4TGDP35
>>539
>たとえば Windows API がいう Unicode は UTF-16 なわけだし、(略)
>API の呼び出しのときまで毎回変換が入るのも煩雑なんで、
>UTF-16 に統一した方全体としては楽じゃない?

Windows では UTF-16 を使うといっても、実際に変換しなければならないのは、ファイル名・パス名を扱うときだけですし、
UTF-16 も可変長の部分があって扱いにくいので、私なら UTF-32 で楽したいと考えますね
0544デフォルトの名無しさん
垢版 |
2020/05/01(金) 08:31:51.38ID:NLgIsVNa
UTF-32でも結合文字と異体字セレクタはある
結局ライブラリに投げるでしょ、ならどれでも同じじゃね?
0545デフォルトの名無しさん
垢版 |
2020/05/01(金) 08:47:44.57ID:sYrLq0eo
マルチプラットフォームのアプリじゃ内部はUTF-8にする場合が多いけどな
なぜならUTF-8にはバイト順問題がないから

どのみち一文字表すのに複数のコードポイントが必要なんだからUTF-8、16、32のどれを使っても言語処理の手間は同じだ
「イングランドの旗」絵文字なんてコードポイントで7要素も必要なんだぜ
0546デフォルトの名無しさん
垢版 |
2020/05/01(金) 09:58:16.26ID:k2YlXFh6
マルチコアの高速化と同様に
32bitのCPUで16bitを扱うと2倍速
64bitのCPUで16bitを扱うと4倍速
みたいにならないんですか?
0547デフォルトの名無しさん
垢版 |
2020/05/01(金) 10:00:07.33ID:tdkjZBPc
なりますよ。
0548デフォルトの名無しさん
垢版 |
2020/05/01(金) 10:02:36.39ID:tdkjZBPc
32ビットと64ビットで二倍の時間になるのではなく、たいてい4倍になりますよ。
0549デフォルトの名無しさん
垢版 |
2020/05/01(金) 10:13:13.46ID:Ia4c8IgS
文字列関連の処理はだいたいメモリアクセスかIOがボトルネックなので、単純にサイズが 増えればその分遅くなるよ
0552デフォルトの名無しさん
垢版 |
2020/05/01(金) 13:13:05.71ID:uatxyJey
>>546
simd使えばそれに近づくだろうけど
そうでなければシリアルに計算されるだけなのでほぼ変わらない
大量のデータを処理する場合はメモリ効率の点で速くなるかもしれない
しかしintへの拡大変換が入るので演算自体は遅くなる方向

まぁ自分でベンチとってアセンブラ眺めてみたらいい
かなり環境依存・実装依存なんだから人にきいてもあんまり意味ない
4倍になる人とかいるらしいしw
0556デフォルトの名無しさん
垢版 |
2020/05/01(金) 15:22:00.38ID:tdkjZBPc
>>552
ベンチとるとおよそ4倍になりますよ。
■ このスレッドは過去ログ倉庫に格納されています

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