[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 06/17 22:51 / Filesize : 282 KB / Number-of Response : 1031
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part135



1 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 20:20:06.25 ID:o3PNwIlC0.net]
次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part134
mevius.5ch.net/test/read.cgi/tech/1516406742/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
mevius.5ch.net/test/read.cgi/tech/1509780815/

■長いソースを貼るときはここへ。■
 codepad.org/
 https://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
www.bohyoh.com/CandCPP/FAQ/ (日本語)
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured

577 名前:デフォルトの名無しさん mailto:sage [2018/05/09(水) 11:58:05.29 ID:3kbM/2hPM.net]
PIC12F609とかでもプログラム領域は1Kwあるけど
数十バイトしかない奴の型番教えてくれくれ

578 名前:デフォルトの名無しさん mailto:sage [2018/05/09(水) 12:00:11.72 ID:jousW3+sd.net]
PIC10F200はRAMが16バイトですね
制約は当然ありますがC言語で開発出来ます

579 名前:デフォルトの名無しさん mailto:sage [2018/05/09(水) 12:00:58.98 ID:1NFscAG5a.net]
C++どころかCすらやってはいけないレベルだな
恥ずかしいやつ

580 名前:デフォルトの名無しさん mailto:sage [2018/05/09(水) 12:02:35.51 ID:1NFscAG5a.net]
>>562
ROMとRAMの区別がつかない人がなんでこのスレにいるのか?

581 名前:デフォルトの名無しさん mailto:sage [2018/05/09(水) 12:04:25.14 ID:3kbM/2hPM.net]
ハーバードアーキテクチャのデータメモリサイズだけ書くの
卑怯だと思うの。プログラムメモリは256ワードあるじゃん

582 名前:デフォルトの名無しさん mailto:sage [2018/05/09(水) 12:07:19.83 ID:1NFscAG5a.net]
>>557を受けての話だから
そのチープなマイコンで開発にCが使えてる

583 名前:デフォルトの名無しさん mailto:sage [2018/05/09(水) 12:09:43.50 ID:3kbM/2hPM.net]
だから盛り過ぎでしょ

584 名前:デフォルトの名無しさん mailto:sage [2018/05/09(水) 12:10:13.60 ID:1NFscAG5a.net]
>>568
じゃあできないというのか?

585 名前:デフォルトの名無しさん mailto:sage [2018/05/09(水) 12:45:08.73 ID:e8iSV/lBM.net]
>>551
競技プログラミングとかunity覚えるの面倒とか?



586 名前:デフォルトの名無しさん mailto:sage [2018/05/09(水) 13:09:28.13 ID:J0gm0Ysvd.net]
>>566
RAMってしっかり書いてるじゃん
チープなマイコンだとROM/RAMに別れてるのが普通だよアーキテクチャー関係無しに

587 名前:デフォルトの名無しさん mailto:sage [2018/05/09(水) 18:42:26.74 ID:X9SFPyiC0.net]
スタックの話だよね
スタックはRAMであることが絶対条件なので
ROMがどんだけあろうが関係ない

588 名前:デフォルトの名無しさん [2018/05/09(水) 18:49:54.96 ID:bhGLBTeZa.net]
C# と C++ は世の中でどちらのほうが使われているのでしょうか?

いま、 C++ の本(ロベール)を読んでいますが、無駄ですか?
柴田望洋訳の分厚い本も買

589 名前:ってしまいました。 []
[ここ壊れてます]

590 名前:デフォルトの名無しさん [2018/05/09(水) 18:54:28.74 .net]
C++は無駄とは言い切れないがロベールは無駄

591 名前:デフォルトの名無しさん [2018/05/09(水) 18:59:28.28 ID:bhGLBTeZa.net]
>>574

ありがとうございます。

結局、どのプログラミング言語を習得するのがおすすめでしょうか?

Python のような言語は除いて。

592 名前:デフォルトの名無しさん mailto:sage [2018/05/09(水) 19:01:30.85 ID:ZxmL37bf0.net]
何をやりたいと考えているか次第

593 名前:デフォルトの名無しさん [2018/05/09(水) 19:05:22.21 ID:bhGLBTeZa.net]
>>576

趣味でアルゴリズムとデータ構造を勉強しています。
プログラミングコンテストの問題(Aizu Online Judge)を解いたりもしています。

もし、プログラマーになるとした場合、もっとも必要とされる言語を使って、
アルゴリズムとデータ構造の勉強をすれば効率的かなと考えています。

