X



C++相談室 part135
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ 5fcb-q1Nq)
垢版 |
2018/03/31(土) 20:20:06.25ID:o3PNwIlC0
次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512

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

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

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

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

[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
0532デフォルトの名無しさん (ワッチョイ 0b33-f8tT)
垢版 |
2018/05/03(木) 21:23:27.91ID:IMqmw2mT0
組み込みとかゲーム機のような、最初に一気に確保する環境で使うんじゃないかね
といっても確保済みのメモリに対して断片化しないように管理する仕組み作ったら、必然的にnew演算子もオーバーロードするだろうから結局placement new使わんかもしれんけど
0533デフォルトの名無しさん (ブーイモ MMc7-+yEv)
垢版 |
2018/05/04(金) 04:49:56.51ID:JszYn0L4M
クラスを丸ごとDLL化するときにはnew系をオーバーロード
しておかないと解放時にエラーになるべ。

ヒープはDLL単位にあるので集めておきたい場合はplacement使う
0534デフォルトの名無しさん (アウアウウー Sacf-a7mP)
垢版 |
2018/05/04(金) 11:44:28.56ID:8Ch7v1Nca
unique_ptrの配列版でメモリの再確保を行いたい場合どのように行うのがベターですか?
0538デフォルトの名無しさん (ワッチョイ ab7f-XJxX)
垢版 |
2018/05/04(金) 15:29:55.09ID:YqO5U4DS0
make_unique使ってね
0542デフォルトの名無しさん (ワイモマー MMaa-UBB+)
垢版 |
2018/05/06(日) 13:23:46.73ID:z9ZCOpRGM
以下のように、派生クラスのメンバ関数で基底クラスのメンバ関数を呼ぶように
基底クラスが派生クラスに強制する方法はないでしょうか?
ttps://wandbox.org/permlink/K4IHMYwOsutPQz3i
0543デフォルトの名無しさん (ワッチョイ c6e7-PabT)
垢版 |
2018/05/06(日) 14:01:54.85ID:f5coeozT0
FAQやな
インターフェースとカスタマイズポイントを分けろ

struct base {
 void f() { //非仮想
  cout << "base" << endl;
  this->f_custom();
 }
private:
 virtual void f_custom(){}
};
struct child : base {
 void f_custom() override {
  cout << "child" << endl;
 }
};
0545542 (ワイモマー MMaa-UBB+)
垢版 |
2018/05/06(日) 14:59:52.15ID:z9ZCOpRGM
レスありがとうございます。
NVIというのがあるのですね。
(大昔に勉強したような…しかし思い出せず)
0550デフォルトの名無しさん (ワッチョイ 27d7-XJxX)
垢版 |
2018/05/07(月) 05:32:12.66ID:WYJ+W2Mc0
>>547
12行目のbase::f()はvirtualを抑止してpure virtualを呼び出す
13行目のf();は動的結合でchid::f()を呼び出す

baseは抽象クラスでnew base{}できないので
13行目の動的結合がbase::f()を呼び出すということは起こりえない
だからif(typeid(*this) != typeid(base))のようなチェックをしていない
0556デフォルトの名無しさん
垢版 |
2018/05/09(水) 03:49:30.68
Boostとか使ってると余計な依存関係をかかえてしまうけどな

C言語が一番
0573デフォルトの名無しさん (アウアウウー Sacf-XJxX)
垢版 |
2018/05/09(水) 18:49:54.96ID:bhGLBTeZa
C# と C++ は世の中でどちらのほうが使われているのでしょうか?

いま、 C++ の本(ロベール)を読んでいますが、無駄ですか?
柴田望洋訳の分厚い本も買ってしまいました。
0574デフォルトの名無しさん
垢版 |
2018/05/09(水) 18:54:28.74
C++は無駄とは言い切れないがロベールは無駄
0575デフォルトの名無しさん (アウアウウー Sacf-XJxX)
垢版 |
2018/05/09(水) 18:59:28.28ID:bhGLBTeZa
>>574

ありがとうございます。

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

Python のような言語は除いて。
0577デフォルトの名無しさん (アウアウウー Sacf-XJxX)
垢版 |
2018/05/09(水) 19:05:22.21ID:bhGLBTeZa
>>576

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

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

セジウィックとウエインの本や講義動画を読んだり見たりするときには、
Javaの入門書を見たりしています。
0578デフォルトの名無しさん (アウアウウー Sacf-XJxX)
垢版 |
2018/05/09(水) 19:07:11.19ID:bhGLBTeZa
>>576
コンピューターサイエンスを広く学ぶ上で一番適した言語がいいかなとも考えています。
0579デフォルトの名無しさん (ワッチョイ 1e81-jSUp)
垢版 |
2018/05/09(水) 19:16:40.18ID:ZxmL37bf0
C++のスレで言うのもどうかとは思うが、
初心者が覚えるのに相応しい言語はJavaじゃないかなと思う
アルゴリズムだけを学びたいなら、C言語が良いかもしれない
他の人の意見も聞いてね
0581デフォルトの名無しさん (アウアウウー Sacf-XJxX)
垢版 |
2018/05/09(水) 20:02:47.70ID:bhGLBTeZa
>>579
>>580

参考になりました。
ありがとうございました。
0582デフォルトの名無しさん (ワッチョイ 6afa-XJxX)
垢版 |
2018/05/09(水) 21:19:28.33ID:X9SFPyiC0
>>578
アセンブラかVerilog/VHDLあたりじゃね?
今の伝統的言語はユニプロセッサに源流があって
直列一辺倒の弱点が浮き彫りになっている昨今
【広く】学ぶうえでは却って足かせになるぞ
0584デフォルトの名無しさん (アウアウウー Sa89-Iyo3)
垢版 |
2018/05/10(木) 12:20:40.60ID:YLAKf1v1a
Cはアルゴリズム勉強にはあまり向いてないと思う
以前各言語向けのアルゴリズム辞典みたいのを見比べてみたけど
Cのだけ異質な感じ
forのカウントいじってあったりして勉強しにくい

少なくともオブジェクト指向入れた言語じゃないと後で生かしにくい
0585はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1b6f-k37M)
垢版 |
2018/05/10(木) 15:18:57.11ID:RiSXhiCD0
オブジェクト指向が導入されているべきかどうかというよりも、単純に C は抽象化の能力が低いんだよ。
下層レイヤを上手く隠せないから段階的に積み上げていくというのがやり難い。

