19/12/01 16:26:58.04 p3Z7Nr0h.net
setは内部2分木だって言ってるのに
436:デフォルトの名無しさん
19/12/01 17:09:51.64 7fh/nHBZ.net
>>422
うまい喩えだなw
437:デフォルトの名無しさん
19/12/01 17:18:14.34 BhgcTKiH.net
>>428
もしかして二分探索と二分木を混同してる?
438:デフォルトの名無しさん
19/12/01 17:33:23.47 YHuSOkLJ.net
木の枝を回廊にしたらグラフになります。
グラフはスパコンのベンチマークにされるくらいにメジャーな構造です。
439:デフォルトの名無しさん
19/12/01 17:36:46.35 YWi4MX0G.net
>>411
自分で言ってるやん?
データが少ないときなら気にする必要はないので、
データが少ないとき用のアルゴリズムとして
「遅いけど便利」はあったほうが良いだろ
440:デフォルトの名無しさん
19/12/01 18:14:48.13 XkMP/E25.net
普通ハッシュ使うよね?とかそういう発想が皆無なのが、
ここは馬鹿しかいないってことを示してるよな。。
441:デフォルトの名無しさん
19/12/01 18:19:34.55 Enyr5Fgf.net
>>430
多分混同してるのはお前だけかと
442:デフォルトの名無しさん
19/12/01 18:22:27.22 Enyr5Fgf.net
>>433
バカはお前
set は一般的に、二分木として実装される。
URLリンク(cpprefjp.github.io)
443:デフォルトの名無しさん
19/12/01 18:36:45.84 n5DjgtsH.net
ハッシュを使うんじゃねえな
ハッシュをどう作るか?になる
perl5/hv.h at blead ・ Perl/perl5 ・ GitHub
URLリンク(github.com)
cpython/dict-common.h at master ・ python/cpython ・ GitHub
URLリンク(github.com)
444:デフォルトの名無しさん
19/12/01 18:53:22.71 ManO1ilk.net
木やグラフがほしいって言ってる人が、ハッシュマップや内部実装だけが木構造のコレクションなんていらんだろ。。
445:デフォルトの名無しさん
19/12/01 19:11:19.73 IheeS71f.net
うんち
446:デフォルトの名無しさん
19/12/01 19:20:12.56 fP4CRSrQ.net
「木が欲しい」という要件に対して確認もなく二分木渡すような奴はダメ
ディレクトリ構造表したい奴に二分木渡してどうすんだ
447:デフォルトの名無しさん
19/12/01 19:25:06.56 WB/GHlzr.net
二分木って規格で決めてるの?
448:デフォルトの名無しさん
19/12/01 19:36:32.68 IheeS71f.net
うんち
449:デフォルトの名無しさん
19/12/01 20:13:00.99 p3Z7Nr0h.net
「木が欲しい」なんていう人には
とりあえず何でもいいから木を渡しておけばいいんだよ
450:デフォルトの名無しさん
19/12/01 20:31:05.42 p3Z7Nr0h.net
木は用途や使い方次第で適する作り方が異なるので
標準コンテナを組み合わせたカスタムで良いと思うよ
451:デフォルトの名無しさん
19/12/01 20:51:16.81 YHuSOkLJ.net
URLリンク(ideone.com)
ほら~。あそこに見えるのがN分木のさんぷるだよ~。
デバッグしてないから酒の肴にぴったりだよ~。
452:デフォルトの名無しさん
19/12/01 21:01:15.36 BhgcTKiH.net
C++11以降なら子ノードをweak_ptrの配列で持つとか?
453:デフォルトの名無しさん
19/12/01 21:09:55.37 YHuSOkLJ.net
>>444
言い忘れていたが、このスレから取得したN分木のコード(>>444)はMITライセンスです。
改造して変な構造を作ろう!
454:デフォルトの名無しさん
19/12/01 21:31:39.82 vEIKl7N1.net
著作権表示なしにMITライセンスにできたっけ
455:デフォルトの名無しさん
19/12/01 22:14:07.56 9WgCOaQB.net
サンプルとかライセンスとか頭沸いてんのかこいつ
下痢便を神棚に飾って人に配るような所業
456:デフォルトの名無しさん
19/12/01 22:32:33.44 YHuSOkLJ.net
著作権表示は、
2019 Yakitori
が必要なら使って。
457:デフォルトの名無しさん
19/12/01 22:32:48.31 YHuSOkLJ.net
>>449
日本語不自由だな
458:デフォルトの名無しさん
19/12/01 22:38:20.61 vEIKl7N1.net
?
459:デフォルトの名無しさん
19/12/01 22:41:32.80 IheeS71f.net
うんち漏れそう
460:デフォルトの名無しさん
19/12/02 00:33:17 RIgVO6ZZ.net
>>448
だな
461:デフォルトの名無しさん
19/12/02 02:45:23.23 btxUm/V/.net
オランダのTIOBEの調査でも、C#よりJavaやC/C++が人気で、
他の会社による日本での求人数もJavaやC/C++の方がC#より上だそうだ。
JavaScript、PythonやRubyは、求人数では大したことが無いらしい。
Webページを製作している人がネットでは多いので、JS、Python、Ruby
などが人気であるかのように見えるだけかもしれない。
462:デフォルトの名無しさん
19/12/02 03:22:15 Lvay36w9.net
>>454
すまん。日本での求人数は、
Java, PHP, Ruby, C#, JS, Python, Objective-C/Swift, C/C++,
HTML, Android, Unity, VB.NET, Scala
だそうだ。ただし、C#から、C/C++ までは横並びでどれが上とも
いえない僅差。そして、Java, Python, Ruby は伸びているが、
PHP, C#, JS, HTML は減っている。
ところが、プログラマ側からの「希望言語」としては、JSがTOP
らしい。アメリカでの今後学びたい言語としては、Java, Pyhtho,
C++ は上位に来るが、C#, Ruby はかなり下の方。
463:デフォルトの名無しさん
19/12/02 03:29:10.52 Lvay36w9.net
>>455
個人的見解としては、VS code が 5ch で評価が高かったのは、言語が
TypeScript や JavaScript と HTML で記述されているので、JSで
プログラムすることを希望するプログラマが、JSの求人を増やすために
JS製の成果物を高く評価していたからかもしれない。
また、Javaの伸び率はかなり高い。Rubyの求人は日本では多いようだが、
アメリカでは少ない。C#の人気は、ある時期までは延びたが、今は停滞期
に入ったようだ。しかも今後学びたい言語としては、C よりも低い。
464:デフォルトの名無しさん
19/12/02 03:36:47.51 Lvay36w9.net
TIOBEの調査では、Java と Cの人気が同列で高く、Python がそれに続く。
また、CとC++を合計すると、Javaよりもだいぶ高い人気となる。
Java 16.2% (-0.50)
C 16.0% (+1.64)
Python 9.84% (+2.16)
C++ 5.60% (-2.68)
C# 4.31% (+0.36)
VB.NET 4.22% (-2.26)
JS 1.93% (-0.73)
PHP 1.72% (-0.66)
SQL 1.69% (-.15)
Swift 1.65% (+0.20)
Ruby 1.26% (+0.17)
Objective-C 1.20% (-0.28)
・・・
D 0.927% (-0.64)
Go 0.853% (-0.64)
465:デフォルトの名無しさん
19/12/02 03:57:59.67 qRRc8YVo.net
CとC++とC#の区別ができる営業いないんだよな
466:デフォルトの名無しさん
19/12/02 04:06:59 3lD7gpLY.net
営業って年取った技術者がやるもんだろ
467:デフォルトの名無しさん
19/12/02 06:49:53 MoZo3p1s.net
今はもう戦力外技術者なんて即解雇だよ
そもそも大手だと営業と技術者は別会社
468:デフォルトの名無しさん
19/12/02 07:41:42.15 tW9RdYoY.net
なんで大手条件が勝手に加わるのか
469:デフォルトの名無しさん
19/12/02 08:23:03 mQVkXZA1.net
零細中小なんて誰も興味ない
470:デフォルトの名無しさん
19/12/02 08:42:45.44 GldGaTIn.net
比較するもんじゃないだろ
C++は好きだが、在庫管理システムをC++で書けと言われたら全力で拒否してC#を推すぞ俺は
471:デフォルトの名無しさん
19/12/02 11:06:47 5u9Q6RC4.net
ほんとそれだな
きみらはいつになったらライトバンとセダンの使い分けができるようになるのか・・
472:デフォルトの名無しさん
19/12/02 11:42:23.75 L9XsPrRa.net
>>464
君「ら」?
お前のことだろ
473:デフォルトの名無しさん
19/12/02 13:15:55 /N45p/D+.net
でもJavaはベンチとると速いんだけど、実際は遅い。
これ、リソースを食いすぎるのが原因なので、本当はサーバーよりクライアントに向いているんじゃないのかな。
474:デフォルトの名無しさん
19/12/02 13:16:09 xJykAg3Z.net
ライトバンとセダン?
スリッパと自転車と乗用車と飛行機とロケット
くらい使い分けないとダメ
475:デフォルトの名無しさん
19/12/02 13:19:02 /N45p/D+.net
C++はメモリーの分断化があるので、長時間起動し続けるサーバーには向いていないと言われてるんだけど、実際にやってみたら全く問題なかった。
考えてみると、JavaプログラムをホストするシステムがC/C++で書かれてるんだから、本当に問題になるなら、Javaも無理なはず。
476:デフォルトの名無しさん
19/12/02 13:20:28 /N45p/D+.net
Androidは特に不満もなく動くので、Javaはクライアントでこそ力を発揮するような気がします。
477:デフォルトの名無しさん
19/12/02 13:21:19 xJykAg3Z.net
メモリは潤沢にあるし
アドレス変換もあるので
よほど下手に作らなければ
PCでフラグメントは問題にはならない
そんな事を心配する時代じゃない
組み込みだと話は別
478:デフォルトの名無しさん
19/12/02 13:21:57 /N45p/D+.net
機種ごとの差を言語が吸収
479:してくれるなら、こんな楽なことないし。 一方、サーバーは、サービス提供側が機種を自由に選べるのでJavaである必要が無いと思う。
480:デフォルトの名無しさん
19/12/02 13:23:17 xJykAg3Z.net
>>469
比較的最近追加された
リアルタイム系オーディオAPIは
C/C++での提供ですね
用途によってはいまだにC/C++が必要
481:デフォルトの名無しさん
19/12/02 13:23:19 /N45p/D+.net
>>470
でも、フラグメントが・・・と言われると、なるほどと思うじゃないですか。
僕もいずれ別の言語で書き換えるつもりだった。
でも問題なかった。
482:デフォルトの名無しさん
19/12/02 13:30:11 wB1a1keO.net
>>468
それは完全に理解不足
Javaや.NETのVMはC++で静的に確保した大きなメモリ領域をヒープと呼んでいる
でアプリ内でnewするとオブジェクトとしてその中の領域が割り当てられ、ハンドル(生ポではない!)をアプリがオブジェクト参照として受け取る
C++のオブジェクトとの大きな違いはオブジェクトを再配置できることであり、
GCが必要に応じてヒープ上のオブジェクトを移動して詰めるため断片化が生じにくい
C++でも生ポを使わなければ再配置できるんだけどね
483:デフォルトの名無しさん
19/12/02 13:31:49 az4xQt0G.net
メモリ激増のお陰じゃねえの
484:デフォルトの名無しさん
19/12/02 13:41:55 qRRc8YVo.net
その辺はOSの仕事であるべきやと思うわ
485:デフォルトの名無しさん
19/12/02 13:49:06 az4xQt0G.net
やってることがさほど変わらず100MB確保から1GB確保にするだけで
断片化率が1/10になる
プログラミングの技量が全く変化しないのにも関わらず安全性が10倍になる
つまりマシンの搭載メモリが1GBから10GBになるだけで安全係数が10倍になる
これぞ大富豪プログラミング
486:デフォルトの名無しさん
19/12/02 15:06:09.31 rcvN6dfE.net
>>474
windows3.1のGlobalAllocみたいのを今さらドヤられても…
487:デフォルトの名無しさん
19/12/02 15:20:31.50 Vo2mhncO.net
>>468
実はかなり古くから、C/C++ の malloc(), new のヒープメモリから確保したメモリの
断片化は、実際に問題になるようなことはとても少ないといわれています。
というのは、断片化というのは、確保したメモリを開放したときに出来た
「隙間にある空きメモリ」が再利用されにくい場合に起きるものなんですが、
実際には、再利用されることが多いためです。なぜなら、おなじサイズの
オブジェクトを new することが多いためです。この場合、完全に再利用されるので
断片化の問題と言うものは全く起きないと言っても過言では有りません。
それから、通常、1つのオブジェクトのサイズは小さく、それが多数集まって
データをなしていることが多いのです。このことから、異なるサイズのオブジェクト
であっても、1つ1つのオブジェクトのサイズが小さいため、断片化したとしても、
再利用される確率が高いのです。まず、同じサイズのオブジェクトであれば再利用されます。
異なるサイズであっても、昔開放されたオブジェクトよりも、小さいサイズのオブジェクトを
新しく確保する場合であれば再利用されます。
このようなことから現実の例では、断片化しても、使われないメモリの量はある程度の比率
に収まると言われており、それは GarbageCollection を行うためのオーバーヘッドの
メモリのサイズと比べても余り大きいものではないのです。
ゲームはメモリー効率も求められますが、それでも C/C++ が使われているのは、
メモリー断片化の量が一定比率より多くなら無い事が経験的に知られているためです。
488:デフォルトの名無しさん
19/12/02 15:28:19.20 /N45p/D+.net
フェイスブックがPHPのコードを翻訳機でC++コードに変換して配備してるそうですが。
そんなことするなら最初からC++で書けばいいのに。
489:デフォルトの名無しさん
19/12/02 15:33:38.42 Vo2mhncO.net
>>474
C/C++ では、配列ではなくリンクリストを積極的に使うようにすることに
よって、メモリーが断片化しても再利用される確率を高く
490:することができます。 というのは、データの基本となっている要素のオブジェクトのサイズが 小さいため、さまざまなサイズのデータを new しても、結果的に、 断片化された空きメモリも高い確率で再利用されるためです。 new、delete するオブジェクトのサイズがランダムな場合で、 断片化空きメモリが残っている場合、確率論的には、おおよそ 2回に1回は 断片化空きメモリが再利用されることになるでしょう。もちろん、 delete された回数が少な過ぎる場合、そもそも断片化空きメモリの個数が少なすぎる ので、再利用できる確率は低くなります。それは、初期化時やファイルからデータ 読み込み時などにどんどんメモリを new していくよう場合ですので、そもそも 断片化が起きる余地も有りません。 なお、ポインタとリンクリストを組み合わせると、よくある場合には、他の 集合アルゴリズムよりも、効率が高くなりやすいことが知られています。 ただし、文字を集合させて文字列を作るような場合は例外です。
491:デフォルトの名無しさん
19/12/02 15:39:04.52 Vo2mhncO.net
>>481
配列の場合、delete するとメモリー上に大きな空き領域が出来ますが、
それより大きなサイズの配列を new しようとすると、そこが再利用できません。
なぜなら、配列の場合、連続したメモリ領域が固まって必要になるため、
要素の個数が N だとすると、N 個全てが一度にまとまって入りきる領域を探す
必要になるためです。
ところが、リンクリストの場合、要素数 N が大きくなっても、バラバラな
領域に分散して格納することが出来ます。すると、とても高い確率で、
分断化された空きメモリが再利用されることになります。
492:デフォルトの名無しさん
19/12/02 15:50:07.84 Vo2mhncO.net
>>481
「2回に1回」と書きましたが、実際にはもっと確率は高いです。
リンクリストを使っている場合、要素を全部 delete したような場合は、開放された
空きブロックは、余り断片化せずに、比較的高い確率で結合され、大きな空きブロックに
なるためです。空きメモリは、元の要素のサイズの複数個分以上になっている確率が
高くなります(複雑ですが、管理領域のサイズもこれに加わります。)。
この性質があるため、現実には、小さいサイズのオブジェクトを要素とする集合
が多種類有った場合、それを好きに new, delete した場合、50% よりずっと高い確率で
断片化空きメモリーは再利用されます。
493:デフォルトの名無しさん
19/12/02 16:10:33.93 Vo2mhncO.net
>>483
誤解無きように細くしておくと、「50% より大きい」というのは、
「断片化された空き領域が再利用される確率」
のことで、「断片化率」ではありません、。断片化率はもっと
小さな値になり、条件によりますが、例えば、数%~10%程度
が目安になります。最悪のケースだともっと大きいのですが、
ケースバイケースで適切なデータ構造(集合アルゴリズム)を
使っているとこの程度に収まります。また、適切なデータ構造を
選択することはそんなに難しいわけではありません、。
494:デフォルトの名無しさん
19/12/02 16:15:53.26 Vo2mhncO.net
>>475
既に、Windows95くらいの時期のメモリ容量で、C/C++のメモリ断片化は
問題が無い程度になっていました。実際には、MS-DOSの時代でも既に
問題なかったのですが。
とにかく、今の若い人の目線で言えば、古代ともいえるくらい古い時代に
既に C/C++ のメモリー断片化問題は問題が無い程度にハードウェアが
発達済みなのです。PC-8801 の 8BIT 時代には問題があったので、
N88-BASIC を筆頭に、GarbageCollection 方式をとっていましたが、
それは、若い人には「超古代文明」時代でしょう。
495:デフォルトの名無しさん
19/12/02 16:34:28.08 Vo2mhncO.net
>>485
また誤解が入りそうなので細くしておきます。
N88-BASIC などが GarbageCollection を使っていたのは、本当に
マシンのメモリが少ないのでデータをぎゅーぎゅー詰めに隙間無く
入れることが重要だったためです。
一方、JavaやC#がGarbageCollection を使っているのは、どちらかと
いうと、「メモリー開放の自動化」のためです。参照カウンタだけで
は、循環参照問題が生じるため、時々、広い範囲のメモリブロックを
巡回して、循環参照していても本当に使って無い場合を厳密に見つけ出して、
徹底的に開放することを行います。
そのため、メモリーの断片化問題とはまた違う意味で、メモリー開放の
自動化には、GarbageCollection が必要となっています。
N88-BASIC 時代と、現在の Java, C# とでは、同じ GarbageCollection
でも主な役割が違うと考えられます。もちろん、断片化を防ぐ役割も同時に
果たしてくれますが。
496:デフォルトの名無しさん
19/12/02 16:40:43.00 Vo2mhncO.net
>>486
誤字訂正: 細く ---> 補足
・BASIC言語にはポインタが無かったので、循環参照問題は有りませんでした。
・BASIC言語における GarbageCollection は、主に文字列領域の開放のためです。
A$="HELLO WORLD" と入れた後、A$="" とした時、元の文字列に使っていた
領域は、しばらく経った後に GarbageCollection で開放される仕組みでした。
ですので、文字列を余り使わなければ GarbageCollection も余りおきませんでした。
なお、DIM A(100) のように確保した配列は、余り開放することは有りませんでしたが、
開放した場合も、しばらく後に GarbageCollection の対象になっていたと思われます。
497:デフォルトの名無しさん
19/12/02 17:06:01.34 wB1a1keO.net
リンクリストってシーケンシャルアクセスで毎回キャッシュミスするから、
配列の代わりに全面的に使ったりしたら断片化とか最早どうでもいいレベルでパフォーマンス低下するぞ
498:デフォルトの名無しさん
19/12/02 17:15:40.51 Vo2mhncO.net
>>488
リンクリストでシーケンシャルアクセスする場合、キャッシュ以前に
ポインタをたどるようにアクセスしないといけないのですが、
最近、配列と同じような通し番号方式でアクセスしようとする人が
多くなっています。ライブラリなどは、以前にアクセスした番号が
k の場合、そのポインタを覚えておいて、プログラマが k + 1 の番号
をアクセスしようとした場合、後続のノードへのポインタをたどる
ことで高速化している場合があるので、特に問題が無い場合がありますが、
それを深く理解せずに、本当に先頭のノードからたどってしまった場合、
本来なら O(N)で済むところが、O(N^2) になってしまいます。
499:デフォルトの名無しさん
19/12/02 17:16:14.80 /N45p/D+.net
>>487
ヌルポ。
500:デフォルトの名無しさん
19/12/02 17:18:32.46 Vo2mhncO.net
>>489
C/C++ でのリンクリストは、場所を覚えるのは通し番号ではなく、ポインタ
で行うことが基本です。ところが、最近、通し番号で覚えてしまうプログラムを
書く人が増えているように感じます。それは、キャッシュのために遅くなっているの
ではなく、計算オーダーが完全に違ってくるために遅くなるため、ただごとではない
遅さを招きます。
501:デフォルトの名無しさん
19/12/02 20:46:52.56 rSqEF7g8.net
ネトウヨ東大特任准教授、謝罪するも言い訳「AIの過学習によるもの」
スレリンク(jsaloon板)
502:デフォルトの名無しさん
19/12/02 20:59:09.09 RyZvLJkF.net
>>487
循環参照問題の有無はポインタ(アドレス)とは関係ないでしょ。
503:デフォルトの名無しさん
19/12/02 21:16:13.89 6AEGHd3a.net
TIOBEってなんて読めばいいの?
ちおべ?
504:デフォルトの名無しさん
19/12/02 22:59:36.28 OlcC/UBE.net
ハッシュテーブルで要素Xが既存要素Yと衝突した場合でもXを格納したい場合は
リハッシュかリストになる
キモス
リハッシュで容量をちゃんと使い切るには相当にハッシュ関数を考えねばならない上に
衝突データを取り出すのに何回リハッシュしたかを見ながら要素をたどっていく必要があり、
ハッシュの検索性を帳消しにしてしまいかねない
よってリストのが圧倒的に簡単で速い
505:デフォルトの名無しさん
19/12/02 23:15:49.08 OlcC/UBE.net
>>493
ある
ガベージコレクト対象データでもって他のガベージコレクト対象データを指し示すような
再帰構造が表現不可能なら循環参照は当然起きない
N88-BASICの文字列はキャラクターの集まりであって他の文字列を指し示したりできないから、
相当の無能か悪意を伴って設計しない限り、文字列メモリのガベージコレクションで
循環参照は起こしようが無い(やるべきことは素のmalloc/freeに他ならない
506:デフォルトの名無しさん
19/12/02 23:29:11.52 VdJ0qliF.net
>>496
>>487で自分で書いているように配列がガーベジコレクションの対象になっているなら、循環参照は起こり得るんでないの?
507:デフォルトの名無しさん
19/12/02 23:30:20.73 VdJ0qliF.net
すまん>>497はまちがい
508:デフォルトの名無しさん
19/12/03 04:41:05.52 LCf1R81a.net
まだやってたのか
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
509:デフォルトの名無しさん
19/12/03 06:45:35 Ocr+v9UU.net
C++20あたりになるともうついていけそうにないな。
510:デフォルトの名無しさん
19/12/03 07:20:16 k7viogN8.net
conceptの仕上がり次第だろうな
Cのrestrictもそうであるように
うるさすぎると嫌気がさすやつが続出する
511:デフォルトの名無しさん
19/12/03 14:10:18.28 LOAssVxZ.net
実際にコードを書いてないやつほど仕様を知っててアホみたいなこだわりを見せる
ってことが常態化してる。
そろそろロクでもない結末を迎える。
512:デフォルトの名無しさん
19/12/03 14:24:39.60 jKB+EPlO.net
並列処理じゃないですかねこれからは
マルチなコアをもりもり使えないと
513:デフォルトの名無しさん
19/12/03 14:38:06.74 g2sdmHcp.net
>>502
仕様を知ってるのは良いけど
コードを書いてない人は気にするところがズレてる
514:デフォルトの名無しさん
19/12/03 15:33:28 +wDBcAl/.net
コンパイラやパーサーを作っているか、本を書こうとしている人だとすれば
隅々まで仕様を知る必要があるから、単なる自己満足の言語ヲタクとは
限らない。
515:デフォルトの名無しさん
19/12/03 15:40:53 LOAssVxZ.net
コンパイラやパーサを作ってる人よりも
本やブログを書くだけの馬鹿のが変な仕様にこだわってるのが問題。
後者は単なる自己満足の言語ヲタクと変わらん。
端的にカスでいなくなった方がいい存在と思う。
516:デフォルトの名無しさん
19/12/03 15:46:11 +wDBcAl/.net
>>506
自慢するために言語ヲタクになっている人は困るけど、本やブログを書く人は
貴重なので、情報収集のため5chでもなんでも使ってもいいと思うんだよ。
517:デフォルトの名無しさん
19/12/03 16:08:25 fg+LqIKK.net
現場でガリガリ書いてる奴らが本を書かないのが悪いんだろ
えっ、ブラック労働環境で疲弊してて書く余裕がないって?w
518:デフォルトの名無しさん
19/12/03 16:50:33.73 lE3mHjqg.net
ブログはともかく5chの情報を元に本を書くとか
勘弁してくれ
519:デフォルトの名無しさん
19/12/03 16:52:53.84 lE3mHjqg.net
>>508
解説本みたいなのは読まんな
規格書、データシート、仕様書、リファレンスマニュアル
こんなのは5chを参考にするはずがない
520:デフォルトの名無しさん
19/12/03 16:59:39.64 +wDBcAl/.net
>>509
全く知識が足りて無い場合、知ってる人に聞くと大幅な時間短縮になる事がある。
521:デフォルトの名無しさん
19/12/03 17:42:58.95 PvjGA/Sr.net
>>508
現場でガリガリって、コンパイラ開発してるとこのか?
そうでなければ普通言語の仕様なんか気にしてねーんだよ
むしろ仕様というか規格に詳しくないと使えない言語とか実用性無いわ
522:デフォルトの名無しさん
19/12/03 17:45:16.73 PvjGA/Sr.net
>>508
あとお前が知らんだけで、各分野の経験豊富な人がいくらでもその分野のコードを書くための本出してる
言語オタクには気付かんだろうけど
523:デフォルトの名無しさん
19/12/03 17:50:23.07 Ht46Ytqh.net
>>911
全く知識が無い人が本を書く????
何の本?
アンカーミス?
524:デフォルトの名無しさん
19/12/03 18:43:45.39 0IYpewor.net
未来へのアンカー
525:デフォルトの名無しさん
19/12/03 19:20:43.49 +wDBcAl/.net
>>514
考えてみれば、本を書く人はここでは聞かないかも。
526:デフォルトの名無しさん
19/12/03 19:21:46.86 +wDBcAl/.net
Stroustrap
527:の本とか高いし、cpprefemceは分かりにくいし、誰かに 聞いてみたくなる気持ちは分かるがな。
528:デフォルトの名無しさん
19/12/03 19:22:03.63 90Sp73uq.net
>>513
C++のコンパイラ分野でいいので2~3冊あげてみ
529:デフォルトの名無しさん
19/12/03 19:22:10.56 k7viogN8.net
けっ 言語についていけねえうえに
ろくな業績も出せてねえ真性ゴミクズが
書いたコードの量が多いんだと
精一杯のブラフで自我を保とうと必死こく
究極にくだらねえ茶番だろうが
530:デフォルトの名無しさん
19/12/03 19:25:02.10 A/ggV3OU.net
コードを書けないのがコンプレックス?
531:デフォルトの名無しさん
19/12/03 19:26:01.05 cEtr/lck.net
禿4はわかりやすかったけど、もう少し突っ込んだ話が読みたかったな。
532:デフォルトの名無しさん
19/12/03 19:26:43.98 cEtr/lck.net
禿4はキンドルのセールに出ることあるよ。
533:デフォルトの名無しさん
19/12/03 19:43:50.04 LOAssVxZ.net
禿4は量が少ないわけではないがc++を今からやるとしたら最低限ああなるだろ。
あれ以下に減らすのは実際無理。
534:デフォルトの名無しさん
19/12/03 19:55:41.70 PvjGA/Sr.net
>>518
そういう意味で言ったんじゃないんだが
>>519
>けっ 言語についていけねえうえに
>ろくな業績も出せてねえ
こういう前提はどっから来てんのかね
>>502,506 ,512みたいなことを言われるとそういう過剰反応するやつよく見かけるけど
>精一杯のブラフで自我を保とうと必死こく
>究極にくだらねえ茶番だろうが
鏡見た方がいいよ
535:デフォルトの名無しさん
19/12/03 21:01:44.02 z2MNOJTT.net
>>524
違うんなら証拠出してみろよ
言ってることが薄っぺらくてゴミクズにしか見えねえが
そういう俺にお見それしましたと言わしめる内容がおまえにあるか?
身バレするようなことでなくて結構だ
話している内容に深みを感じるかどうかだ
もう一度言う、おまえの言葉にはそれがまるでない
536:デフォルトの名無しさん
19/12/03 21:24:21.32 qY14OTyg.net
>>524
> そういう意味で言ったんじゃないんだが
意味わからん
本を出してるって言うなら具体的に挙げられるよね?
537:デフォルトの名無しさん
19/12/03 21:26:06.12 A/ggV3OU.net
おまいらスレタイ
538:デフォルトの名無しさん
19/12/03 21:30:25.58 3WzRY7Z3.net
実にC++erらしいこのスレにぴったりの会話だな
539:デフォルトの名無しさん
19/12/03 21:58:21.97 c+vMaKjo.net
>>525
お前も感情的に攻撃的に相手を罵ってるだけで、中身空っぽに見えるぞ。
お前の自己評価はもっと高いのかもしれないけど端から見たらただのバカだよ。
540:デフォルトの名無しさん
19/12/03 22:13:59.08 z2MNOJTT.net
>>529
おまえ誰?
541:デフォルトの名無しさん
19/12/03 22:43:52.58 Tjb84Rtt.net
「現場でガリガリ」って可愛い表現だなw
アマチュア精神がにじみ出てる
542:デフォルトの名無しさん
19/12/03 23:17:48.08 jKB+EPlO.net
禿禿言うなよ
気にしてるらしいぞ
543:デフォルトの名無しさん
19/12/03 23:39:54.64 l6CFXVtO.net
お前らがC++高等テクニックww持ってるのは分かったから
まずまともな設計上げてこいやww
544:デフォルトの名無しさん
19/12/03 23:42:10.99 3WzRY7Z3.net
経験マウント vs 知識マウント
実に人格障害のC++erらしいスレだ
545:デフォルトの名無しさん
19/12/04 01:05:50 FhHmXOPx.net
知識も経験も豊富な奴おらんのか?
546:デフォルトの名無しさん
19/12/04 01:18:20 MnUOTj8y.net
>>535
多分、C++の仕様が異常なほど膨れ上がってること、JavaScriptやWebGL、
AjaxやC#なども勉強しなくてはならない事が多くなったことなどもあって、
プログラムを沢山しながら仕様にも詳しい人は壊滅状態であることは想像に難くない。
547:デフォルトの名無しさん
19/12/04 01:23:07.75 MnUOTj8y.net
>>536
というか、普通にプログラムしていても、HTML、CSS、HT
548:TP などの仕様はもちろん のこと、Androidやるなら、Java、Kotlin、NDK、iOSやるならSwift、 それに加えて、C#なら、WinFoms、WPFなどもあり、さらに、WSL、 PowerShellにbashやApacheの設定方法、ライセンス各種の勉強などなど、 やることが多くなってきている。本当は、React、Blazor、Vue.js、node.js Electron、flutter、wxWidget、Qt、GTK。別に全部やる必要はないが、 予備知識として知ってないと技術資料も理解しにくいことが多くなってきた。
549:デフォルトの名無しさん
19/12/04 01:25:21.34 FhHmXOPx.net
自分の得意分野以外は浅く予習しておいて使うときになって覚えて使わなくなったら忘れてる
550:デフォルトの名無しさん
19/12/04 01:26:04.91 MnUOTj8y.net
>>537
Python、Rust、Lua、curl、ant、gradle、git、github、wget なども知ってない
と話が理解できないことも多くなっている。
551:デフォルトの名無しさん
19/12/04 01:31:31.51 gHx24DkE.net
今時コードだけでプログラミングするもんでもあるまい
C++使いならフロントはばっさり切り捨ててAWSとGCPにスキルを振ったほうが一貫性があり無駄の少ないスキルセットになる
552:デフォルトの名無しさん
19/12/04 01:36:36 4dvDh/Ut.net
std::cout での出力フォーマット指定に関して教えてください。
cout.flag( ios::uppercase | ios::hex ) やら cout << setfill('0') とか
cout << scientific << setprecision(10) とかとか
大半の指定が 1回 数値 を出力した後も その状態が保持されたままなのに
cout << setw(24) による出力幅指定は その都度指定しないと忘れてしまう挙動になっています。
その都度指定する必要は他にもあるのか。それと、
URLリンク(www.cplusplus.com)
みたいな仕様を見て、どう読み取ればそれが正しい挙動であると分かるのか教えてほしいです。
ある個人ブログには setfill も毎回出力する度に指定する必要があるのだと書かれていましたが、
自分の環境では setfill は状態が保持されました。
553:デフォルトの名無しさん
19/12/04 01:41:33 9acC9vOn.net
フロントエンドは本当に時間の無駄
ましてC++プログラマならほとんど領域が被らないから単なる二足のわらじ状態で非効率なだけ
554:デフォルトの名無しさん
19/12/04 04:32:29 mZNCV5xz.net
>>529
読解力が無いのか>>508と同じく言語オタクだから気づかないのかわからんが
>>508と
>>512-513読み直してくれる?
C++の言語仕様を詳しく解説する本を、コンパイラ”以外の開発に携わってる”人間が書いてくれると
思ってる方がおかしいんだよ
>>508の目には純粋にC++関連の本しか映ってないんだろう
C++を前提としてるがC++そのものでなくその分野の専門的な知識を教えてる技術書がどれだけあると思ってんだ
555:デフォルトの名無しさん
19/12/04 04:32:49 mZNCV5xz.net
>>525
>えっ、ブラック労働環境で疲弊してて書く余裕がないって?w
こんな腐りきった発言する思い上がったゴミアマチュアに教えてやることなど何もない
お前が使ってるその箱で動いてるソフトは誰が書いてくれてると思ってんだ
556:543
19/12/04 06:39:12 mZNCV5xz.net
安価ミス
X >>529
○ >>526
557:デフォルトの名無しさん
19/12/04 07:09:58 Z3kanSY4.net
>>536
うん、想像なら只だもんな
558:デフォルトの名無しさん
19/12/04 07:33:04.63 8KgKER1O.net
そもそも現場の奴らは、現場のやり方しか身につける必要ないだろw
559:デフォルトの名無しさん
19/12/04 07:54:48 Jd4YzzOQ.net
>>545
各分野にコンパイラ開発は入らんのか?
まあお前の好きな分野でいいから具体的な本の名前挙げてくれ
560:デフォルトの名無しさん
19/12/04 08:05:44 mZNCV5xz.net
>>548
挙げたらどうなんの?お前には興味ない内容だと思うけど
「ド素人が言ってんだろ」と思ってるんだろうけど、お前の誤解を晴らすためになんで自分の分野晒さなきゃいけないの?
本の名前挙げたら謝るの?
561:デフォルトの名無しさん
19/12/04 08:06:15 mZNCV5xz.net
>>546
実際そうだと思うよ
>>512にも書いたけど、仕事でやってる人もフリーソフト開発者も
規格読んだことある人なんか皆無だと思うよ
他に勉強しなきゃいけないこと山ほどあるし、仕様(新しいのも含め)は必要なときにググって確認するだけ(>>538も言ってるけど)、むしろそうであるべき
それを「言語についていけない」なんて貶せるやつの神経がわからん
>>519とか、ソフト開発もメタプログラミングも出来ないレベルのド素人だろ?
何調子乗ってんの?自分はついていけてんの?w
開発力も無いし言語を活かせてもないのに、実際にC++を実用してる人を貶すとか
頭おかしい真似してるから言語オタクって言われるんだよ
(C++専門のライターも最近そういう傾向あるけど)
>>547
それはそれでどうかと思うけど
562:デフォルトの名無しさん
19/12/04 08:07:22 uB21TJa6.net
>>541 直接的な回答でない上に長々しい文章で気が引けるけど…。
『プログラミング言語C++』第4版の38章「入出力ストリーム」で
「width(n)の呼出しは、その直後に行われる<<による出力だけに影響を与える」
と書いてあるね(p. 1094)。
setw() は「次の出力のフィールド幅をn文字とする」(p. 1096 の下の表)
表の説明で“次の出力の”と限定されてるのはsetw()だけ。
で、一般的に書式指定やマニピュレータのうち、
どれが「一度指定したら別の指定をするまで有効」で、
どれが「指定された次の出力だけ有効、その後デフォルト状態に戻る」なのか、
N3337 の 27.5.3.2 周辺を見ても分からなかった。
基本的には URLリンク(www.cplusplus.com) よりも
少ない記述内容だし、「この指定は直後の一回の出力に限り有効」みたいな
補足の説明も見当たらない。
ISOやJISの規格に詳しい人が「素人め、ここに載ってるんだよ」と
ズバリ指摘してくれるのを期待して、調べた限りを投稿してみた。
563:デフォルトの名無しさん
19/12/04 08:21:05.72 Jd4YzzOQ.net
>>549
他の分野の人にどういう説明してるのかを知りたかっただけなんだけどね
まあ>>525が言うように薄っぺらな知ったかが吠えてるだけってわかったからもういいやw
564:デフォルトの名無しさん
19/12/04 08:24:57.77 uB21TJa6.net
>>541
setfill() じゃなくて setw() の話だけど、古い本に
「setw()の幅指定は、永続的に有効な実装と、直後の出力1回だけ有効な実装との
両方が存在するので、移植性を考えれば毎回指定する方が安全」とか載ってた。
もしかすると過去には「setfill() は1回だけ有効」な実装が存在したのかも知れん。
その後、規格で挙動が厳密に定められたのか、
今でも実装によって動作が違っても構わない(規格に明記されていない)のか、
肝心なその点は分からん。
565:549
19/12/04 08:41:52.15 0MJ4ry5i.net
>>552
言ってる意味がわからんが
煽れば何か教えてもらえると思ってるアホだろ
今までお前に何度も言ったと思うが、邪魔だから出てってくれ
566:デフォルトの名無しさん
19/12/04 08:46:18.46 Z3kanSY4.net
>>550
他に勉強しなきゃいけないことって具体的に何だ?
インターフェースだの通信規約だの法務だのを
規格を避けて勉強なんかできるのか?
そういうおまえ自身は本当に勉強してるのか?
567:デフォルトの名無しさん
19/12/04 08:48:00.43 6WV7ZyL7.net
>>555
一連の流れ読んでから言えよ
C++の規格や仕様の話だボケ
568:デフォルトの名無しさん
19/12/04 09:05:20.91 Z3kanSY4.net
>>556
おまえこそどーに目ぇつけとんのやあんだら
C++以外の規格なら読むんだって話じゃねえだろうがよ
569:デフォルトの名無しさん
19/12/04 09:08:12 d8r3fnrq.net
>>557
>C++以外の規格なら読む
誰がそんなこと言った?
他に勉強しなきゃいけないこと、に含まれてるだろうが
自分の勘違い棚に上げるなよ
570:デフォルトの名無しさん
19/12/04 09:15:53 Z3kanSY4.net
>>557
550は規格を読んだことがあるやつは皆無と言ったんだよ
それがC++だけにせよ規格全てにせよ
おかしい主張であることに変わりはない
自分の発言を読み返してみな
俺がわざわざ頓珍漢とか言ってやることもない
571:デフォルトの名無しさん
19/12/04 09:16:34 Z3kanSY4.net
安価ミスった
558な
572:554=556=558
19/12/04 09:32:28 mZNCV5xz.net
お前はC++の標準ライブラリ等の仕様の確認に毎回規格書読んでんの?
573:デフォルトの名無しさん
19/12/04 09:53:35 4dvDh/Ut.net
>>551, >>553 ありがとうございます。
今「C++ポケットリファレンス」を見たら
ほかのマニピュレータと異なり、std:setw()は例外的に効果が持続しません。
一度std::setw を指定した出力が行われると効果は解除されます
(std::setw(0)を呼び出した状態になります)。
とありました (p.250)。
それと...
$ man std::setw
~
The width property of the stream will be reset to zero (meaning "unspecified") if ~
ちゃんと書いてますね。何より先に man を見るべきでした。
とはいえ setw は "例外的" なのだとちゃんと教えてくれる本は助かるなあと思いました。
574:デフォルトの名無しさん
19/12/04 10:10:41 4dvDh/Ut.net
それから man の最後には URLリンク(cppreference.com)<)
で見れました。
575:デフォルトの名無しさん
19/12/04 10:52:51.16 vhuKISsK.net
規格確認部とかあるんじゃないの。
知らんけど。
576:デフォルトの名無しさん
19/12/04 10:57:38.20 Z3kanSY4.net
>>561
え? ・・・そうだけど?
規格票というか、正確にはドラフトな
何かおかしいか?
577:デフォルトの名無しさん
19/12/04 11:17:13 mZNCV5xz.net
それ無駄に時間かかってるんじゃないの
よくクビにならないな
578:デフォルトの名無しさん
19/12/04 11:19:22 sb3P/SSe.net
1.禿でも判るC++入門
2.判ると禿げるC++入門
3.禿専用C++
579:デフォルトの名無しさん
19/12/04 12:23:43.29 Jd4YzzOQ.net
>>554
煽る以前に>>513からはペラッペラの内容しかでてこないことはわかったからお前が出てけよw
580:デフォルトの名無しさん
19/12/04 12:29:09.42 Jd4YzzOQ.net
>>561
必要なら読むだろ
流石に毎回じゃないけど
そもそもお前は規格も読まないでテキトーにコード書いてるのか?
581:デフォルトの名無しさん
19/12/04 12:36:02.75 mZNCV5xz.net
>>569
>流石に毎回じゃないけど
なら黙ってろ
規格の原文読まない=テキトーにコード書く、なのかお前の中では
思い上がりすぎだろ
582:デフォルトの名無しさん
19/12/04 12:48:55.97 Z3kanSY4.net
いや、きちんと仕事したくて
伝聞に頼らず一次ソースを確認するんだよ
583:デフォルトの名無しさん
19/12/04 12:53:29.05 sb3P/SSe.net
実用コード書くより机上の空仕様書描くのが好きな人なんやろな
584:デフォルトの名無しさん
19/12/04 13:03:10.48 Jd4YzzOQ.net
>>570
> 規格読んだことある人なんか皆無だと思うよ
とか言うバカに言われてもなぁ
知識がペラッペラすぎるw
585:デフォルトの名無しさん
19/12/04 13:09:39.95 6uL3p
586:MIB.net
587:デフォルトの名無しさん
19/12/04 13:17:06.83 mquXx5f5.net
みんな私のために争って!
588:デフォルトの名無しさん
19/12/04 13:19:26.79 mZNCV5xz.net
「きちんと仕事したくて伝聞に頼らず一次ソースを確認」
なんか胡散臭くなってきたな・・・・
「仕事でやってる人もフリーソフト開発者も」のどちらにも当てはまらないのに噛み付いてきたんだろうな
エアプログラマの相手してスレ無駄遣いした、すまんかった
589:デフォルトの名無しさん
19/12/04 13:20:38.21 6uL3pMIB.net
ソフトエンジニアでC++の規格書を読む人なんてほとんどいないよ
そんなのを読んでも良い設計にはつながらない
590:デフォルトの名無しさん
19/12/04 13:23:39.63 6uL3pMIB.net
規格書で確認しないと書けない/読めないようなコードは
基本的には悪いコード
591:デフォルトの名無しさん
19/12/04 13:26:15.79 sb3P/SSe.net
ゴールポスト移動中ですね判ります
592:デフォルトの名無しさん
19/12/04 13:27:52.48 Z3kanSY4.net
規格書ではなく規格票な
つまらん齟齬を避けたいのも
規格票を読む目的の1つだ
593:デフォルトの名無しさん
19/12/04 13:42:20.48 MnUOTj8y.net
>>578
でも最近、特に海外の方で自分が知っている素朴な C++ とは全く違う
書き方をしている C++ コードを良く見かけるようになったので、
新しい仕様を学ばないと理解できなくなってきた。
STLを深く使うと C++ とは思えないようなコードになるので。
594:デフォルトの名無しさん
19/12/04 13:46:18.71 P3QxjggL.net
フロント周りは全くついていけない
コロコロと次から次へ節操なく移り変わって馬鹿じゃねえの、とつい老害的思考に
595:デフォルトの名無しさん
19/12/04 13:48:46.17 rFzpkzsp.net
C++20でコンセプトやモジュールやコルーチン記法が入ってきたら、そういう古兵にはもはやC++には見えんだろうなぁw
596:デフォルトの名無しさん
19/12/04 13:49:01.49 sb3P/SSe.net
CUIのフロントはTurboC++だったな
597:デフォルトの名無しさん
19/12/04 14:25:33.26 33/nOLSe.net
C++で音鳴らせるようになるの?
598:デフォルトの名無しさん
19/12/04 15:02:13 vhuKISsK.net
バスブーストですか?
599:デフォルトの名無しさん
19/12/04 15:46:25.30 MnUOTj8y.net
「フロント周り」って何のことですか??
600:デフォルトの名無しさん
19/12/04 16:29:27.61 vhuKISsK.net
フロント企業が一般消費者と直接取引する会社で、バックが暴力団じゃなかったっけ。
601:デフォルトの名無しさん
19/12/04 19:40:12.56 FhHmXOPx.net
つまんな
602:デフォルトの名無しさん
19/12/04 19:50:18.04 FhHmXOPx.net
企画書を読まないとわからないコードなんかあると思ってるのか?
読むべきはcppreferenceのようなアホにも分かるように優しく解説してくれてる文書
分からないことがあれば必要なキーワードを検索欄にぶち込んだらすぐに分かるようにできている
603:デフォルトの名無しさん
19/12/04 20:09:28.90 6yabeJe9.net
アホのサバイバルか
唾棄
604:デフォルトの名無しさん
19/12/04 20:33:31.84 ZHZFM6qI.net
プロでもアマチュアでもいいんだよ
初心者でも学生でもいいんだよ
ただし
身の程知らずのド素人が知ったふうな口を利いてるとさすがに叩かれるよ
605:デフォルトの名無しさん
19/12/04 20:49:47.75 +udf6Yna.net
>>577
> ソフトエンジニアでC++の規格書を読む人なんてほとんどいないよ
お前の周りはそうなんだろうな
> そんなのを読んでも良い設計にはつながらない
読んだことない奴はそう言うよなw
>>578
お前規格票に何を書いてるのか知らんだろ
まあそのまま沈んどけ
606:デフォルトの名無しさん
19/12/04 21:20:21.85 xsMIF6qI.net
ていうかC++のスレでこんな流れが加速するなんて
思ったよりC++erて数いたんだなぁ、というのが素朴な感想
607:デフォルトの名無しさん
19/12/04 21:22:48.52 DNIeF7b9.net
アホでも炎上商法はできるってことだ
608:デフォルトの名無しさん
19/12/04 21:54:34.88 vhuKISsK.net
じゃあ点呼取ります。
江添クン!
609:デフォルトの名無しさん
19/12/04 22:15:09.71 ZHZFM6qI.net
> 思ったよりC++erて数いたんだなぁ、というのが素朴な感想
C++erというよりここは単に無職と学生サンのすくつでしょw
610:デフォルトの名無しさん
19/12/04 22:19:24.66 7vpFGLgR.net
とりあえず>>593は無職だと思う
611:デフォルトの名無しさん
19/12/04 22:27:51.85 UrCkYA+I.net
c++11以降みたいなああいうコード書きたいなら変な見栄はらずにpythonでもrubyでもやってたらいいんだよ。
612:デフォルトの名無しさん
19/12/04 22:31:45.53 QZ1McR0s.net
C++コンパイラやSTL準拠ライブラリを作る仕事に関わってたら規格書を読まないとどうにもならないと思うけど、
そうじゃない人は市販のC++入門で十分じゃないかな。
613:デフォルトの名無しさん
19/12/04 22:33:17.56 J7QAHgda.net
>>596
金型の会社に出向いて定期的に講座やってるらしいね
金型の演算ってそんなC++が効くものなんだ
CGALみたいに幾何分野でバリバリ使われるのは知ってるけど、設計の分野も同じなんかな
614:デフォルトの名無しさん
19/12/04 22:33:57.92 UrCkYA+I.net
てか規格通りにまともに動くなんてのは例外ってことは
普通にc++を仕事で使ってりゃ分かるもんだがな。
その時点で江添みたいに実際の仕事で使ってないのが丸分かりになる。
615:デフォルトの名無しさん
19/12/04 22:58:37.27 CXPVLMHx.net
今時MSVCでも大部分は規格通り動くぞ
616:デフォルトの名無しさん
19/12/04 23:08:27.56 7MoywY5f.net
>>598
どこからそんなアホな決めつけしてるんだよ…
もしかして会社からセミナーとかにも行かせてもらえないような底辺なのか?w
617:デフォルトの名無しさん
19/12/04 23:22:31.61 vhuKISsK.net
式を教えてもいいけど、理解できるかどうか。
618:はちみつ餃子 ◆8X2XSCHEME
19/12/05 00:23:37 XYdg44Nt.net
必要なら読むし必要じゃないならないなら読まないってだけのことだろ。
そんなん場合によるっつーつまらん結論しかないと思うが。
619:デフォルトの名無しさん
19/12/05 00:28:04 wvPvimki.net
はいいつものクソ正論いただきました
620:デフォルトの名無しさん
19/12/05 00:35:44 dM4mxJ4y.net
実の無い(楽しそうでもない)話をつづけられるよりはクソ正論で鎮火してくれたほうがマシに思う。
件の人たちはそれで鎮火するような人でもないんだろうけど。
621:デフォルトの名無しさん
19/12/05 00:43:36 2jEFb1Vk.net
互いに見下しあい罵倒しあってこそC++er
ここは不毛なマウント取り合戦の場C++スレ
鎮火する必要なし
622:デフォルトの名無しさん
19/12/05 01:15:42 +j7BXLrg.net
また髪の話をしてる
623:デフォルトの名無しさん
19/12/05 02:59:31.66 9zn59iXI.net
すまんが、レベルの低い人から見ると、レベルの高い人が気軽に話した
内容が「マウントをとられた」と思ってしまうんだと思う。
そういうつもりで言ってなくても。
これは、公立の小学校でよく起きる現象で、問題になっている。
624:デフォルトの名無しさん
19/12/05 03:04:36.20 9zn59iXI.net
>>611
蛇足だが、これは欧米諸国でよく知られた現象。
アメリカで記名製掲示板が流行るのは、匿名性掲示板ではどうしても
それが起きてしまうので、それをよく分かった上でやっているのかも
知れない。それだけの理由ではないだろうけど。
625:デフォルトの名無しさん
19/12/05 06:18:49.18 eAZGTWY0.net
>>609-610
この流れを評するのに「不毛」って言葉を選ぶのはC++らしいね。
「マウント」も落語「頭山」を想起させる。
626:デフォルトの名無しさん
19/12/05 08:26:15 V4GZwDuE.net
しかしあれだな、C++ほどハゲがよく似合う言語を知らない
627:デフォルトの名無しさん
19/12/05 11:35:47 tjjaS4Ug.net
江添亮のC++入門 (webドラフト版? URLリンク(ezoeryou.github.io)再帰関数 )
を読んでます。
>例えば以下は階乗を計算する再帰で書かれたループだ。
> int factorial( int n ) { ...
> return n * factorial(n-1) ;
> ...
>このコードは末尾再帰になっている。
>末尾再帰は非再帰のループに機械的に変�
628:キできる特徴を持っている これ factorial(n-1) が返ってきたらスタックに積んである n を掛けないといけませんよね。 厳密には末尾再帰とは言えない気がします。 そういうの無しに「直帰でコール元に値を渡せる場合」に末尾再帰と言えるのだと思ってたんですが、 私の理解が間違っているのでしょうか? まあ今のコンパイラーは賢いので細かい事気にする必要ないのかもしれませんが。
629:デフォルトの名無しさん
19/12/05 11:37:52 IbmhSLeW.net
>>611
馬鹿ほどそれを気にするよな
判らなかったら調べれば良いのに
調べずに反論し始めるω
630:デフォルトの名無しさん
19/12/05 12:32:19 RTwQsK8m.net
>>615
末尾再帰じゃないよ
631:デフォルトの名無しさん
19/12/05 13:51:16 tjjaS4Ug.net
>>617 ですよね。
ちょっと気になってたのでスッキリしました。
632:デフォルトの名無しさん
19/12/05 18:12:34.01 5PaJAEA2.net
簡単にループに出来るものはループで記述した方が良いよ
末尾再帰の場合もそうじゃない場合も
実行速度、使用リソース、
デバッグしやすさ、
スタック計算ツールなどツール類の使用、
などなどいろんな要素で
633:デフォルトの名無しさん
19/12/05 18:50:53.78 9zn59iXI.net
>>619
本当は、再帰呼び出しだとスタックサイズの制限により呼び出しの深さ(階数)
に制限が付いてしまう。ローカル変数を沢山使っている関数で、
1000万個のオブジェクトを再帰的に処理すると、スタックオーバーフロー
が出てもおかしくない。しかも、最近のマルチスレッド環境だと、
スタックのサイズはどうしても制限が強くなり勝ち。
634:デフォルトの名無しさん
19/12/05 18:58:39.27 5PaJAEA2.net
一言で言うと「使用リソース」だね
635:デフォルトの名無しさん
19/12/05 19:02:32.74 5PaJAEA2.net
「最近のマルチスレッド環境」はあまり関係ない
固定スタックサイズの組み込みCPUの方がヤバい
PICみたいなハードウェアスタックだともっとヤバい
636:デフォルトの名無しさん
19/12/05 19:28:34.51 ZSRmDUxb.net
検討事項が増えるから仕事で再帰は使わんね。
理解できない人も多いし。
637:デフォルトの名無しさん
19/12/05 19:42:30.55 9zn59iXI.net
>>622
シングルスレッドだと、スタックは自動伸張することが可能だった。
ところが、32BIT のマルチスレッド環境だと仮想メモリ空間のアドレス
空間自体が不足してしまうので、それは難しい。
ただし、64BIT 環境だと仮想メモリ空間が大きいので余り問題にならない
かも知れない。
638:デフォルトの名無しさん
19/12/05 19:54:34.15 5zWy9aB9.net
再帰の例でよくでてくるフィボナッチ数列の計算なら
再帰より for で二変数保持しながら計算した方が性能でも可読性でも上だろうな。
639:デフォルトの名無しさん
19/12/05 20:04:07.94 5PaJAEA2.net
>>624
Windowsだとスタックサイズは32bitでも64bitでもデフォルト1MBだぞ
適当な事を言わないように
640:デフォルトの名無しさん
19/12/05 20:10:23.46 5PaJAEA2.net
>>625
組み込み型サイズ程度だと普通にexpを使って計算する方が速い
多倍長の巨体な値でも
素直に1個ずつ計算すると非常に遅い
もっとずっと高速な方法がある
641:デフォルトの名無しさん
19/12/05 20:16:10.38 5PaJAEA2.net
再帰をループに置き換えるので面倒なのは
いろんな箇所でたくさん分岐するヤツ
まあでも面倒ってだけで、
必ず再帰を使わずに記述出来る
642:デフォルトの名無しさん
19/12/05 20:21:10.87 5zWy9aB9.net
treeを辿るコードなんかは再帰のが書きやすいわな。
643:デフォルトの名無しさん
19/12/05 20:23:50.71 5PaJAEA2.net
treeをたどるコードは再帰コールするのが1箇所だからまだ楽な方
644:デフォルトの名無しさん
19/12/05 20:24:01.37 9zn59iXI.net
>>629
Tree は再帰でやるべきものの一つ。
スタックの制限も、Treeの「段数(階数)」自体が余り深くなりにくいので
問題が生じにくく、再帰でやっても問題ないものの一つでもある。
ただし、親子関係の深さ方向だけを再帰にし、兄弟方向は、単純な
ループを使うべき。
645:デフォルトの名無しさん
19/12/05 20:28:30.76 5PaJAEA2.net
再帰にすべきかどうかはものによる
例えばstd::setの検索は普通ループを使う
646:デフォルトの名無しさん
19/12/05 20:38:37.36 tjjaS4Ug.net
フィボナッチとかで再帰
末尾再帰を捨てる(性能とスタック無駄遣いに目を瞑る)と可読性はかなりいいと思うんです。
int fibo(int n) {
if (n<=2) return 1;
else return fibo(n-1) + fino(n-2);
}
その場で使い捨てるようなプログラムにはアリだと思います。
でも末尾再帰を目指すと.. . .
int fibo(int n, int a=1, int b=1){
if (n<=2) return b;
else return fibo(n-1, b, a+b);
}
どうなんですかね. . .。Lisp脳だと forループより好まれるかもしれません。
ちゃんと末尾再帰最適化が効けば性能は良いのでしょう。
647:デフォルトの名無しさん
19/12/05 20:48:58.05 5PaJAEA2.net
>>633
前半
見やすさはそれが一番だね
記述が定義通りなので
後半
それなら普通のループの方が分かりやすくないか?
648:デフォルトの名無しさん
19/12/05 21:03:01.64 tjjaS4Ug.net
あちら(Lisp)の世界ではそうでもないみたいですよ。
649:デフォルトの名無しさん
19/12/05 21:09:55.69 5PaJAEA2.net
へ~
650:デフォルトの名無しさん
19/12/05 21:23:00.63 oayOS3nx.net
C++てparallel_forとか未だにないんだな、まぁTBB使えばあるけど標準規格には用意されてない
仕方がないんでPartitionerは自前で作ったが、そんな付け焼き刃用意したところで、
いちいち明示的に各スレッドの終了の待ちあわせせにゃならん。
挙げ句の果てに
mtx.lock()
----
mtx.unlock()
て orz
クリティカルセクションはブロックで囲って
lock(mtx){
}
とでも書かせろや
オートunlockとかしょーもないもんは用意してバカじゃねーのか
しかも、未だにasync/await はなくて、C++20で実装て。
何が必要かわかってないのかC++規格作ってるアホ共
死ね
651:デフォルトの名無しさん
19/12/05 21:36:40.64 JlYSK1cQ.net
つstd::lock_guard
652:デフォルトの名無しさん
19/12/05 21:51:24.38 u0CioZb2.net
adync awaitなんてネイティブで実装しようとしたら面倒なのわかるだろうに
それでもぶっこんでくるのだからc++11以降は完全にポリシー変更しているよね
653:デフォルトの名無しさん
19/12/05 21:57:53.51 dM4mxJ4y.net
>>637 std::for_each(std::execution::par, ...) じゃダメだったの?
654:デフォルトの名無しさん
19/12/05 22:07:45.52 q0kDwfyl.net
ツリーの巡回はイテレータにするとスタックとキューを入れ替えるだけで深さ優先と幅優先を切り替えられますよ。
STLのスタックとキューはインターフェースが違うのでひと工夫必要ですが。
algorithmも使えてウマウマです。
655:
19/12/05 22:28:33.56 IPfJ90pV.net
>>615
末尾再帰ならこう書くかと
URLリンク(ideone.com)
656:デフォルトの名無しさん
19/12/05 22:53:24.80 wvPvimki.net
おいおい
そこはcpsで書いてマウント取るところだろ
657:デフォルトの名無しさん
19/12/05 23:00:13.77 uXzevjeq.net
>>637
お前のそのクソコードlockとunlockの間で例外投げたらあっという間にデッドロックだぞ
すぐにlock_guardに書き換えるか死ぬかどっちか選べ
658:デフォルトの名無しさん
19/12/05 23:44:19 JallKI28.net
状況説明:
Visual Studio 2019 Version 16.4.0 で std::exception::what() の戻り値を無視すると以下のようなC4834の警告が出るようになった。
> warning C4834: 'nodiscard' 属性を持つ関数の戻り値を破棄しています
なお、catchスコープでeについて何か書かないと以下の警告が出てしまう。
> warning C4101: 'e': ローカル変数は 1 度も使われていません。
今は以下のように記述して警告C4101が出ないようにしている。
try
{
// do something.
}
catch(std::exception& e)
{
e.what();
}
質問:
C4101とC4834の両方とも出ないようにするにはどうしたらいい?
659:デフォルトの名無しさん
19/12/05 23:57:51 2jEFb1Vk.net
>>645
(void)e.what();
660:645
19/12/05 23:58:13 JallKI28.net
自己解決しました。
try
{
// do something.
}
catch(std::exception& e)
{
(void)e;
}
661:645
19/12/05 23:59:17 JallKI28.net
>>646
回答ありがとうございます。
662:デフォルトの名無しさん
19/12/05 23:59:36 uXzevjeq.net
catch(std::exception&)
でええやん
663:デフォルトの名無しさん
19/12/06 00:01:11 Cd9yyMrn.net
>>645 ほんとうに例外を何も処理せず握りつぶしたいの?どんな状況?
664:645
19/12/06 00:12:07 Rpl4CMwP.net
>>650
スレッドの安全な終了。
665:645
19/12/06 00:19:17 Rpl4CMwP.net
>>649
マクロ切り替えでeを使うコードも使えるようにしておきたいので無名変数だと都合が悪い、という感じです。
666:デフォルトの名無しさん
19/12/06 00:24:27 hYHuFzfT.net
VCは2019から返り値を捨てるコードに警告出すようになって鬱陶しい
667:デフォルトの名無しさん
19/12/06 00:27:04 R5wwI9SD.net
[[nodiscard]]を確認せずに捨てる奴が悪い
668:デフォルトの名無しさん
19/12/06 00:30:55 Cd9yyMrn.net
>>651
std::exception& で受けると bad_alloc とか関係ない例外もまとめて無視しちゃいそうで、
それは「安全」なのか疑問。
669:デフォルトの名無しさん
19/12/06 00:51:39 jImJStBO.net
終了させるにしてもちゃんとやれ
670:645
19/12/06 00:54:05 Rpl4CMwP.net
>>655
どうせなにもできない事には変わりないので無視でいいかなと。
スレッド終了時にプログラム固有のリソース解放処理を確実にやりたい目的でのthrow&catchなのでC++標準ライブラリ自身の出す例外は無視、的な。
671:デフォルトの名無しさん
19/12/06 01:06:58 jImJStBO.net
ログ出力という大事な仕事があるだろ
672:デフォルトの名無しさん
19/12/06 02:04:04 Cd9yyMrn.net
>>657
それだとほんとに何か問題があって例外が飛んでるときに気づけなくて危なさ沿う、という話。
struct thread_exit {} とか専用の例外をthrow&catchしとけば、目的を達成しながら問題検出もできそうな。
673:デフォルトの名無しさん
19/12/06 06:39:31.51 pHI2Uem1.net
>>654
正論
674:デフォルトの名無しさん
19/12/06 07:31:29.17 zfbHpqVT.net
>>637
for_each(parあんじゃん
いちいち待ち合わせなんて
まだやってんの?
675:デフォルトの名無しさん
19/12/06 09:21:05 WVLKHQiQ.net
寒い
URLリンク(34vv.net)
676:デフォルトの名無しさん
19/12/06 12:56:29 vJ3416lC.net
>>644
てめえの糞おつむでは未だにlock_guardなんか使ってんのかよww
んな互換性のためだけに残ってるコード人様に勧めてどーするつもりだ。
677:はちみつ餃子 ◆8X2XSCHEME
19/12/06 14:04:15 6r3WfMRZ.net
>>635
LISP では再帰で書くなどという俗説を信じるな。
678:デフォルトの名無しさん
19/12/06 14:28:22.22 hyokDgJv.net
もしかしてメンバ関数の定義で引数や戻り値に不完全型を使っても許されるようになりましたか?
autoが許されるのだから、許されて良いような気がするのですが。
679:デフォルトの名無しさん
19/12/06 14:55:34.36 qwyC8IXX.net
厳密にはわからんけど、クラステンプレートやメンバ関数テンプレートだと
それらが実体化されるより前であれば不完全型は使えるはず(コンパイラによっても変わることあるけど
autoも似たような理屈だと思う、宣言だけして関数定義より前で使うとエラーになるはず
680:デフォルトの名無しさん
19/12/06 15:04:26 hyokDgJv.net
URLリンク(ja.cppreference.com)
> 関数の引数の型および戻り値の型は、削除された関数を除き (C++11以上)不完全クラス型にできません。 完全性のチェックは関数の本体の文脈で行われます。
これはそういうことを言ってるんですかね。
681:デフォルトの名無しさん
19/12/06 15:08:45 hyokDgJv.net
関数本体内のコンテキストで完全型になっていれば良いのであれば、いろいろできるような気がする。
あんなことやこんなことが。
682:デフォルトの名無しさん
19/12/06 15:14:03 qwyC8IXX.net
あーそういうことだね
関数定義前なら不完全でもいいってことだと思う
すまんテンプレートには限らないぽいな
683:デフォルトの名無しさん
19/12/06 15:29:10 hyokDgJv.net
どうもありがとう。
684:デフォルトの名無しさん
19/12/06 15:45:43.96 LIPaYWZD.net
>>661
step =1000000;
for( double r2 = R2 - dev2; r2 < R2 + dev2; r2 += dev2 / step ){
}
こいつを並列化したいんだが、ループカウンタをintに変更するとしても、
2M ノードのvector確保するわけ?
ループカウンタ設定するために並列化要るがなw
単にループ回したいだけなのに巨大なメモリ要るてww
調べてみてもC#やtbbのparallel_for相当がないんだが
これら見ながら企画作ったC++規格策定メンバーってお前と同じパープリンじゃないのか?
685:デフォルトの名無しさん
19/12/06 16:13:34 zfbHpqVT.net
>>671
おい、真面目に情報提供している者に対してパープリンとは何だ
俺だけじゃなく640もパープリン呼ばわりか
後出しという自分の落ち度を棚に上げて
そういう発言は5chのフランクさでは済まんぞ
686:デフォルトの名無しさん
19/12/06 16:14:35 hYHuFzfT.net
初手人格否定はC++erのセオリー
687:デフォルトの名無しさん
19/12/06 16:14:40 jImJStBO.net
>>671
お前が生きてる価値の無いゴミなだけ
688:デフォルトの名無しさん
19/12/06 16:39:35.59 qwyC8IXX.net
>>661もたいがい無意味に煽ってる書き込みだと思うがw
689:デフォルトの名無しさん
19/12/06 17:15:36 hyokDgJv.net
URLリンク(news.livedoor.com)
690:デフォルトの名無しさん
19/12/06 18:34:35 PPEOwhLk.net
>>671
OpenMP & SIMD intrinsics
691:デフォルトの名無しさん
19/12/06 19:25:13.77 3oohkeAj.net
lock_guard使わずになに使うの?
692:デフォルトの名無しさん
19/12/06 19:35:24.69 3J8eqh7h.net
ひのきのぼう と かわのふく
693:デフォルトの名無しさん
19/12/06 22:24:12.87 hyokDgJv.net
ヒノキの棒でぶっ叩けば人は死ぬし、皮の服は火焔や刃物を弾く。
どちらかというと上級者向けの装備だと思います。
694:デフォルトの名無しさん
19/12/06 23:38:17.10 pm/DYA/c.net
operator[]で読み書きって毎回調べないとできず
set()、val()とか関数で読み書きしてすますことが多いのだが
新文法などで簡単にやる方法わかりますか
695:デフォルトの名無しさん
19/12/07 01:06:30 5MyaotCE.net
なにいうとるのかわからん
operator[]をどう実装してどこで使えばいいのか理解できてないという話なのか
696:デフォルトの名無しさん
19/12/07 01:08:17 .net
>>615
余再帰だな
江添やっちまったなあ!
697:デフォルトの名無しさん
19/12/07 01:59:52 4p8EX4B8.net
>>682
ふつうの実装では、A[n]は参照しかできず
A[n] = の代入ができないという事
698:デフォルトの名無しさん
19/12/07 05:36:21.30 UnIspDfI.net
>>684
「参照」を返せばいいだけだが、そういうことではない?
まさか「参照」を知らないと言うわけではないよね。
699:デフォルトの名無しさん
19/12/07 06:10:47.12 .net
ちょくちょく初心者質問スレに行った方が良い人までここに堂々と書き込むのが
スレを妙な雰囲気にしてる
700:デフォルトの名無しさん
19/12/07 06:56:32.11 C/SdN+6e.net
>>615 >>683
「余再帰」 corecursion って呼ぶのか。勉強になるわ。
江添さんのページを見てみたんだけど、
「このコードは末尾再帰になっている。」の行の前に
最初の return n * factorial(n-1) を返す関数を
末尾再帰に書き換えたコードの引用があるべきなのを
挿入し忘れたように思えるね。
・末尾再帰でないコード例を示す
・末尾再帰にするとこうなる ... コード欠落
・末尾再帰はループに書き換えられるよ
・ループにしたコード例
っていう流れで自然に読めるでしょ。
701:デフォルトの名無しさん
19/12/07 09:42:39 fV2E4bDP.net
でもこのシグネチャのfactorialのままだと末尾再帰できなくね?>>642みたいになるかと。
702:デフォルトの名無しさん
19/12/07 11:49:45.97 4p8EX4B8.net
>>685
たとえばbitsetを実装しようして、内部では32や64bitの整数へ保存するとして
参照だけではB[i]=1はできないかと
703:デフォルトの名無しさん
19/12/07 11:56:48.08 vGCb4aWc.net
最初からそうかけよ
704:デフォルトの名無しさん
19/12/07 11:57:37.74 4p8EX4B8.net
これのこと、毎回調べ直さないと作れない
プロキシ
実は、C++ でも、かなり無理やりですが、(見た目だけは)プロパティのようなことができたりします。 とりあえず、百聞は一見にしかずということで、以下の例を見てください。
利用側、すなわち、main の中では、 まるで普通の変数に対する代入・参照であるかのようなコードになっています。
このからくりは、 age の読み書きに、AgeProxy という名前の別のクラスを介することで実現します。 Age は AgeProxy 型の変数です。
AgeProxy の代入演算子(operator =)と int 型へのキャスト(operator int)を通して、 Person クラスの age 変数の読み書きをします。
ちなみに、こういう例のように、いったん別のクラスを通して値を読み書きしたりする方法を、 プロキシ(proxy: 代理)と呼びます。
まあ、このパターンは、利用側の見た目は綺麗になりますが、 実装は面倒ですし、実行効率もあまりよいとはいえません。
さらに言うと、プロパティを virtual 化しようとすると、 この例よりもさらに複雑な実装が必要になります。
こういう感じの話を振り返った上で、 改めて C# の「プロパティ」機能を見ると、 便利な機能だなぁとつくづく思います。
URLリンク(ufcpp.net)
705:デフォルトの名無しさん
19/12/07 12:00:39.08 vGCb4aWc.net
相談じゃないなら他へ
706:デフォルトの名無しさん
19/12/07 12:02:24.40 U9XnFfRh.net
プロパティはコード上でフィールドのように扱えることよりもメンバとしてIDEが認識できるところに意味がある
最近はC#でもデザイナに頼らずに何でもコード上で済ませるスタイルが主流になりつつあり、プロパティの必要性は薄れている
初期化時にパラメータを纏めて渡したりするだけなら生フィールドで十分なわけだしな
707:デフォルトの名無しさん
19/12/07 12:11:07.35 JfALL9r7.net
proxyで別に実行効率は下がらんよね
てかstd::vector<bool>は大昔から存在するし
708:デフォルトの名無しさん
19/12/07 12:25:43.42 cPeMBqq7.net
C++Builder使えばよいのでは。
709:デフォルトの名無しさん
19/12/07 12:42:26.89 JVuyt12v.net
>>684, >>684
他言語での getter/setter メソッド的な事をやりたいのだろうなあと考えてみました。
例えば a[i] と書かれたら、 内部データ(typename T) への参照(T&) を返すのではなく
新たに内部クラス(fields: owner, index)を用意して、そのオブジェクトを作って返すようにします。
これに代入演算子(operator =) と キャスト演算子(operator T()) を実装すれば...
・a[7] = 99; //setter
・cout << a[7]; //getter
こうやって普通にアクセスできます。メソッドを分離したお陰で、
添え字アクセスによるデータベースのupdate / select みたいな事が可能になります。
代入演算子は最低二種類必要で
Inner& operator =(const T& value); // a[i] = value
Inner& operator =(const Inner& rhs); // a[i] = a[j]
二つ目を実装しないと暗黙のコピー代入演算子が作られてしまい
a[i] = a[j]; のような代入操作は実質空文化します。(owner/indexがコピーされるだけ )
素人の思いつきですがサクっと試したら機能しました。
もっとスマートなやりかたもあるでしょう。
710:デフォルトの名無しさん
19/12/07 12:55:02.34 vGCb4aWc.net
意味の無い所で無駄にコードサイズを増やさなくても
普通にset/get関数で良いよ
711:デフォルトの名無しさん
19/12/07 13:20:15 euj2mOhA.net
setterの戻り値はvoid?this参照?
712:デフォルトの名無しさん
19/12/07 13:22:21 cPeMBqq7.net
bitsetは参照返すからset(1).set(2).set(10)などと連鎖できる。
713:デフォルトの名無しさん
19/12/07 13:35:21 QAzyzpfC.net
>>672
なんだてめえパープリンの活け造りが
ぶち殺すぞ低脳野郎
ぶち殺し行ってやるから住所さらせや糞野郎
714:デフォルトの名無しさん
19/12/07 13:36:49 hSwO/YRY.net
これがC++er流の挨拶です
715:デフォルトの名無しさん
19/12/07 13:37:29 QAzyzpfC.net
>>672
真面目に糞情報しか提供できない出来損ないならすっこんでろウスノロ
とにかくぶち殺しに行ってやるから住所晒せや
716:デフォルトの名無しさん
19/12/07 13:38:45 QAzyzpfC.net
>>678
今ごろlock_guardて ID:zfbHpqVT 並の情弱かオマエww
717:デフォルトの名無しさん
19/12/07 13:44:27 QAzyzpfC.net
パープリンどころかアホの活造り ID:zfbHpqVT
パープリンどころかアホの活造り ID:zfbHpqVT
パープリンどころかアホの活造り ID:zfbHpqVT
パープリンどころかアホの活造り ID:zfbHpqVT
パープリンどころかアホの活造り ID:zfbHpqVT
出てこい知障
718:デフォルトの名無しさん
19/12/07 13:49:37 cPeMBqq7.net
そもそも10を代入して値が10にならないなら、意味的に組み込み型の整数とは違うのかもしれない。
整数ではないものを整数で代用したときに起きる問題なのかも。
719:デフォルトの名無しさん
19/12/07 14:40:05 gqZSFnI2.net
効いてる効いてるw
弱い犬ほどよく吠えるねえ
720:デフォルトの名無しさん
19/12/07 15:57:37 kC4yD5gf.net
>>683
江添なんて前からそんなもんだぞ。
人の間違いには厳しいが自分の間違いには逆ギレするような男だ。
721:デフォルトの名無しさん
19/12/07 15:59:46 cPeMBqq7.net
clang-cl結構いいね。
722:デフォルトの名無しさん
19/12/07 16:00:40 cPeMBqq7.net
>>707
全方面に厳しいって事?
自分にも他人にも。
723:デフォルトの名無しさん
19/12/07 16:33:39.12 C/SdN+6e.net
「自分の間違い(に対する指摘)には逆ギレ」ってことでしょな。
書籍として印刷・発売する前にネット公開して広く意見を求める、
「お前らタダで読ませてやるから品質向上に協力しろや」方式と考えれば
誰にも損のないやり方だと思うけどね。
少なくとも俺にとってはありがたい。
724:デフォルトの名無しさん
19/12/07 17:24:58.21 ZsYnLuoj.net
意見を反映させる能力があればな。
725:デフォルトの名無しさん
19/12/07 17:31:56.94 xzwyWWlr.net
URLリンク(github.com)
726:デフォルトの名無しさん
19/12/07 20:57:58.81 KRZcErEE.net
なんかうちのVisual Studioだと
iscntrl('\t')
が非0(真)になるんだけど
これって正しい?
727:デフォルトの名無しさん
19/12/07 21:22:47.02 F8+HNqgO.net
表示できる文字と空白以外は全部制御文字だね
728:デフォルトの名無しさん
19/12/07 22:13:42.05 KRZcErEE.net
isspace('\t')は非0(真)なので'\t'は空白のはずェ、
つかGoogle Testにかけたらこうじゃわ↓↓↓
TEST(stdlibTest, ctype) {
ASSERT_FALSE(isspace('\0'));
ASSERT_TRUE(isspace('\n'));
ASSERT_TRUE(isspace('\r'));
ASSERT_TRUE(isspace('\t'));
ASSERT_TRUE(isspace(' '));
ASSERT_TRUE(iscntrl('\0'));
ASSERT_TRUE(iscntrl('\n'));
ASSERT_TRUE(iscntrl('\r'));
ASSERT_TRUE(iscntrl('\t'));
ASSERT_FALSE(iscntrl(' '));
}
729:デフォルトの名無しさん
19/12/07 23:02:18.90 cPeMBqq7.net
盲目の為のロケールがあったら、ベル以外全部制御文字になるんだろか。
730:デフォルトの名無しさん
19/12/07 23:12:25.74 fV2E4bDP.net
0x00から0x1fまでは全部制御文字で違和感ないけど。
731:デフォルトの名無しさん
19/12/07 23:19:02.06 EVNez7Da.net
printableってのは音声出力も含むのではなかろうか
732:デフォルトの名無しさん
19/12/08 02:49:31 C6vow3qq.net
盲人のブログラマーって普通にいるんだな
なんかかっけーな
733:デフォルトの名無しさん
19/12/08 08:37:40.25 9eRqVWoa.net
Visual Studio 16.4オンラインアプデしたら
それまで使ってたParallel Studio2019 U5使えなくなった。
Visual C++でコンパイルできるがIntel Compilerはコンパイル失敗してしまう
それと、
プロジェクトのプロパティからIntel Compilerは選択できるんだが、
プルダウンメニューからIntel Compilerを選択できないようになった。
Parallel Studio最インスコしてもコンパイルは失敗する。2019 U5 が16.4に対応してないとかないよね?
734:デフォルトの名無しさん
19/12/08 08:39:40.14 drue7Jpy.net
>>713
例によってロケール依存らしいが "C" だと
iscntrl() が真を返す値は 0x00-0x1f, 0x7f みたいね。
これまた例によって unsigned char 範囲と EOF 以外の値については未定義。
つうか、このくらいは5ちゃんねる以外から情報を探す方が
早くて確実じゃないかしら。
735:デフォルトの名無しさん
19/12/08 13:11:02.08 hM3Qn2JU.net
C++で作ったブラウザテニスゲーム(PWA仮対応):
URLリンク(yutakaaoki.github.io)
Wasm+PWA+WebGL+"C++"
736:デフォルトの名無しさん
19/12/08 14:09:36.54 3pi+cAN/.net
>>722
青木さんは何をしようとしてるんですか?
737:デフォルトの名無しさん
19/12/08 14:17:37.03 vN1dzuVf.net
>>722
で、質問は?
738:デフォルトの名無しさん
19/12/08 14:36:36.30 3pi+cAN/.net
もっと早くは最速って意味ですか?
それとも速くしたいって意味ですか?
739:デフォルトの名無しさん
19/12/08 14:56:59.55 3pi+cAN/.net
インテリコード、ほんとに提案してくるね。
お前は次にこう書く・・・って。
740:デフォルトの名無しさん
19/12/08 15:02:14.03 J+6Nu+8f.net
歯垢の妨げにしかならんわ
741:デフォルトの名無しさん
19/12/08 17:09:58.86 hM3Qn2JU.net
>>723
C++ Nex という言語とそのIDEを作ってますが、マルチプラットフォームの
ツールキットも同時に作ってます。MacやiOSなどまで native 対応するのは
貧乏なので機材の関係で難しいので、wasm に対応することでひとまずは
凌ごうかと思いました。
ツールキットのソースをBSD/MIT系ライセンスで公開して、C++ Nex も
無料で使えることにして、みなさんのお力をお借りして native対応の
ツールキットに出来ればいいのですが。ひとまず、Windows/Wasm/Android
くらいまでなら対応できる目処は立ってます。iOSについては、swift
言語が出したオブジェクトファイルとリンクすることはWindows上でも
実験できそうなので、その基礎的な部分だけならMakefileなどの開発環境を
用意することはできそうです。
Mac miniがあれば、iOS native 対応も出来そうなんですが。
742:デフォルトの名無しさん
19/12/08 17:29:31.80 3pi+cAN/.net
基本的にネイティブ志向なんですね。
743:デフォルトの名無しさん
19/12/08 17:29:36.52 oOCB7Yl8.net
>>728
ソースコード見せて
744:デフォルトの名無しさん
19/12/08 17:30:50.90 3pi+cAN/.net
ウェブアセンブラは興味あるんだけど、イマイチ情報が。
745:デフォルトの名無しさん
19/12/08 17:32:13.08 3pi+cAN/.net
高橋茉奈著やさしいウェブアセンブラが待たれる今日この頃。
746:デフォルトの名無しさん
19/12/08 17:37:23.93 hM3Qn2JU.net
>>730
ライセンスは、BSD, MIT, LGPL(静的リンクしてもGPL感染しない例外あり) の
どれかにするか迷っています。
747:デフォルトの名無しさん
19/12/08 17:43:51.77 8Jdq2NjK.net
WTFPLライセンスにしようぜ
748:デフォルトの名無しさん
19/12/08 23:33:02 Cj3eSjEv.net
>>721
>"C" だと
>iscntrl() が真を返す値は 0x00-0x1f, 0x7f
ほう、そんなことが規格のどこにかいてあるのですか
749:デフォルトの名無しさん
19/12/08 23:58:38 .net
>>722
Android 4.4.2 Chromeで動作した
750:デフォルトの名無しさん
19/12/09 01:41:27 ExBOPGUm.net
ID無いのは5chの人って事?
751:デフォルトの名無しさん
19/12/09 01:45:35 aHmkn8DW.net
有料ユーザーってこと
752:デフォルトの名無しさん
19/12/09 01:45:54 dDDj5i4x.net
これ5chじゃなかったの?
753:デフォルトの名無しさん
19/12/09 02:33:36.15 ExBOPGUm.net
そうなんだ。
754:デフォルトの名無しさん
19/12/09 02:41:32 ExBOPGUm.net
>>739
なかの人はID付かないのかなって。
755:デフォルトの名無しさん
19/12/09 08:06:32.09 V5HcCSm8.net
>>735
C++ の規格が引用してる C の規格じゃないかな。
質問のつもりで書いてるなら、あまりに態度が悪い気がするし、
「その投稿の内容は間違ってる」と主張したいなら、
もっと直接的・具体的に間違ってるという根拠を示すべきだと思うよ。
756:デフォルトの名無しさん
19/12/09 09:58:16 CUCDgsHX.net
>>736
ありがとう。
757:デフォルトの名無しさん
19/12/09 17:54:07.48 c5eP1gUS.net
>>742
デタラメぬかしておいて根拠を求められたら示せないばかりか
オマエこそデタラメである根拠を出せとか、さすがですね
758:720
19/12/09 18:35:46.39 ZGVF76Fo.net
自己レスです
Visual Studio 16.4では
Intel Parallel Studio 2019 u5は動かないようです。
16.3に戻せないし
どーしよー
URLリンク(software.intel.com)
759:デフォルトの名無しさん
19/12/09 19:45:24.14 ExBOPGUm.net
POSIXには明確にCロケールの定義が書かれていた。
760:デフォルトの名無しさん
19/12/09 20:19:32.09 B3OID8x5.net
>>745
今のVSの最新版は人柱仕様であり、検証無しでプロダクション用をアップデートしてはいけません
勉強になったねー
761:デフォルトの名無しさん
19/12/09 21:02:54.27 HdhKIpY6.net
昔からVSはそんなもんだ。
てかc++コンパイラなんて全部そんなもんだ。
762:デフォルトの名無しさん
19/12/09 21:45:50.54 P+A0aO3e.net
>>745
リンク先に回避策があるって書いてあるやん
763:デフォルトの名無しさん
19/12/09 21:53:17.84 G+eF5KMH.net
>>746
それはCの規格と必ずしもイコールではないがな。
764:デフォルトの名無しさん
19/12/09 22:32:03.14 ExBOPGUm.net
どういうことですか。
765:デフォルトの名無しさん
19/12/09 23:24:28.11 qFr59Y2H.net
POSIX には ISO C には無い追加の定めがあり、したがって
766:> POSIX にある定めは必ずしも ISO C 一般に言えることではないということです。
767:デフォルトの名無しさん
19/12/09 23:30:20.36 c5Uv/Cv5.net
わかったはもうこれからはstd::isspace()とstd::iscntrl()を使うは
768:デフォルトの名無しさん
19/12/09 23:43:16.79 ExBOPGUm.net
メンバ変数にstd::listを使うと移動コンストラクタがnoexceptに出来ないのですが。
こんな時はどうするのでしょう。
769:デフォルトの名無しさん
19/12/09 23:58:06.53 aHmkn8DW.net
メンバのstd::listをポインタにする
770:デフォルトの名無しさん
19/12/09 23:59:06.89 qFr59Y2H.net
>>754
まず何を見て「出来ない」と言っているのかを明らかにします。
771:デフォルトの名無しさん
19/12/10 00:04:16.84 KeuWZv5z.net
URLリンク(ja.cppreference.com)
僕はいつもここを見ます。
772:デフォルトの名無しさん
19/12/10 00:06:34.29 KeuWZv5z.net
std::swapの特殊化がnoexceptです。
これを使いますか。
773:デフォルトの名無しさん
19/12/10 00:08:47.32 KeuWZv5z.net
引数無しのコンストラクタがnoexceptじゃないから無理でした。
774:デフォルトの名無しさん
19/12/10 00:37:17 OASxW0Hh.net
そもそも noexcept にする必要性が不明だし、呼び出してる関数が
全部 noexcept じゃなくても std::list 実装を限定してよかったり、特定実装での
bad_alloc =即死の不都合が必要性と釣り合うなら noexcept にすることはできるし、
最大限の移植性も bad_alloc の通知も noexcept もすべて本当に必要なら
>755 でポインタって答えも出てるのに。
775:デフォルトの名無しさん
19/12/10 00:41:00 2YzAsKi1.net
自動でnoexceptに成らないなら、自分で望みのnoexceptの定義すりゃ良いだろうに
部品が例外投げるなら内部でcatchして適切に処理すればいい
776:デフォルトの名無しさん
19/12/10 00:43:28.28 KeuWZv5z.net
URLリンク(github.com)
これです。
777:デフォルトの名無しさん
19/12/10 07:32:12 Xhvd8FYl.net
>>761
正論
778:デフォルトの名無しさん
19/12/10 19:05:35.05 yM6al2d7.net
途中でcコード通るとか何らかの理由があるんだろう。
779:デフォルトの名無しさん
19/12/11 13:14:22.35 KfdgnhFC.net
ある一つの変数に対してstd::threadで作成したプロセスは値を更新し続けて、メイン関数の方では値を読み続ける場合は排他処理する必要はありませんか?
メイン関数の方は必要なときだけ値が読めればいいので読みこぼしは無視していいです
780:デフォルトの名無しさん
19/12/11 13:19:53.65 iOg65oSz.net
>>765
変数が std::atomic<T> でなければ排他制御の必要があります。
781:デフォルトの名無しさん
19/12/11 13:21:20.19 m9WEF2SZ.net
>>765
atomicでないとだめ。プリミティブな型でもあやしい。
りーどらいとろっくするがよい。
782:デフォルトの名無しさん
19/12/11 13:23:21.98 /1t9T7AP.net
基本型かつ確実にレジスタでなくメモリに書き出されているならそうだね
std::atomcを使うのが無難
その条件ならmemory_order_relaxedを指定すればバリアのオーバーヘッドは避けられる
面倒だけどね
783:デフォルトの名無しさん
19/12/11 13:35:45.33 IATqHbi6.net
質問者じゃないけど
読みこぼしとかタイミングによるズレが問題ないとしても排他制御なしに読み書きする時点で未定義動作だからNG
って認識でおk?
784:デフォルトの名無しさん
19/12/11 13:46:34.56 iOg65oSz.net
はい。
URLリンク(timsong-cpp.github.io)
> The execution of a program contains a data race if it contains two
> potentially concurrent conflicting actions, at least one of which is
> not atomic, and neither happens before the other, except for the
> special case for signal handlers described below. Any such data race
> results in undefined behavior.
785:デフォルトの名無しさん
19/12/11 14:00:16.36 /1t9T7AP.net
言語仕様はそうだろうけど
x86なら実際は多くの場合バリア不要だったりするから
最終的にどういうinstructionになっているのか知っておくと理解が深まる
786:デフォルトの名無しさん
19/12/11 15:24:29 nkoUZIKM.net
x86系CPUで普通のメモリへの読み書きで順番が入れ替わる可能性があるのは write => read だけ
これ以外だったり同期が必要なければ
排他制御は不要
もちろん、
一連のデータリード�
787:ナデータの一貫性が必要であれば一貫性確認の仕組みなり排他制御なりは当然必要だし、 コンパイラが読み書きを省略する可能性のあるコードであれば volatileを付けるなど、省略を防ぐ必要はある ymmレジスタを使えばアトミックな読み書きが出来るので 256bit以内なら一貫性も保てる マルチコアARMの場合は DMB命令を入れておけば確実 パフォーマンスに問題が無い箇所であれば、 移植性の為にも、素直にC++の排他制御を入れておこう!
788:デフォルトの名無しさん
19/12/11 15:42:23 ax9A/ZTc.net
お前らRustに移行とか考えたりするの?
789:デフォルトの名無しさん
19/12/11 17:37:57.91 bM/oaPHs.net
>>773
個人的には絶対に移行したくないと思っている。
790:デフォルトの名無しさん
19/12/11 17:42:08.10 /1t9T7AP.net
どっちもやったらええがな
791:デフォルトの名無しさん
19/12/11 18:13:18.74 bM/oaPHs.net
>>771
質問されたような簡単な場合であっても、少なくとも、80386系CPUでも、
物理CPUを2つ積んでいるようなマシンだと、色々な配慮が必要。
一つの理由は、CPUキャッシュが外部メモリに反映されていない場合が
あるため。
もう一つは、値の変化のタイミングがコードに書いた通りで無い事があり、
僅かにタイミングがずれることで、「すれ違い」現象の様なことが
おきることがある。これが起きると、変数の値をフラグ的に利用して
厳密に何かをやりたい場合に非常に致命的な問題を生じてしまうことがある。
これを避けるには、80386の設計者は、XOR交換命令を使うことを想定
していたらしい。
2つのスレッドでデータをやり取りする場合には色々と注意が必要で、
普通はデータが準備できたかどうかをCreateEvent(),SetEvent(),
WaitForSingleEvent()などで待機して処理するのが基本。