セジウィックとウエインの本や講義動画を読んだり見たりするときには、
Javaの入門書を見たりしています。

594 名前:デフォルトの名無しさん [2018/05/09(水) 19:07:11.19 ID:bhGLBTeZa.net]
>>576
コンピューターサイエンスを広く学ぶ上で一番適した言語がいいかなとも考えています。

595 名前:デフォルトの名無しさん mailto:sage [2018/05/09(水) 19:16:40.18 ID:ZxmL37bf0.net]
C++のスレで言うのもどうかとは思うが、
初心者が覚えるのに相応しい言語はJavaじゃないかなと思う
アルゴリズムだけを学びたいなら、C言語が良いかもしれない
他の人の意見も聞いてね



596 名前: mailto:sage [2018/05/09(水) 19:47:49.06 ID:dHqNIKDN0.net]
>>577
そういうのがやりたくて、しかも今 C で片言がしゃべれるのなら、そのまま進めるのが一番いい

597 名前:デフォルトの名無しさん [2018/05/09(水) 20:02:47.70 ID:bhGLBTeZa.net]
>>579
>>580

参考になりました。
ありがとうございました。

598 名前:デフォルトの名無しさん mailto:sage [2018/05/09(水) 21:19:28.33 ID:X9SFPyiC0.net]
>>578
アセンブラかVerilog/VHDLあたりじゃね?
今の伝統的言語はユニプロセッサに源流があって
直列一辺倒の弱点が浮き彫りになっている昨今
【広く】学ぶうえでは却って足かせになるぞ

599 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 12:15:01.11 ID:yXMj8vMdM.net]
>>578
Occam2 とか XCが最凶かもな

600 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 12:20:40.60 ID:YLAKf1v1a.net]
Cはアルゴリズム勉強にはあまり向いてないと思う
以前各言語向けのアルゴリズム辞典みたいのを見比べてみたけど
Cのだけ異質な感じ
forのカウントいじってあったりして勉強しにくい

少なくともオブジェクト指向入れた言語じゃないと後で生かしにくい

601 名前:はちみつ餃子 mailto:sage [2018/05/10(木) 15:18:57.11 ID:RiSXhiCD0.net]
オブジェクト指向が導入されているべきかどうかというよりも、単純に C は抽象化の能力が低いんだよ。
下層レイヤを上手く隠せないから段階的に積み上げていくというのがやり難い。

学習段階では上から下まで見えているって方が分かりやすいということはあるかもしれないので、
どちらが良いかというのは考え方とか好みにもよるので一概には言えないと思う。

602 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 15:24:31.29 ID:bWcYs//f0.net]
アルゴリズムの仕組みが言語の内部に隠されると理解を妨げるだろう
オブジェクト指向については、別の機会に学べば良い

603 名前:はちみつ餃子 mailto:sage [2018/05/10(木) 15:59:00.64 ID:RiSXhiCD0.net]
そうとも言えない。
複雑なものを理解するには「分解する」は基本的なアプローチのひとつで、レイヤを切り分けるのは有用だよ。
それが >>585 に書いた「段階的に積み上げていく」の意図ね。

かといってそれで全体像

604 名前:が見通しにくくなってもそれはそれでアレだし、何がベストかなんて言えないよ。
やりやすいと思った方でやるしかしょうがないんじゃね。
[]
[ここ壊れてます]

605 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 16:46:33.01 ID:bWcYs//f0.net]
C言語で書かれたアルゴリズムが読み解けるようでないと
後で困るだろう



606 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 17:51:59.26 ID:Ulb5C2sT0.net]
C以外だとリストのシャッフルはshuffleだけで済ませられる
Cだとshuffleの中身を書かないといけない

C以外だと「Combination()を使おう」
Cだと「Combination()を実装しよう」
くらいの差がある

アルゴリズムがどこまで指すのか分らないが、楽しいことから先にやればいいんじゃねえの、ということで、C以外から

607 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 18:15:07.55 ID:bWcYs//f0.net]
アルゴリズムを学習するって、その実装の中身を理解することだろう

608 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 18:39:39.67 ID:k0RUZ23fa.net]
個人的には、各種ソートや基本的なデータ構造の操作を自前で書くようなシンプルなところから入った方が分かりやすいかと思うけど、まあ人それぞれかなと。

609 名前:デフォルトの名無しさん [2018/05/10(木) 18:45:52.70 ID:yjf1B9Q5a.net]
みなさん、ありがとうございます。