学習段階では上から下まで見えているって方が分かりやすいということはあるかもしれないので、
どちらが良いかというのは考え方とか好みにもよるので一概には言えないと思う。
0587はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1b6f-k37M)
垢版 |
2018/05/10(木) 15:59:00.64ID:RiSXhiCD0
そうとも言えない。
複雑なものを理解するには「分解する」は基本的なアプローチのひとつで、レイヤを切り分けるのは有用だよ。
それが >>585 に書いた「段階的に積み上げていく」の意図ね。

かといってそれで全体像が見通しにくくなってもそれはそれでアレだし、何がベストかなんて言えないよ。
やりやすいと思った方でやるしかしょうがないんじゃね。
0589デフォルトの名無しさん (ワッチョイ 2312-YHaA)
垢版 |
2018/05/10(木) 17:51:59.26ID:Ulb5C2sT0
C以外だとリストのシャッフルはshuffleだけで済ませられる
Cだとshuffleの中身を書かないといけない

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

アルゴリズムがどこまで指すのか分らないが、楽しいことから先にやればいいんじゃねえの、ということで、C以外から
0592デフォルトの名無しさん (アウアウウー Sa89-k37M)
垢版 |
2018/05/10(木) 18:45:52.70ID:yjf1B9Q5a
みなさん、ありがとうございます。

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

ライブラリのようなクオリティーでプログラムを作るというのが理想です。
0593デフォルトの名無しさん (アウアウウー Sa89-k37M)
垢版 |
2018/05/10(木) 18:51:57.46ID:yjf1B9Q5a
アルゴリズムの本というと C 言語でプログラムが書かれた本が多いですが、
やっと C++ で書かれた日本語の本が最近出版されましたね。

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

データ構造とアルゴリズム (電子情報通信レクチャーシリーズ B-8) 単行本 ? 2018/2/1
岩沼 宏治 (著), 美濃 英俊 (著), 鍋島 英知 (著),
0594デフォルトの名無しさん (スップ Sd43-lXkA)
垢版 |
2018/05/10(木) 19:17:25.91ID:4Q48RAuxd
アルゴリズムの抽象的な部分(オーダーとか適用するデータ構造の再帰性や対応関係)を学ぶならCよりML系の方が向いてるは向いてると思う
ただ環境構築なんかの障壁もあるだろうし最終的にCは触るだろうけどアルゴリズム以外の所で詰まりにくいという意味でC#を推してみる
0597デフォルトの名無しさん (スップ Sd43-lXkA)
垢版 |
2018/05/10(木) 20:05:12.45ID:4Q48RAuxd
ああ勘違いしていた
アルゴリズムを勉強したいのではなく
>>もし、プログラマーになるとした場合、もっとも必要とされる言語を使って、
>>アルゴリズムとデータ構造の勉強をすれば効率的かなと考えています。
なのね

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

コンピュータサイエンス自体死ぬほど広範囲な学問で、実務のプログラミングとの間にもやっぱり開きがあって万能な言語なんて無いよ
敢えて言うなら物理と数学、これだけは裏切らない
0599デフォルトの名無しさん (ワッチョイ e3cb-k37M)
垢版 |
2018/05/10(木) 21:41:29.95ID:tcNeLXMy0
>>585
そこがいいんだよ
隠蔽されたことを忘れたフリをし
本当は忘れていないということの練習に向いている

忘れたフリが綺麗なコードの練習
本当は忘れていないことが性能評価につながる
両立した技能の練習に向いているということだ
0601デフォルトの名無しさん (アウアウウー Sa89-Iyo3)
垢版 |
2018/05/11(金) 12:33:06.03ID:Asz7DXCua
今はどうか知らないけどcは標準でvectorやlistやmapがないから
そこから始めないといけないのでめんどくさい
アルゴリズム辞典見たら配列をdefineされたNやMで確保してた
ライブラリとして使う気ゼロ
0615デフォルトの名無しさん (アウアウウー Sa89-k37M)
垢版 |
2018/05/11(金) 21:04:30.87ID:2EGPeEG9a
昔は仕様がダメで段々改良されていくということがありますが、
それはなぜなのでしょうか?

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

それとも単に思慮が足りなかったというだけでしょうか?
0625 ◆QZaw55cn4c (ワッチョイ 6360-bFqk)
垢版 |
2018/05/12(土) 00:13:37.95ID:HeMwMf3D0
>>624
私がお勧めしているのは
https://www.amazon.co.jp/dp/4894714221/
https://www.amazon.co.jp/dp/4881357786/

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

いずれも C++11 以前で今となっては古いのですが、代わりになるような本がない…
両方とも私は読んでいますので、普通の質問には答えることができます
0626デフォルトの名無しさん (ワッチョイ 55b3-A5aB)
垢版 |
2018/05/12(土) 00:24:10.29ID:TkoJoFTb0
最初に読む本は禿4版一択ですよ。
■ このスレッドは過去ログ倉庫に格納されています

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