C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part145
http://mevius.5ch.net/test/read.cgi/tech/1568362404/
このスレもよろしくね。
【初心者歓迎】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/ (日本語)
探検
C++相談室 part146
■ このスレッドは過去ログ倉庫に格納されています
2019/11/07(木) 11:35:36.76ID:4wggfTwe
431デフォルトの名無しさん
2019/12/01(日) 17:33:23.47ID:YHuSOkLJ 木の枝を回廊にしたらグラフになります。
グラフはスパコンのベンチマークにされるくらいにメジャーな構造です。
グラフはスパコンのベンチマークにされるくらいにメジャーな構造です。
432デフォルトの名無しさん
2019/12/01(日) 17:36:46.35ID:YWi4MX0G433デフォルトの名無しさん
2019/12/01(日) 18:14:48.13ID:XkMP/E25 普通ハッシュ使うよね?とかそういう発想が皆無なのが、
ここは馬鹿しかいないってことを示してるよな。。
ここは馬鹿しかいないってことを示してるよな。。
434デフォルトの名無しさん
2019/12/01(日) 18:19:34.55ID:Enyr5Fgf >>430
多分混同してるのはお前だけかと
多分混同してるのはお前だけかと
435デフォルトの名無しさん
2019/12/01(日) 18:22:27.22ID:Enyr5Fgf436デフォルトの名無しさん
2019/12/01(日) 18:36:45.84ID:n5DjgtsH ハッシュを使うんじゃねえな
ハッシュをどう作るか?になる
perl5/hv.h at blead ・ Perl/perl5 ・ GitHub
https://github.com/Perl/perl5/blob/blead/hv.h
cpython/dict-common.h at master ・ python/cpython ・ GitHub
https://github.com/python/cpython/blob/master/Objects/dict-common.h
ハッシュをどう作るか?になる
perl5/hv.h at blead ・ Perl/perl5 ・ GitHub
https://github.com/Perl/perl5/blob/blead/hv.h
cpython/dict-common.h at master ・ python/cpython ・ GitHub
https://github.com/python/cpython/blob/master/Objects/dict-common.h
437デフォルトの名無しさん
2019/12/01(日) 18:53:22.71ID:ManO1ilk 木やグラフがほしいって言ってる人が、ハッシュマップや内部実装だけが木構造のコレクションなんていらんだろ。。
438デフォルトの名無しさん
2019/12/01(日) 19:11:19.73ID:IheeS71f うんち
439デフォルトの名無しさん
2019/12/01(日) 19:20:12.56ID:fP4CRSrQ 「木が欲しい」という要件に対して確認もなく二分木渡すような奴はダメ
ディレクトリ構造表したい奴に二分木渡してどうすんだ
ディレクトリ構造表したい奴に二分木渡してどうすんだ
440デフォルトの名無しさん
2019/12/01(日) 19:25:06.56ID:WB/GHlzr 二分木って規格で決めてるの?
441デフォルトの名無しさん
2019/12/01(日) 19:36:32.68ID:IheeS71f うんち
442デフォルトの名無しさん
2019/12/01(日) 20:13:00.99ID:p3Z7Nr0h 「木が欲しい」なんていう人には
とりあえず何でもいいから木を渡しておけばいいんだよ
とりあえず何でもいいから木を渡しておけばいいんだよ
443デフォルトの名無しさん
2019/12/01(日) 20:31:05.42ID:p3Z7Nr0h 木は用途や使い方次第で適する作り方が異なるので
標準コンテナを組み合わせたカスタムで良いと思うよ
標準コンテナを組み合わせたカスタムで良いと思うよ
444デフォルトの名無しさん
2019/12/01(日) 20:51:16.81ID:YHuSOkLJ445デフォルトの名無しさん
2019/12/01(日) 21:01:15.36ID:BhgcTKiH C++11以降なら子ノードをweak_ptrの配列で持つとか?
446デフォルトの名無しさん
2019/12/01(日) 21:09:55.37ID:YHuSOkLJ447デフォルトの名無しさん
2019/12/01(日) 21:31:39.82ID:vEIKl7N1 著作権表示なしにMITライセンスにできたっけ
448デフォルトの名無しさん
2019/12/01(日) 22:14:07.56ID:9WgCOaQB サンプルとかライセンスとか頭沸いてんのかこいつ
下痢便を神棚に飾って人に配るような所業
下痢便を神棚に飾って人に配るような所業
449デフォルトの名無しさん
2019/12/01(日) 22:32:33.44ID:YHuSOkLJ 著作権表示は、
2019 Yakitori
が必要なら使って。
2019 Yakitori
が必要なら使って。
450デフォルトの名無しさん
2019/12/01(日) 22:32:48.31ID:YHuSOkLJ >>449
日本語不自由だな
日本語不自由だな
451デフォルトの名無しさん
2019/12/01(日) 22:38:20.61ID:vEIKl7N1 ?
452デフォルトの名無しさん
2019/12/01(日) 22:41:32.80ID:IheeS71f うんち漏れそう
453デフォルトの名無しさん
2019/12/02(月) 00:33:17.14ID:RIgVO6ZZ >>448
だな
だな
454デフォルトの名無しさん
2019/12/02(月) 02:45:23.23ID:btxUm/V/ オランダのTIOBEの調査でも、C#よりJavaやC/C++が人気で、
他の会社による日本での求人数もJavaやC/C++の方がC#より上だそうだ。
JavaScript、PythonやRubyは、求人数では大したことが無いらしい。
Webページを製作している人がネットでは多いので、JS、Python、Ruby
などが人気であるかのように見えるだけかもしれない。
他の会社による日本での求人数もJavaやC/C++の方がC#より上だそうだ。
JavaScript、PythonやRubyは、求人数では大したことが無いらしい。
Webページを製作している人がネットでは多いので、JS、Python、Ruby
などが人気であるかのように見えるだけかもしれない。
455デフォルトの名無しさん
2019/12/02(月) 03:22:15.51ID:Lvay36w9 >>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 はかなり下の方。
すまん。日本での求人数は、
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 はかなり下の方。
456デフォルトの名無しさん
2019/12/02(月) 03:29:10.52ID:Lvay36w9 >>455
個人的見解としては、VS code が 5ch で評価が高かったのは、言語が
TypeScript や JavaScript と HTML で記述されているので、JSで
プログラムすることを希望するプログラマが、JSの求人を増やすために
JS製の成果物を高く評価していたからかもしれない。
また、Javaの伸び率はかなり高い。Rubyの求人は日本では多いようだが、
アメリカでは少ない。C#の人気は、ある時期までは延びたが、今は停滞期
に入ったようだ。しかも今後学びたい言語としては、C よりも低い。
個人的見解としては、VS code が 5ch で評価が高かったのは、言語が
TypeScript や JavaScript と HTML で記述されているので、JSで
プログラムすることを希望するプログラマが、JSの求人を増やすために
JS製の成果物を高く評価していたからかもしれない。
また、Javaの伸び率はかなり高い。Rubyの求人は日本では多いようだが、
アメリカでは少ない。C#の人気は、ある時期までは延びたが、今は停滞期
に入ったようだ。しかも今後学びたい言語としては、C よりも低い。
457デフォルトの名無しさん
2019/12/02(月) 03:36:47.51ID:Lvay36w9 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)
また、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)
458デフォルトの名無しさん
2019/12/02(月) 03:57:59.67ID:qRRc8YVo CとC++とC#の区別ができる営業いないんだよな
459デフォルトの名無しさん
2019/12/02(月) 04:06:59.74ID:3lD7gpLY 営業って年取った技術者がやるもんだろ
460デフォルトの名無しさん
2019/12/02(月) 06:49:53.19ID:MoZo3p1s 今はもう戦力外技術者なんて即解雇だよ
そもそも大手だと営業と技術者は別会社
そもそも大手だと営業と技術者は別会社
461デフォルトの名無しさん
2019/12/02(月) 07:41:42.15ID:tW9RdYoY なんで大手条件が勝手に加わるのか
462デフォルトの名無しさん
2019/12/02(月) 08:23:03.95ID:mQVkXZA1 零細中小なんて誰も興味ない
463デフォルトの名無しさん
2019/12/02(月) 08:42:45.44ID:GldGaTIn 比較するもんじゃないだろ
C++は好きだが、在庫管理システムをC++で書けと言われたら全力で拒否してC#を推すぞ俺は
C++は好きだが、在庫管理システムをC++で書けと言われたら全力で拒否してC#を推すぞ俺は
464デフォルトの名無しさん
2019/12/02(月) 11:06:47.45ID:5u9Q6RC4 ほんとそれだな
きみらはいつになったらライトバンとセダンの使い分けができるようになるのか・・
きみらはいつになったらライトバンとセダンの使い分けができるようになるのか・・
465デフォルトの名無しさん
2019/12/02(月) 11:42:23.75ID:L9XsPrRa466デフォルトの名無しさん
2019/12/02(月) 13:15:55.16ID:/N45p/D+ でもJavaはベンチとると速いんだけど、実際は遅い。
これ、リソースを食いすぎるのが原因なので、本当はサーバーよりクライアントに向いているんじゃないのかな。
これ、リソースを食いすぎるのが原因なので、本当はサーバーよりクライアントに向いているんじゃないのかな。
467デフォルトの名無しさん
2019/12/02(月) 13:16:09.89ID:xJykAg3Z ライトバンとセダン?
スリッパと自転車と乗用車と飛行機とロケット
くらい使い分けないとダメ
スリッパと自転車と乗用車と飛行機とロケット
くらい使い分けないとダメ
468デフォルトの名無しさん
2019/12/02(月) 13:19:02.21ID:/N45p/D+ C++はメモリーの分断化があるので、長時間起動し続けるサーバーには向いていないと言われてるんだけど、実際にやってみたら全く問題なかった。
考えてみると、JavaプログラムをホストするシステムがC/C++で書かれてるんだから、本当に問題になるなら、Javaも無理なはず。
考えてみると、JavaプログラムをホストするシステムがC/C++で書かれてるんだから、本当に問題になるなら、Javaも無理なはず。
469デフォルトの名無しさん
2019/12/02(月) 13:20:28.22ID:/N45p/D+ Androidは特に不満もなく動くので、Javaはクライアントでこそ力を発揮するような気がします。
470デフォルトの名無しさん
2019/12/02(月) 13:21:19.03ID:xJykAg3Z メモリは潤沢にあるし
アドレス変換もあるので
よほど下手に作らなければ
PCでフラグメントは問題にはならない
そんな事を心配する時代じゃない
組み込みだと話は別
アドレス変換もあるので
よほど下手に作らなければ
PCでフラグメントは問題にはならない
そんな事を心配する時代じゃない
組み込みだと話は別
471デフォルトの名無しさん
2019/12/02(月) 13:21:57.37ID:/N45p/D+ 機種ごとの差を言語が吸収してくれるなら、こんな楽なことないし。
一方、サーバーは、サービス提供側が機種を自由に選べるのでJavaである必要が無いと思う。
一方、サーバーは、サービス提供側が機種を自由に選べるのでJavaである必要が無いと思う。
472デフォルトの名無しさん
2019/12/02(月) 13:23:17.46ID:xJykAg3Z473デフォルトの名無しさん
2019/12/02(月) 13:23:19.93ID:/N45p/D+474デフォルトの名無しさん
2019/12/02(月) 13:30:11.70ID:wB1a1keO >>468
それは完全に理解不足
Javaや.NETのVMはC++で静的に確保した大きなメモリ領域をヒープと呼んでいる
でアプリ内でnewするとオブジェクトとしてその中の領域が割り当てられ、ハンドル(生ポではない!)をアプリがオブジェクト参照として受け取る
C++のオブジェクトとの大きな違いはオブジェクトを再配置できることであり、
GCが必要に応じてヒープ上のオブジェクトを移動して詰めるため断片化が生じにくい
C++でも生ポを使わなければ再配置できるんだけどね
それは完全に理解不足
Javaや.NETのVMはC++で静的に確保した大きなメモリ領域をヒープと呼んでいる
でアプリ内でnewするとオブジェクトとしてその中の領域が割り当てられ、ハンドル(生ポではない!)をアプリがオブジェクト参照として受け取る
C++のオブジェクトとの大きな違いはオブジェクトを再配置できることであり、
GCが必要に応じてヒープ上のオブジェクトを移動して詰めるため断片化が生じにくい
C++でも生ポを使わなければ再配置できるんだけどね
475デフォルトの名無しさん
2019/12/02(月) 13:31:49.39ID:az4xQt0G メモリ激増のお陰じゃねえの
476デフォルトの名無しさん
2019/12/02(月) 13:41:55.06ID:qRRc8YVo その辺はOSの仕事であるべきやと思うわ
477デフォルトの名無しさん
2019/12/02(月) 13:49:06.39ID:az4xQt0G やってることがさほど変わらず100MB確保から1GB確保にするだけで
断片化率が1/10になる
プログラミングの技量が全く変化しないのにも関わらず安全性が10倍になる
つまりマシンの搭載メモリが1GBから10GBになるだけで安全係数が10倍になる
これぞ大富豪プログラミング
断片化率が1/10になる
プログラミングの技量が全く変化しないのにも関わらず安全性が10倍になる
つまりマシンの搭載メモリが1GBから10GBになるだけで安全係数が10倍になる
これぞ大富豪プログラミング
478デフォルトの名無しさん
2019/12/02(月) 15:06:09.31ID:rcvN6dfE >>474
windows3.1のGlobalAllocみたいのを今さらドヤられても…
windows3.1のGlobalAllocみたいのを今さらドヤられても…
479デフォルトの名無しさん
2019/12/02(月) 15:20:31.50ID:Vo2mhncO >>468
実はかなり古くから、C/C++ の malloc(), new のヒープメモリから確保したメモリの
断片化は、実際に問題になるようなことはとても少ないといわれています。
というのは、断片化というのは、確保したメモリを開放したときに出来た
「隙間にある空きメモリ」が再利用されにくい場合に起きるものなんですが、
実際には、再利用されることが多いためです。なぜなら、おなじサイズの
オブジェクトを new することが多いためです。この場合、完全に再利用されるので
断片化の問題と言うものは全く起きないと言っても過言では有りません。
それから、通常、1つのオブジェクトのサイズは小さく、それが多数集まって
データをなしていることが多いのです。このことから、異なるサイズのオブジェクト
であっても、1つ1つのオブジェクトのサイズが小さいため、断片化したとしても、
再利用される確率が高いのです。まず、同じサイズのオブジェクトであれば再利用されます。
異なるサイズであっても、昔開放されたオブジェクトよりも、小さいサイズのオブジェクトを
新しく確保する場合であれば再利用されます。
このようなことから現実の例では、断片化しても、使われないメモリの量はある程度の比率
に収まると言われており、それは GarbageCollection を行うためのオーバーヘッドの
メモリのサイズと比べても余り大きいものではないのです。
ゲームはメモリー効率も求められますが、それでも C/C++ が使われているのは、
メモリー断片化の量が一定比率より多くなら無い事が経験的に知られているためです。
実はかなり古くから、C/C++ の malloc(), new のヒープメモリから確保したメモリの
断片化は、実際に問題になるようなことはとても少ないといわれています。
というのは、断片化というのは、確保したメモリを開放したときに出来た
「隙間にある空きメモリ」が再利用されにくい場合に起きるものなんですが、
実際には、再利用されることが多いためです。なぜなら、おなじサイズの
オブジェクトを new することが多いためです。この場合、完全に再利用されるので
断片化の問題と言うものは全く起きないと言っても過言では有りません。
それから、通常、1つのオブジェクトのサイズは小さく、それが多数集まって
データをなしていることが多いのです。このことから、異なるサイズのオブジェクト
であっても、1つ1つのオブジェクトのサイズが小さいため、断片化したとしても、
再利用される確率が高いのです。まず、同じサイズのオブジェクトであれば再利用されます。
異なるサイズであっても、昔開放されたオブジェクトよりも、小さいサイズのオブジェクトを
新しく確保する場合であれば再利用されます。
このようなことから現実の例では、断片化しても、使われないメモリの量はある程度の比率
に収まると言われており、それは GarbageCollection を行うためのオーバーヘッドの
メモリのサイズと比べても余り大きいものではないのです。
ゲームはメモリー効率も求められますが、それでも C/C++ が使われているのは、
メモリー断片化の量が一定比率より多くなら無い事が経験的に知られているためです。
480デフォルトの名無しさん
2019/12/02(月) 15:28:19.20ID:/N45p/D+ フェイスブックがPHPのコードを翻訳機でC++コードに変換して配備してるそうですが。
そんなことするなら最初からC++で書けばいいのに。
そんなことするなら最初からC++で書けばいいのに。
481デフォルトの名無しさん
2019/12/02(月) 15:33:38.42ID:Vo2mhncO >>474
C/C++ では、配列ではなくリンクリストを積極的に使うようにすることに
よって、メモリーが断片化しても再利用される確率を高くすることができます。
というのは、データの基本となっている要素のオブジェクトのサイズが
小さいため、さまざまなサイズのデータを new しても、結果的に、
断片化された空きメモリも高い確率で再利用されるためです。
new、delete するオブジェクトのサイズがランダムな場合で、
断片化空きメモリが残っている場合、確率論的には、おおよそ 2回に1回は
断片化空きメモリが再利用されることになるでしょう。もちろん、
delete された回数が少な過ぎる場合、そもそも断片化空きメモリの個数が少なすぎる
ので、再利用できる確率は低くなります。それは、初期化時やファイルからデータ
読み込み時などにどんどんメモリを new していくよう場合ですので、そもそも
断片化が起きる余地も有りません。
なお、ポインタとリンクリストを組み合わせると、よくある場合には、他の
集合アルゴリズムよりも、効率が高くなりやすいことが知られています。
ただし、文字を集合させて文字列を作るような場合は例外です。
C/C++ では、配列ではなくリンクリストを積極的に使うようにすることに
よって、メモリーが断片化しても再利用される確率を高くすることができます。
というのは、データの基本となっている要素のオブジェクトのサイズが
小さいため、さまざまなサイズのデータを new しても、結果的に、
断片化された空きメモリも高い確率で再利用されるためです。
new、delete するオブジェクトのサイズがランダムな場合で、
断片化空きメモリが残っている場合、確率論的には、おおよそ 2回に1回は
断片化空きメモリが再利用されることになるでしょう。もちろん、
delete された回数が少な過ぎる場合、そもそも断片化空きメモリの個数が少なすぎる
ので、再利用できる確率は低くなります。それは、初期化時やファイルからデータ
読み込み時などにどんどんメモリを new していくよう場合ですので、そもそも
断片化が起きる余地も有りません。
なお、ポインタとリンクリストを組み合わせると、よくある場合には、他の
集合アルゴリズムよりも、効率が高くなりやすいことが知られています。
ただし、文字を集合させて文字列を作るような場合は例外です。
482デフォルトの名無しさん
2019/12/02(月) 15:39:04.52ID:Vo2mhncO >>481
配列の場合、delete するとメモリー上に大きな空き領域が出来ますが、
それより大きなサイズの配列を new しようとすると、そこが再利用できません。
なぜなら、配列の場合、連続したメモリ領域が固まって必要になるため、
要素の個数が N だとすると、N 個全てが一度にまとまって入りきる領域を探す
必要になるためです。
ところが、リンクリストの場合、要素数 N が大きくなっても、バラバラな
領域に分散して格納することが出来ます。すると、とても高い確率で、
分断化された空きメモリが再利用されることになります。
配列の場合、delete するとメモリー上に大きな空き領域が出来ますが、
それより大きなサイズの配列を new しようとすると、そこが再利用できません。
なぜなら、配列の場合、連続したメモリ領域が固まって必要になるため、
要素の個数が N だとすると、N 個全てが一度にまとまって入りきる領域を探す
必要になるためです。
ところが、リンクリストの場合、要素数 N が大きくなっても、バラバラな
領域に分散して格納することが出来ます。すると、とても高い確率で、
分断化された空きメモリが再利用されることになります。
483デフォルトの名無しさん
2019/12/02(月) 15:50:07.84ID:Vo2mhncO >>481
「2回に1回」と書きましたが、実際にはもっと確率は高いです。
リンクリストを使っている場合、要素を全部 delete したような場合は、開放された
空きブロックは、余り断片化せずに、比較的高い確率で結合され、大きな空きブロックに
なるためです。空きメモリは、元の要素のサイズの複数個分以上になっている確率が
高くなります(複雑ですが、管理領域のサイズもこれに加わります。)。
この性質があるため、現実には、小さいサイズのオブジェクトを要素とする集合
が多種類有った場合、それを好きに new, delete した場合、50% よりずっと高い確率で
断片化空きメモリーは再利用されます。
「2回に1回」と書きましたが、実際にはもっと確率は高いです。
リンクリストを使っている場合、要素を全部 delete したような場合は、開放された
空きブロックは、余り断片化せずに、比較的高い確率で結合され、大きな空きブロックに
なるためです。空きメモリは、元の要素のサイズの複数個分以上になっている確率が
高くなります(複雑ですが、管理領域のサイズもこれに加わります。)。
この性質があるため、現実には、小さいサイズのオブジェクトを要素とする集合
が多種類有った場合、それを好きに new, delete した場合、50% よりずっと高い確率で
断片化空きメモリーは再利用されます。
484デフォルトの名無しさん
2019/12/02(月) 16:10:33.93ID:Vo2mhncO >>483
誤解無きように細くしておくと、「50% より大きい」というのは、
「断片化された空き領域が再利用される確率」
のことで、「断片化率」ではありません、。断片化率はもっと
小さな値になり、条件によりますが、例えば、数%〜10%程度
が目安になります。最悪のケースだともっと大きいのですが、
ケースバイケースで適切なデータ構造(集合アルゴリズム)を
使っているとこの程度に収まります。また、適切なデータ構造を
選択することはそんなに難しいわけではありません、。
誤解無きように細くしておくと、「50% より大きい」というのは、
「断片化された空き領域が再利用される確率」
のことで、「断片化率」ではありません、。断片化率はもっと
小さな値になり、条件によりますが、例えば、数%〜10%程度
が目安になります。最悪のケースだともっと大きいのですが、
ケースバイケースで適切なデータ構造(集合アルゴリズム)を
使っているとこの程度に収まります。また、適切なデータ構造を
選択することはそんなに難しいわけではありません、。
485デフォルトの名無しさん
2019/12/02(月) 16:15:53.26ID:Vo2mhncO >>475
既に、Windows95くらいの時期のメモリ容量で、C/C++のメモリ断片化は
問題が無い程度になっていました。実際には、MS-DOSの時代でも既に
問題なかったのですが。
とにかく、今の若い人の目線で言えば、古代ともいえるくらい古い時代に
既に C/C++ のメモリー断片化問題は問題が無い程度にハードウェアが
発達済みなのです。PC-8801 の 8BIT 時代には問題があったので、
N88-BASIC を筆頭に、GarbageCollection 方式をとっていましたが、
それは、若い人には「超古代文明」時代でしょう。
既に、Windows95くらいの時期のメモリ容量で、C/C++のメモリ断片化は
問題が無い程度になっていました。実際には、MS-DOSの時代でも既に
問題なかったのですが。
とにかく、今の若い人の目線で言えば、古代ともいえるくらい古い時代に
既に C/C++ のメモリー断片化問題は問題が無い程度にハードウェアが
発達済みなのです。PC-8801 の 8BIT 時代には問題があったので、
N88-BASIC を筆頭に、GarbageCollection 方式をとっていましたが、
それは、若い人には「超古代文明」時代でしょう。
486デフォルトの名無しさん
2019/12/02(月) 16:34:28.08ID:Vo2mhncO >>485
また誤解が入りそうなので細くしておきます。
N88-BASIC などが GarbageCollection を使っていたのは、本当に
マシンのメモリが少ないのでデータをぎゅーぎゅー詰めに隙間無く
入れることが重要だったためです。
一方、JavaやC#がGarbageCollection を使っているのは、どちらかと
いうと、「メモリー開放の自動化」のためです。参照カウンタだけで
は、循環参照問題が生じるため、時々、広い範囲のメモリブロックを
巡回して、循環参照していても本当に使って無い場合を厳密に見つけ出して、
徹底的に開放することを行います。
そのため、メモリーの断片化問題とはまた違う意味で、メモリー開放の
自動化には、GarbageCollection が必要となっています。
N88-BASIC 時代と、現在の Java, C# とでは、同じ GarbageCollection
でも主な役割が違うと考えられます。もちろん、断片化を防ぐ役割も同時に
果たしてくれますが。
また誤解が入りそうなので細くしておきます。
N88-BASIC などが GarbageCollection を使っていたのは、本当に
マシンのメモリが少ないのでデータをぎゅーぎゅー詰めに隙間無く
入れることが重要だったためです。
一方、JavaやC#がGarbageCollection を使っているのは、どちらかと
いうと、「メモリー開放の自動化」のためです。参照カウンタだけで
は、循環参照問題が生じるため、時々、広い範囲のメモリブロックを
巡回して、循環参照していても本当に使って無い場合を厳密に見つけ出して、
徹底的に開放することを行います。
そのため、メモリーの断片化問題とはまた違う意味で、メモリー開放の
自動化には、GarbageCollection が必要となっています。
N88-BASIC 時代と、現在の Java, C# とでは、同じ GarbageCollection
でも主な役割が違うと考えられます。もちろん、断片化を防ぐ役割も同時に
果たしてくれますが。
487デフォルトの名無しさん
2019/12/02(月) 16:40:43.00ID:Vo2mhncO >>486
誤字訂正: 細く ---> 補足
・BASIC言語にはポインタが無かったので、循環参照問題は有りませんでした。
・BASIC言語における GarbageCollection は、主に文字列領域の開放のためです。
A$="HELLO WORLD" と入れた後、A$="" とした時、元の文字列に使っていた
領域は、しばらく経った後に GarbageCollection で開放される仕組みでした。
ですので、文字列を余り使わなければ GarbageCollection も余りおきませんでした。
なお、DIM A(100) のように確保した配列は、余り開放することは有りませんでしたが、
開放した場合も、しばらく後に GarbageCollection の対象になっていたと思われます。
誤字訂正: 細く ---> 補足
・BASIC言語にはポインタが無かったので、循環参照問題は有りませんでした。
・BASIC言語における GarbageCollection は、主に文字列領域の開放のためです。
A$="HELLO WORLD" と入れた後、A$="" とした時、元の文字列に使っていた
領域は、しばらく経った後に GarbageCollection で開放される仕組みでした。
ですので、文字列を余り使わなければ GarbageCollection も余りおきませんでした。
なお、DIM A(100) のように確保した配列は、余り開放することは有りませんでしたが、
開放した場合も、しばらく後に GarbageCollection の対象になっていたと思われます。
488デフォルトの名無しさん
2019/12/02(月) 17:06:01.34ID:wB1a1keO リンクリストってシーケンシャルアクセスで毎回キャッシュミスするから、
配列の代わりに全面的に使ったりしたら断片化とか最早どうでもいいレベルでパフォーマンス低下するぞ
配列の代わりに全面的に使ったりしたら断片化とか最早どうでもいいレベルでパフォーマンス低下するぞ
489デフォルトの名無しさん
2019/12/02(月) 17:15:40.51ID:Vo2mhncO >>488
リンクリストでシーケンシャルアクセスする場合、キャッシュ以前に
ポインタをたどるようにアクセスしないといけないのですが、
最近、配列と同じような通し番号方式でアクセスしようとする人が
多くなっています。ライブラリなどは、以前にアクセスした番号が
k の場合、そのポインタを覚えておいて、プログラマが k + 1 の番号
をアクセスしようとした場合、後続のノードへのポインタをたどる
ことで高速化している場合があるので、特に問題が無い場合がありますが、
それを深く理解せずに、本当に先頭のノードからたどってしまった場合、
本来なら O(N)で済むところが、O(N^2) になってしまいます。
リンクリストでシーケンシャルアクセスする場合、キャッシュ以前に
ポインタをたどるようにアクセスしないといけないのですが、
最近、配列と同じような通し番号方式でアクセスしようとする人が
多くなっています。ライブラリなどは、以前にアクセスした番号が
k の場合、そのポインタを覚えておいて、プログラマが k + 1 の番号
をアクセスしようとした場合、後続のノードへのポインタをたどる
ことで高速化している場合があるので、特に問題が無い場合がありますが、
それを深く理解せずに、本当に先頭のノードからたどってしまった場合、
本来なら O(N)で済むところが、O(N^2) になってしまいます。
490デフォルトの名無しさん
2019/12/02(月) 17:16:14.80ID:/N45p/D+ >>487
ヌルポ。
ヌルポ。
491デフォルトの名無しさん
2019/12/02(月) 17:18:32.46ID:Vo2mhncO >>489
C/C++ でのリンクリストは、場所を覚えるのは通し番号ではなく、ポインタ
で行うことが基本です。ところが、最近、通し番号で覚えてしまうプログラムを
書く人が増えているように感じます。それは、キャッシュのために遅くなっているの
ではなく、計算オーダーが完全に違ってくるために遅くなるため、ただごとではない
遅さを招きます。
C/C++ でのリンクリストは、場所を覚えるのは通し番号ではなく、ポインタ
で行うことが基本です。ところが、最近、通し番号で覚えてしまうプログラムを
書く人が増えているように感じます。それは、キャッシュのために遅くなっているの
ではなく、計算オーダーが完全に違ってくるために遅くなるため、ただごとではない
遅さを招きます。
492デフォルトの名無しさん
2019/12/02(月) 20:46:52.56ID:rSqEF7g8 ネトウヨ東大特任准教授、謝罪するも言い訳「AIの過学習によるもの」
https://medaka.5ch.net/test/read.cgi/jsaloon/1575275488/
https://medaka.5ch.net/test/read.cgi/jsaloon/1575275488/
493デフォルトの名無しさん
2019/12/02(月) 20:59:09.09ID:RyZvLJkF >>487
循環参照問題の有無はポインタ(アドレス)とは関係ないでしょ。
循環参照問題の有無はポインタ(アドレス)とは関係ないでしょ。
494デフォルトの名無しさん
2019/12/02(月) 21:16:13.89ID:6AEGHd3a TIOBEってなんて読めばいいの?
ちおべ?
ちおべ?
495デフォルトの名無しさん
2019/12/02(月) 22:59:36.28ID:OlcC/UBE ハッシュテーブルで要素Xが既存要素Yと衝突した場合でもXを格納したい場合は
リハッシュかリストになる
キモス
リハッシュで容量をちゃんと使い切るには相当にハッシュ関数を考えねばならない上に
衝突データを取り出すのに何回リハッシュしたかを見ながら要素をたどっていく必要があり、
ハッシュの検索性を帳消しにしてしまいかねない
よってリストのが圧倒的に簡単で速い
リハッシュかリストになる
キモス
リハッシュで容量をちゃんと使い切るには相当にハッシュ関数を考えねばならない上に
衝突データを取り出すのに何回リハッシュしたかを見ながら要素をたどっていく必要があり、
ハッシュの検索性を帳消しにしてしまいかねない
よってリストのが圧倒的に簡単で速い
496デフォルトの名無しさん
2019/12/02(月) 23:15:49.08ID:OlcC/UBE >>493
ある
ガベージコレクト対象データでもって他のガベージコレクト対象データを指し示すような
再帰構造が表現不可能なら循環参照は当然起きない
N88-BASICの文字列はキャラクターの集まりであって他の文字列を指し示したりできないから、
相当の無能か悪意を伴って設計しない限り、文字列メモリのガベージコレクションで
循環参照は起こしようが無い(やるべきことは素のmalloc/freeに他ならない
ある
ガベージコレクト対象データでもって他のガベージコレクト対象データを指し示すような
再帰構造が表現不可能なら循環参照は当然起きない
N88-BASICの文字列はキャラクターの集まりであって他の文字列を指し示したりできないから、
相当の無能か悪意を伴って設計しない限り、文字列メモリのガベージコレクションで
循環参照は起こしようが無い(やるべきことは素のmalloc/freeに他ならない
497デフォルトの名無しさん
2019/12/02(月) 23:29:11.52ID:VdJ0qliF498デフォルトの名無しさん
2019/12/02(月) 23:30:20.73ID:VdJ0qliF すまん>>497はまちがい
499デフォルトの名無しさん
2019/12/03(火) 04:41:05.52ID:LCf1R81a まだやってたのか
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
500デフォルトの名無しさん
2019/12/03(火) 06:45:35.36ID:Ocr+v9UU C++20あたりになるともうついていけそうにないな。
501デフォルトの名無しさん
2019/12/03(火) 07:20:16.39ID:k7viogN8 conceptの仕上がり次第だろうな
Cのrestrictもそうであるように
うるさすぎると嫌気がさすやつが続出する
Cのrestrictもそうであるように
うるさすぎると嫌気がさすやつが続出する
502デフォルトの名無しさん
2019/12/03(火) 14:10:18.28ID:LOAssVxZ 実際にコードを書いてないやつほど仕様を知っててアホみたいなこだわりを見せる
ってことが常態化してる。
そろそろロクでもない結末を迎える。
ってことが常態化してる。
そろそろロクでもない結末を迎える。
503デフォルトの名無しさん
2019/12/03(火) 14:24:39.60ID:jKB+EPlO 並列処理じゃないですかねこれからは
マルチなコアをもりもり使えないと
マルチなコアをもりもり使えないと
504デフォルトの名無しさん
2019/12/03(火) 14:38:06.74ID:g2sdmHcp505デフォルトの名無しさん
2019/12/03(火) 15:33:28.77ID:+wDBcAl/ コンパイラやパーサーを作っているか、本を書こうとしている人だとすれば
隅々まで仕様を知る必要があるから、単なる自己満足の言語ヲタクとは
限らない。
隅々まで仕様を知る必要があるから、単なる自己満足の言語ヲタクとは
限らない。
506デフォルトの名無しさん
2019/12/03(火) 15:40:53.19ID:LOAssVxZ コンパイラやパーサを作ってる人よりも
本やブログを書くだけの馬鹿のが変な仕様にこだわってるのが問題。
後者は単なる自己満足の言語ヲタクと変わらん。
端的にカスでいなくなった方がいい存在と思う。
本やブログを書くだけの馬鹿のが変な仕様にこだわってるのが問題。
後者は単なる自己満足の言語ヲタクと変わらん。
端的にカスでいなくなった方がいい存在と思う。
507デフォルトの名無しさん
2019/12/03(火) 15:46:11.44ID:+wDBcAl/508デフォルトの名無しさん
2019/12/03(火) 16:08:25.07ID:fg+LqIKK 現場でガリガリ書いてる奴らが本を書かないのが悪いんだろ
えっ、ブラック労働環境で疲弊してて書く余裕がないって?w
えっ、ブラック労働環境で疲弊してて書く余裕がないって?w
509デフォルトの名無しさん
2019/12/03(火) 16:50:33.73ID:lE3mHjqg ブログはともかく5chの情報を元に本を書くとか
勘弁してくれ
勘弁してくれ
510デフォルトの名無しさん
2019/12/03(火) 16:52:53.84ID:lE3mHjqg511デフォルトの名無しさん
2019/12/03(火) 16:59:39.64ID:+wDBcAl/ >>509
全く知識が足りて無い場合、知ってる人に聞くと大幅な時間短縮になる事がある。
全く知識が足りて無い場合、知ってる人に聞くと大幅な時間短縮になる事がある。
512デフォルトの名無しさん
2019/12/03(火) 17:42:58.95ID:PvjGA/Sr513デフォルトの名無しさん
2019/12/03(火) 17:45:16.73ID:PvjGA/Sr514デフォルトの名無しさん
2019/12/03(火) 17:50:23.07ID:Ht46Ytqh515デフォルトの名無しさん
2019/12/03(火) 18:43:45.39ID:0IYpewor 未来へのアンカー
516デフォルトの名無しさん
2019/12/03(火) 19:20:43.49ID:+wDBcAl/ >>514
考えてみれば、本を書く人はここでは聞かないかも。
考えてみれば、本を書く人はここでは聞かないかも。
517デフォルトの名無しさん
2019/12/03(火) 19:21:46.86ID:+wDBcAl/ Stroustrap の本とか高いし、cpprefemceは分かりにくいし、誰かに
聞いてみたくなる気持ちは分かるがな。
聞いてみたくなる気持ちは分かるがな。
518デフォルトの名無しさん
2019/12/03(火) 19:22:03.63ID:90Sp73uq >>513
C++のコンパイラ分野でいいので2~3冊あげてみ
C++のコンパイラ分野でいいので2~3冊あげてみ
519デフォルトの名無しさん
2019/12/03(火) 19:22:10.56ID:k7viogN8 けっ 言語についていけねえうえに
ろくな業績も出せてねえ真性ゴミクズが
書いたコードの量が多いんだと
精一杯のブラフで自我を保とうと必死こく
究極にくだらねえ茶番だろうが
ろくな業績も出せてねえ真性ゴミクズが
書いたコードの量が多いんだと
精一杯のブラフで自我を保とうと必死こく
究極にくだらねえ茶番だろうが
520デフォルトの名無しさん
2019/12/03(火) 19:25:02.10ID:A/ggV3OU コードを書けないのがコンプレックス?
521デフォルトの名無しさん
2019/12/03(火) 19:26:01.05ID:cEtr/lck 禿4はわかりやすかったけど、もう少し突っ込んだ話が読みたかったな。
522デフォルトの名無しさん
2019/12/03(火) 19:26:43.98ID:cEtr/lck 禿4はキンドルのセールに出ることあるよ。
523デフォルトの名無しさん
2019/12/03(火) 19:43:50.04ID:LOAssVxZ 禿4は量が少ないわけではないがc++を今からやるとしたら最低限ああなるだろ。
あれ以下に減らすのは実際無理。
あれ以下に減らすのは実際無理。
524デフォルトの名無しさん
2019/12/03(火) 19:55:41.70ID:PvjGA/Sr525デフォルトの名無しさん
2019/12/03(火) 21:01:44.02ID:z2MNOJTT >>524
違うんなら証拠出してみろよ
言ってることが薄っぺらくてゴミクズにしか見えねえが
そういう俺にお見それしましたと言わしめる内容がおまえにあるか?
身バレするようなことでなくて結構だ
話している内容に深みを感じるかどうかだ
もう一度言う、おまえの言葉にはそれがまるでない
違うんなら証拠出してみろよ
言ってることが薄っぺらくてゴミクズにしか見えねえが
そういう俺にお見それしましたと言わしめる内容がおまえにあるか?
身バレするようなことでなくて結構だ
話している内容に深みを感じるかどうかだ
もう一度言う、おまえの言葉にはそれがまるでない
526デフォルトの名無しさん
2019/12/03(火) 21:24:21.32ID:qY14OTyg527デフォルトの名無しさん
2019/12/03(火) 21:26:06.12ID:A/ggV3OU おまいらスレタイ
528デフォルトの名無しさん
2019/12/03(火) 21:30:25.58ID:3WzRY7Z3 実にC++erらしいこのスレにぴったりの会話だな
529デフォルトの名無しさん
2019/12/03(火) 21:58:21.97ID:c+vMaKjo530デフォルトの名無しさん
2019/12/03(火) 22:13:59.08ID:z2MNOJTT >>529
おまえ誰?
おまえ誰?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- 【広島】「万引きした人を追跡」コンビニ店員の男性(46)を果物ナイフで刺したか 中国籍の少年(17)を殺人未遂容疑で現行犯逮捕 [ぐれ★]
- トランプ大統領 エヌビディア製AI半導体の中国輸出許可 安全保障重視の方針転換 [蚤の市★]
- 【サッカー】58歳カズ「オファーが来ている」 J3福島と近日中にも交渉 早ければ年内にも決断 [征夷大将軍★]
- 【悲報】高市早苗の擬人化がXで大バズりwwwwwwwwwwww [455031798]
- 高市が早くあの発言を撤回しないと、中国からもっと大きな制裁が飛んでくるぞ [805596214]
- 【動画】ファッションモデルまんこ、裸でランウェイを歩く。これがファッションだと言われて [749674962]
- 【画像】髙市さん「無職のシンママ支援を手厚くするため、世帯年収900万円以上の控除をカットします🙂」 [881878332]
- 早大名誉教授「高市内閣の高支持率はデータ操作か、支持している日本人がアホなのか」👈核心を突いてしまう [868050967]
- こんぺこ!こんぺこ!こんぺこ!🐰🏡