セジウィックとウエインのアルゴリズムの本に載っているのは、おそらく
ジェネリクスを使っているので一般性もあって、かつ効率もいいプログラム
だと思います。

ライブラリのようなクオリティーでプログラムを作るというのが理想です。

610 名前:デフォルトの名無しさん [2018/05/10(木) 18:51:57.46 ID:yjf1B9Q5a.net]
アルゴリズムの本というと C 言語でプログラムが書かれた本が多いですが、
やっと C++ で書かれた日本語の本が最近出版されましたね。

セジウィックとウエインの本よりももっと初歩的な本のようですが。

データ構造とアルゴリズム (電子情報通信レクチャーシリーズ B-8) 単行本 ? 2018/2/1
岩沼 宏治 (著), 美濃 英俊 (著), 鍋島 英知 (著),

611 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 19:17:25.91 ID:4Q48RAuxd.net]
アルゴリズムの抽象的な部分(オーダーとか適用するデータ構造の再帰性や対応関係)を学ぶならCよりML系の方が向いてるは向いてると思う
ただ環境構築なんかの障壁もあるだろうし最終的にCは触るだろうけどアルゴリズム以外の所で詰まりにくいという意味でC#を推してみる

612 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 19:18:39.74 ID:4Q48RAuxd.net]
>>594
勿論F#でもいいし理想はそうだが好みというかネットの情報量の多さ的にC#を挙げた

613 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 19:24:56.01 ID:faWxDCCY0.net]
C#はLinqが便利すぎてお勉強用としてはどうなんだろうなぁ
何やるかによるけど

614 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 20:05:12.45 ID:4Q48RAuxd.net]
ああ勘違いしていた
アルゴリズムを勉強したいのではなく
>>もし、プログラマーになるとした場合、もっとも必要とされる言語を使って、
>>アルゴリズムとデータ構造の勉強をすれば効率的かなと考えています。
なのね

であれば >>573 氏が現役バリバリな時の主流の言語なんて今からじゃ予想つかないだろうし、実務なら最も適した言語が使われるだけだからC++をそのままやり続ければいいと思う

コンピュータサイエンス自体死ぬほど広範囲な学問で、実務のプログラミングとの間にもやっぱり開きがあって万能な言語なんて無いよ
敢えて言うなら物理と数学、これだけは裏切らない

615 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 21:40:19.82 ID:n6BTi4dIM.net]
>>597
あと英語な



616 名前:デフォルトの名無しさん mailto:sage [2018/05/10(木) 21:41:29.95 ID:tcNeLXMy0.net]
>>585
そこがいいんだよ
隠蔽されたことを忘れたフリをし
本当は忘れていないということの練習に向いている

忘れたフリが綺麗なコードの練習
本当は忘れていないことが性能評価につながる
両立した技能の練習に向いているということだ

617 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 12:08:47.61 ID:CPfY1M+aM.net]
>>571
>>572
そもそもROMの反語はRAMじゃねぇし(SAMってのもある)
SH

618 名前:ARCだとDMのサイズは0でも、PMさえあれば動く
で、PMの事隠してマウンティングすればお前らは受け入れるのか?
[]
[ここ壊れてます]

619 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 12:33:06.03 ID:Asz7DXCua.net]
今はどうか知らないけどcは標準でvectorやlistやmapがないから
そこから始めないといけないのでめんどくさい
アルゴリズム辞典見たら配列をdefineされたNやMで確保してた
ライブラリとして使う気ゼロ

620 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 13:01:20.12 ID:Mluu9Rs0d.net]
>>600
世の中のほとんどのチープなワンチップマイコンはROM/RAM構成なんだよ

世の中を知ってたら>>557に対して>>566なんて考えは出ないはずだ

621 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 13:03:39.86 ID:Mluu9Rs0d.net]
>>601
Cはチープな環境やOS関連で使われるくらいだからなあ
コストのデカイlistやmapなんて無くて当然
必要になったら必要最低限の機能で自力で作る世界

622 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 13:59:40.72 ID:lM6VzEPtM.net]
>>602
あーハイハイそうですね〜

623 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 15:05:19.79 ID:KxM4SNOx0.net]
>>603
コスト云々よりジェネリクスが無いから汎用コンテナを作るのが難しい

624 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 15:52:32.74 ID:MTbwW/C5M.net]
作るのが難しい人は拾ってくればいいだけ

625 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 18:24:24.95 ID:biwWi4aJ0.net]
数十バイトしかないなら、普通アセンブラで書くだろう



626 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 18:50:06.30 ID:Mluu9Rs0d.net]
そうでもない
普通にCが使えるので

627 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 18:55:57.64 ID:Mluu9Rs0d.net]
>>605
別に難しくない
標準化されてないから広まってないだけで
作ってる人はいっぱいいる

628 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 19:49:06.46 ID:l0MSXuwV0.net]
>>600
だから何?
いいよ、じゃあSAMもありにしようや
で、スタックの量がCに適するのか適さないのか
おまえさんなりの考えを言ってみな

629 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 19:59:50.91 ID:KxM4SNOx0.net]
>>609
静的型の恩恵が受けられなくなるだろ?

630 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 20:34:03.62 ID:Mluu9Rs0d.net]
で?

631 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 20:40:41.03 ID:x5BQ9FS4M.net]
>>611
普通にvoidポインタに置き換えるだけだが。
何が難しいの?

632 名前:はちみつ餃子 mailto:sage [2018/05/11(金) 20:56:19.66 ID:e+Ei11A70.net]
初期の JAVA もコンテナを使うときにキャストが必須ってアレな仕様だったよな。

633 名前:デフォルトの名無しさん [2018/05/11(金) 21:04:30.87 ID:2EGPeEG9a.net]
昔は仕様がダメで段々改良されていくということがありますが、
それはなぜなのでしょうか?

その当時はハードウェアの性能上そういう仕様にせざるを得なかったというような
理由があるのでしょうか?

それとも単に思慮が足りなかったというだけでしょうか?

634 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 21:16:49.77 ID:Mluu9Rs0d.net]
理由はいろいろ

635 名前:はちみつ餃子 mailto:sage [2018/05/11(金) 21:20:43.57 ID:e+Ei11A70.net]
>>615
知見が足りなかったというのが最大の理由だと思うけど、
せざるを得なかった場面よりもその程度で充分だったという方が多いと思う。



636 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 21:23:11.17 ID:biwWi4aJ0.net]
仕様が固まらないうちに作る時は、それなりの暫定仕様か何らかの制限事項を設けて開発したな

637 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 21:36:00.99 ID:Mluu9Rs0d.net]
知見が足りなかったなんてのは少数派と思う

シンプルな仕様からだんだんと機能追加で肥大化の方向
ってのがほとんど

638 名前: mailto:sage [2018/05/11(金) 21:43:16.90 ID:/s88DeTW0.net]
>>619
C89 からの「関数の引数として構造体が(実体渡しとして)OK」というのは、私には堕落以外のなにものでもないと

639 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 21:53:49.41 ID:HARszYd10.net]
昔のC++にあった(今もある)糞の山は、今のモダンな他言語たちへの反面教師として大いに役立った

640 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 21:55:02.56 ID:Mluu9Rs0d.net]
例えばどの仕様が糞?

641 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 22:06:17.59 ID:KxM4SNOx0.net]
>>613
メモリぶっ壊しやすくなるのは十分問題だと思うが
ライブラリ利用者側の責任で何とかしろってのはリソースの条件が厳しけりゃしょうがないがさもなくば正当化しかねる

642 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 23:57:53.51 ID:MowAKA7Xa.net]
独習C++は一通り読んだんだが次に読む本ある?問題集みたいなのとか

643 名前: mailto:sage [2018/05/12(土) 00:13:37.95 ID:HeMwMf3D0.net]
>>624
私がお勧めしているのは
https://www.amazon.co.jp/dp/4894714221/
https://www.amazon.co.jp/dp/4881357786/

前者は実は難があって、変てこな実装をしている部分もありますが、それを自分で調べて解決すれば、強くなれると思います
後者は STL の解説本です

いずれも C++11 以前で今となっては古いのですが、代わりになるような本がない…
両方とも私は読んでいますので、普通の質問には答えることができます

644 名前:デフォルトの名無しさん [2018/05/12(土) 00:24:10.29 ID:TkoJoFTb0.net]
最初に読む本は禿4版一択ですよ。

645 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 01:17:09.76 ID:hwxaPbIq0.net]
どの言語でも、入門書の次は、Effective 何々



646 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 05:59:18.81 ID:D96wT16B0.net]
>>625
「なぜ」そうするのか
「なぜ」そうなっているのか
他にどんな選択があったのか
という思考回路の俺には合わない本だ

647 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 06:50:27.10 ID:QiJLTR+Nd.net]
>>623
それは低級言語に求める物じゃない

C/C++は低級言語として数十年間圧倒的なシェアであり続けている
これってすごいことだと思う

648 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 07:33:39.79 ID:eFTG6CfX0.net]
>>623
データ構造の要素が静的に型が決まろうがそうでなかろうが、必要な要素数のメモリを確保する作業に違いはない。
せいぜい型のサイズを余計に掛け算するくらいだ。
確保するサイズが間違っていれば静的に型が決まろうがメモリ破壊は起きる。
もう少し具体的に示してくれないか?

649 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 07:37:30.31 ID:D96wT16B0.net]
静的な型の恩恵がどうたらって
mallocがvoid*を返すのと同じだろ
問題ちゃ問題だがそんなもん怖がるやつぁC使いに向かない

650 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 08:45:19.55 ID:vhGL8v7ea.net]
>>629
静的なら実行時パフォーマンスには影響しない

>>630
「既に壊しうるのだからちょっとくらい壊せる場所増やしてもいいでしょ」には無条件では同意しかねる

>>631
向いていようがいまいがCの案件はあるわけで, 可能な限り安全にコーディングしたいと思うのは可笑しいか?

で話を戻すと, 汎用コンテナのCでの実装には, 大きく分けてもdefine使った型安全な実装とvoid *を使ったオーバーヘッドあり型安全なし実装が考えられるわけで, まずそれだけでこうして対立し得る
実装上でもいずれもpros/consがあるわけで, そりゃ規格がまとまる道理がないよね, って主張

別に必要最小限の機能で自分で実装することを否定するわけじゃないし, 型安全が絶対だという気もない

651 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 08:57:39.01 ID:QiJLTR+Nd.net]
高速コンパクトと安全性利便性は相反するものだ
諦めろ

652 名前: mailto:sage [2018/05/12(土) 09:08:53.09 ID:HeMwMf3D0.net]
>>627
独習の次に Effective C++/Effective Modern C++ は飛躍しすぎではないかな?
ついてこれるのか

653 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 09:12:02.44 ID:vhGL8v7ea.net]
>>634
必読書ですしおすし

654 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 09:13:51.54 ID:PbE4ojLD0.net]
>>632
> void *を使ったオーバーヘッドあり
とは何?サイズ管理+アドレスの計算のこと?
だったらC++の汎用コンテナでも同じ事を内部でやっているし、オーバーヘッドはないが。
見た目でしか分からない人はCに向いていないぞ。

というか、型安全が欲しければC++を、
そんなん要らんから小さくて早いコードを、というのならCを、ってだけだろ。
その分自分で管理する項目が増えるだけの話で。
選択肢はユーザー側に与えられているのだから、それ以上は要らんだろ。

655 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 09:15:07.55 ID:D96wT16B0.net]
>>632
できねえこと言ったってしゃーないだろ
Cにはテンプレートがない
諦めるしかない



656 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 09:18:40.30 ID:kx3qluwG0.net]
とりあえずスクリプト言語やC#で書く→速くしたい所をC++で書く→もっと速くしたい所をCやasmで書く
これが正解
どれかにこだわって対立させて排他するのはアホ

657 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 09:26:19.92 ID:PbE4ojLD0.net]
>>638
同意。

若い奴が統一言語「○○だけ勉強すれば全ておk」を求めるのは自然だが、
そうなっていないのは理由があって、つまりは手抜きと実行効率(速度)の兼ね合いだ。
一時期Cが統一言語だったが、それは他言語がゴミだったから(対抗馬がLisp)であって、
C++で再統一されることはないよ。特に今のC++では。

658 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 09:31:37.48 ID:vhGL8v7ea.net]
オーバーヘッドについては撤回

>>636-639
だから基本的にそういう役割分担について否定しているわけじゃない
Cで汎用コンテナが標準化されることはないだろうっていうのが元々の主張

659 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 09:56:03.80 ID:QiJLTR+Nd.net]
>>638
Cで書けることは基本C++で書ける
C++で最適化出来ない所はCでも無理
アセンブラしかない

660 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:05:55.31 ID:QiJLTR+Nd.net]
>>636
CやC++に関わらず専用なコードは汎用に比べて高速コンパクトに出来る事がある

つまり、
void*で作って全てのコンテナサイズ(型)同一コードよりも型ごとにコードを作る方が速いことがある

C++のコンテナは全て専用コードなので
コードの肥大化と引き換えに微妙に速いかもしれない
コードの肥大化によってキャッシュミスして遅い可能性もあるけど

661 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 11:33:41.32 ID:VFvkGYoW0.net]
>>638
> 速くしたい所をC++で書く→もっと速くしたい所をCやasmで書く
asmはいいとしてC++→Cでもっと速くなるケースなんてあるのか?

662 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 11:35:17.48 ID:tcCubJZ8M.net]
>>632
>すでに壊してるのだから
一体どこからそんな主張を読み取ったんだ?
勝手に人の主張を捏造せずに、ちゃんと質問に答えてくれないか?

あと、void*使わなくても、生成時に型サイズを受け取る方法もある。
汎用コンテナ作るのにdefineで型定義なんてするわけないだろう。

663 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 11:39:23.77 ID:D96wT16B0.net]
>>642
qsortやbsearchとかそうだよな
C++のsortやbinary_searchには絶対に敵わない

664 名前:デフォルトの名無しさん [2018/05/12(土) 11:44:45.24 .net]
>>644
FF外から失礼します
「すでに壊してるのだから」とはどこにも書いてないと思うのですが
なぜあなたこそ勝手に人の主張を捏造しているのでしょうか?
FF外から失礼しました

665 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 11:48:55.40 ID:tcCubJZ8M.net]
>>646
面倒なやつだな。
「既に壊しうるのだから」
これでいいか?



666 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 11:52:21.18 ID:My8LWy2ka.net]
ふぁいなるふぁんたじぃ?

667 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 11:59:59.40 ID:FtdYwxfb0.net]
前輪駆動車じゃない?

668 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 12:14:05.61 ID:D96wT16B0.net]
255

669 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 12:31:23.28 ID:My8LWy2ka.net]
-1

670 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 12:40:45.91 ID:QiJLTR+Nd.net]
汎用バイナリ < 汎用コード専用バイナリ < 専用コード

速度的にはこう

速度が非常に重要であれば
CだろうがC++だろうが専用コードを書くのが一番

671 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 12:42:10.49 ID:PbE4ojLD0.net]
>>643
間接参照を抜ける場合とかだろ。
逆にCよりもC++の方が速くなるコードの方があり得ないと思うが。
実際にC++はCより遅いってのは事実だし。

>>645
お前が値配列と参照配列の区別が付いてないだけだろ。

672 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 12:44:50.30 ID:D96wT16B0.net]
>>653
アンカーミスったか?
qsortとstd::sortはどちらも値であろうが参照(ポインタ)であろうが使えるぞ

673 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 12:49:50.14 ID:QiJLTR+Nd.net]
>>653
>>641

674 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 12:50:14.86 ID:VFvkGYoW0.net]
>>653
> 間接参照を抜ける場合とかだろ。
それC++のまま書き換えればいいだけ

> 逆にCよりもC++の方が速くなるコードの方があり得ないと思うが。
そんな主張はしてない

> 実際にC++はCより遅いってのは事実だし。
だからどんなケースなんだよ
STLとか使いまくって遅いとかなら使わないように書き換えればいいだけだろ

675 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 12:58:57.32 ID:QiJLTR+Nd.net]
厳密に言うと

C11の可変長配列はC++には無い
C++では例外処理を実現するために関数コールに微妙なオーバーヘッドがある場合がある

って感じでCの方が有利な事がある

どちらもガシガシに最適化した場合の話



676 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 13:05:00.64 ID:QiJLTR+Nd.net]
x86-32
例外処理を有効にすると
関数コールに微妙なオーバーヘッドが加わる

x86-64
例外処理の為のオーバーヘッドは無い
その代わり例外発生時の処理は非常に遅い

Cの可変長配列のような、スタックに可変長サイズを確保する手段はC++には無い
当然ダイナミックなメモリアロケートよりはスタックに確保した方が速い
ただし実際にはあまり使われていないと思われる

677 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 13:09:56.56 ID:PbE4ojLD0.net]
>>654
ミスってないぞ。

>>656
Cの場合は抽象化してくれないんだから、関数を直接呼ぶしかないんだよ。
だから動的解決をしている場合はC++の方が遅く、静的解決の場合は同速になる。
CのほうがC++より遅いケース出してみろ。ないから。

C++は機能的にはCをラップしてるんだよ。
例外とか、クラスの動的解決とか、スマポ(キリッとか。その分管理が楽だが、速度は遅くなる。
Cの場合はC++のラッパ抜きで直接呼ぶことになるから、その分速い。それだけ。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<282KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef