C++相談室 part153

■ このスレッドは過去ログ倉庫に格納されています
2020/10/10(土) 23:18:20.00ID:i4F+i14Y
https://mevius.5ch.net/test/read.cgi/tech/1589424805/
※前スレ
C++相談室 part152
https://mevius.5ch.net/test/read.cgi/tech/1594528940/

テンプレおしまい
577デフォルトの名無しさん
垢版 |
2020/11/20(金) 18:39:27.79ID:2Xtms9kk
専ブラってなんすか?
2020/11/20(金) 20:09:54.73ID:8HnFa960
むかし2chが検索からガンガン流入してた時代は意味あったけど
もはや検索からははみごにされ廃れきってネット老人サロンと化した
今の5chではほとんど意味ない文化だなage/sage
579デフォルトの名無しさん
垢版 |
2020/11/20(金) 23:20:16.49ID:2Xtms9kk
だったら、上げていきましょうや。
2020/11/20(金) 23:36:24.04ID:tRQ7sQvu
だが断る
2020/11/21(土) 08:35:59.33ID:beyH0yOT
LINEで既読スルーがどうたらと一喜一憂してるバ…若者をうらやましいと思ったことは只の一度もない
やたら何たら離れしまくり四六時中ゲームしかしなくなる廃人化傾向は嘆かわしい限りだ
老害で結構だ、言わせておくさ てめーらより人生楽しいぜ
2020/11/21(土) 09:06:30.33ID:gA6oFLIj
べつに老害とかいうてませんがな
たんじゅんに皆年寄なりましたな、いうてるだけで
2020/11/21(土) 09:09:50.16ID:beyH0yOT
ワード1つに噛みつく以外に言うことが何もねえってことか
少しくらいあれよ、これ以上絶望させてくれるな
2020/11/21(土) 09:12:51.55ID:kTU0dCRJ
おじいちゃん、こんなクソスレで何をそんなに息巻いてるのよ
お体に障りますよ
2020/11/21(土) 09:14:58.42ID:R3A7NkyC
>>581
マ板の40代スレに変なポエム書いてる奴がいたが、同じ臭いがする
2020/11/21(土) 09:18:51.83ID:beyH0yOT
ゴミばっか
ここム板だぜ
らしい話しろよ
587デフォルトの名無しさん
垢版 |
2020/11/21(土) 13:02:47.48ID:t4UXk0gp
したがって、上げていきましょうや。
2020/11/22(日) 01:10:01.54ID:mIY2Yy/p
>>573-574
ありがとうございます。
ゲーム側の仕様で歩く/走るの切り替えがCapsLock状態なので、そこを制御したかったんですよね。
Shift押しっぱなしでも切り替わるは切り替わるんでそれをメインに考えてみます
2020/11/22(日) 14:11:14.57ID:3aKbbyVM
RTTIってどんな原理で実装されてるんですか?
2020/11/22(日) 14:26:33.97ID:KUPbiAdd
>>589
仮想関数と同じように、クラスごとにコンパイラがデータ生成して個々のオブジェクトから辿れるように埋め込む。
591デフォルトの名無しさん
垢版 |
2020/11/22(日) 14:33:39.46ID:gdEBKvV8
どんな高度なことをやってるように見えてても結局はC言語で実装してんの?
2020/11/22(日) 15:03:04.61ID:h+lYxto0
>>591
CPUが直接理解できるのはマシン語のみ。
そのマシン語に一対一に近い対応関係があるのはC言語。
だからどんな高度なことをやっているように見えてもほとんど全ての場合が
C言語で書ける。
2020/11/22(日) 15:51:20.82ID:o/Js7Lov
>>590
RTTI有効にしたらパフォーマンス落ちるっていうのをみたことあるけど
ただデータ(プログラム領域?)が増えるだけなら落ちなくない?
2020/11/22(日) 17:19:17.03ID:LCd15qeF
仮想関数テーブルのアドレスがクラスのIDの役割を果たす
からRTTIするには仮想関数が1個以上あれば良く、
それさえクリアしたら追加の空間コストはない
2020/11/22(日) 17:29:03.52ID:2nm5SjZ0
多態するならデストラクタが仮想のはずだから事実上は追加コストないんだよね
2020/11/22(日) 20:02:41.94ID:L/uQBHM9
ダイナミックにやりたいヤツ用
2020/11/22(日) 20:07:55.27ID:BvpndlWI
>>593
ほとんど落ちないはずだが、RTTIとは別意に一般論として仮想関数を1つでも
定義することによって、非常に僅かながら落ちる。
オブジェクトを new した時、オブジェクトの隠れたメンバに、仮想テーブル
のアドレスを書き込む必要があるので、new一回当たり 1 クロックだけ遅くなる。
また、オブジェクトにアドレスを1個格納するのに必要な領域が増やす必要がある。
これは、32BITモードの場合、4バイト、64BITモードの場合、8バイト。
2020/11/22(日) 23:24:02.57ID:LCd15qeF
RTTIするからといって多態性設計とは限らないんじゃ…
古き良きenum定数によるswitchの代替という使い方も有り得る
2020/11/23(月) 06:50:21.21ID:SrPyOTC6
nested_exceptionで普通に使う
2020/11/23(月) 06:52:19.04ID:SrPyOTC6
単純にexceptionで捕獲した例外をsystem_errorとかで場合分けとかね
catchをオーバーロードするよりこっちのほうが融通が利く
2020/11/23(月) 21:12:23.11ID:gAkTmGSN
そんなコストを気にするほどランタイム速度要求の厳しいソフトなんかお前ら書かんだろ
2020/11/23(月) 22:39:23.22ID:ryjND0ia
多重ループの中のif文一個でも結構変わるしなあ
2020/11/24(火) 01:19:31.94ID:IV+MkG/a
>>602
確かに変わる。
大量のテキストファイルをパースする際の字句解析など、
今でもコードの1クロックの差で体感速度が現実に変わってくる。
2020/11/24(火) 16:34:51.81ID:qTKKRlIf
(u_・y)最近C++で作られた出来の良いアプリって存在するの?
(u_・y)もう世の中のほとんどがブラウザーとそのブラウザー上で動作するスクリプトで完結してる気するんだけど
2020/11/24(火) 16:55:08.02ID:p7TzmKlx
そのブラウザがC++製だろうがwwwww
2020/11/24(火) 17:52:32.94ID:18TBNzSS
サーバを増やすんじゃなくて、時代はもうクラウドなんですよ!
2020/11/24(火) 18:12:54.60ID:zMf11be4
やめなよ
2020/11/24(火) 21:44:11.65ID:+m+UL9CA
>>603
どんなストレージ使ってんの?
2020/11/24(火) 23:18:43.39ID:EBaS3Lgi
何色のパンツはいてんの?w
2020/11/25(水) 14:30:01.10ID:yb7Sfyoy
やめなよ
2020/11/25(水) 18:03:06.30ID:GXxyf9BA
噂によると、メモリモデルに辟易していた、りーぬす先生が、NEW見た瞬間メモリモデルこれでよくねー?病にかかったと聞いた。
2020/11/25(水) 20:24:34.76ID:OwYFbtHk
あんなにC++はfuckでshitだって言ってたのに?
2020/11/25(水) 20:27:03.84ID:0vRedS2N
>>611
抜かせや証拠出せ
614デフォルトの名無しさん
垢版 |
2020/11/26(木) 20:31:56.32ID:rfhyh3I2
今からC++勉強しようと思ってるんだけど江添本って評判いいの?
2020/11/26(木) 21:31:52.07ID:aL88M1qg
>>614
「江添亮のC++入門」のことだよね。
評判は悪くはないと思うよ。
太っ腹なことに全文が github に置いてあるからタダで読めるし、
とりあえず序盤だけでも読んでみればいいんじゃないかな。

序盤でヘッダファイルの説明をすっとばして雑にやってるし、
継承の仕組みについて全く触れてなかったりするのは
入門向けにかなり思い切って省いてる感じはする。
一通り理解した後では他の本も読んだほうが良いと思う。
2020/11/26(木) 21:36:26.77ID:A1DZUd8N
>>615
どこのhubよ?
2020/11/27(金) 11:50:52.05ID:TefhHHJS
>>616
ググれば上位に出てくるやん
https://ezoeryou.github.io/cpp-intro/
2020/11/27(金) 12:25:02.43ID:4rNXQ0cM
ほう
2020/11/28(土) 02:48:58.01ID:G8gGytn9
へー
2020/11/28(土) 03:32:38.65ID:W53VNNYA
ふーん
2020/11/28(土) 08:49:49.77ID:/IOgDWl9
可変引数テンプレートのコンストラクタだとコピーコンストラクタやムーブコンストラクタより優先順位高い事ある?
2020/11/28(土) 09:11:22.92ID:KmyDCzB4
template <class... aho>
boke(aho&&...);
boke(boke&&);
これでどっちが優先てこと?
2020/11/28(土) 11:55:46.81ID:/HPnbUmI
非テンプレ版→テンプレ特殊化→テンプレの順に優先
624621
垢版 |
2020/11/28(土) 13:44:25.19ID:/IOgDWl9
これを実行すると可変引数が優先されてAhoが出る

https://ideone.com/ExRunF
2020/11/28(土) 14:33:28.98ID:/HPnbUmI
そのAhoはムーブじゃなくてbokeを作る時のデフォルトコンストラクトで出てる
2020/11/28(土) 14:35:42.94ID:gUqAhKBc
>>624
Test<double> boke;
のときにデフォルトコンストラクタ (引数がないコンストラクタ) を呼出す。
引数なしで呼び出せるのはそれしかないからそれを呼ぶってだけで、
優先もクソもないのじゃ。
2020/11/28(土) 16:18:43.35ID:/IOgDWl9
ではこれで1が出るのは何故?

https://ideone.com/zW676W
2020/11/28(土) 16:41:08.52ID:gUqAhKBc
>>627
テンプレートかどうかは重要ではなくて a が非 const だから非 const のほうが選択される。
2020/11/28(土) 17:23:45.26ID:/IOgDWl9
>>628
可変引数の方をconst&にしたら解決した!ありがとうございます。
2020/11/28(土) 21:09:45.69ID:2t4HVeMH
またアホみたいな流れかおもたら
意外とちゃんとした質問応答の流れでビビった
2020/12/01(火) 15:54:55.38ID:V2eyqU/t
gdbのプロンプトでシェルの文法使う方法ある?
具体的にはfor文で配列を走査しながら内容をprintしたりしたい
2020/12/01(火) 21:49:00.34ID:1uVg5H0L
>>631
配列自体をprintするんじゃだめ?
2020/12/02(水) 01:32:17.93ID:cCR9MlfF
>>632
添字番号を併記したりかんたんな演算を行ったりしたかった
634デフォルトの名無しさん
垢版 |
2020/12/02(水) 05:03:16.50ID:OLoYTJfY
OSはOS X10.15.7でApple clang12.0.0のC++17指定です
vector<tuple<int, int, int>> T;
vector<pair<int, int>> P;
のような配列(stdは省略)を作成したのですが以下のような挙動になりました
P.emplace_back(i, j); //通る
P.push_back(i, j); //エラー
P.emplace_back({i, j); //エラー
P.push_back({i, j}); //通る
P.emplace_back(make_pair(i, j)); //通る
P.push_back(make_pair(i, j)); //通る
省略はしてますがtupleも大体同じです(i, jはint)
push_backが一時コンストラクトをムーブしてることやmake_pairやmake_tupleに
型の推論があることは調べたのですが上記のようになる理由が分かりませんでした
後clangとg++でどちらに合わせた方が標準的というのはあるのでしょうか
図々しくも質問が2つになってしまいましたがよろしくお願いします
2020/12/02(水) 11:08:47.58ID:3dB9NeQy
>>634
「上記のよう」と言われても、どの挙動に疑問を感じてるのかわからない。
「clangとg++」の質問も、ここで誰かに「ある」とか「ない」とか言われて何の意味があると思ってるのかわからない。
2020/12/02(水) 11:20:44.01ID:CcFfxv7q
>>634
まず君がemplace_backとpush_backの違いをどう理解しているのか、自分の言葉で説明してみよう
話はそれからだ
2020/12/02(水) 11:59:18.46ID:wCsCmSK2
>>634
そういう言語仕様だからそうなるとしか言えない。
たぶん必要な情報は
 ・ emplace_back ( https://cpprefjp.github.io/reference/vector/vector/emplace_back.html )
 ・ push_back ( https://cpprefjp.github.io/reference/vector/vector/push_back.html )
 ・ 一様初期化 ( https://cpprefjp.github.io/lang/cpp11/uniform_initialization.html )
かな。

言語仕様に沿っていれば普通は gcc でも clang でも問題は起きない。
たまには処理系のバグってことも無くはないが、
どちらかで問題が起きるなら書いたプログラムのどこかが間違ってる疑いのほうが濃い。

個別の事情によってはコンパイラをどちらかに固定することもあるかもしれないが、
理想としてはどちらでも良いようになっているほうが好ましくはある。
2020/12/02(水) 15:48:13.91ID:wCsCmSK2
>>631
シェルというか Python か Guile は使える。
https://sourceware.org/gdb/current/onlinedocs/gdb/Python-API.html#Python-API
639デフォルトの名無しさん
垢版 |
2020/12/02(水) 21:51:44.10ID:3RyObk2q
プログラミング初心者でC++で競馬予想ソフトを作ってみたいんだけどC++はそういうのに向かないんですかね?
スクレイピングってやつはC++でできないのか?
2020/12/02(水) 22:26:25.03ID:FHuLcrq8
できるけどC++はWebやテキスト処理が得意とはいい難いから別の言語の方がいいかも
2020/12/02(水) 22:45:20.94ID:9+QNoiNo
テキストはc♯のが向いてる
2020/12/02(水) 22:49:07.36ID:1SGYvOuK
>>638
対話モードのPythonインタプリタ上でgdbを動かせるということですか?
2020/12/02(水) 22:59:56.90ID:wCsCmSK2
>>642
gdb のコマンドとして Python スクリプトが使えるという話。
644デフォルトの名無しさん
垢版 |
2020/12/02(水) 23:31:37.18ID:3RyObk2q
ありがとうございました!
2020/12/02(水) 23:51:03.60ID:1SGYvOuK
>>643
スクリプトかぁ
対話的にやりたいですけどわかりました
ありがとうございます
2020/12/02(水) 23:55:00.77ID:wCsCmSK2
>>645
対話的にもできるよ。
2020/12/02(水) 23:56:36.23ID:9+QNoiNo
pythonは仮想マシーンが必要
変数がすべてvariantなので初心者にはうってつけよ
2020/12/03(木) 00:11:32.72ID:MFKNATAf
>>646
ありがとうございます
なんか便利さの割にドキュメント少ない気がしますけど勉強します
649デフォルトの名無しさん
垢版 |
2020/12/03(木) 06:42:09.17ID:w/MpdpQO
勉強するぞ!勉強するぞ!勉強するぞ!


C++には似合わないような気が。
2020/12/03(木) 11:49:30.18ID:4DIFtwYV
>>649
どういう意味だ?
1. C++erならそれくらい勉強せずに使いこなせ
2. あるがままを受け入れろ。状況を変えようとするな
3. Pythonを便利と言うな

どれ?
651デフォルトの名無しさん
垢版 |
2020/12/03(木) 22:01:01.64ID:anyYWQoy
「ブラック企業社員」のお助けアプリが誕生 開発したのは22歳金髪大学生、開発のきっかけとは?
https://news.yahoo.co.jp/articles/b9d5e3b84e4aa78fab64d3eb8e0c02f72911287e
レシート買い取りアプリONEの17歳起業家、サービス一時停止から「怒涛の3カ月」で気づいたこと
https://www.businessinsider.jp/post-175983
ビジネス版マッチングアプリ「yenta(イェンタ)」全国展開 開始!
https://prtimes.jp/main/html/rd/p/000000023.000021544.html
ギフティング「TANP」運営がGCPほかから5億円調達
1日1200件の「リアルギフト」送付も可能に、U25起業家の新たな挑戦
https://thebridge.jp/2019/08/gift-ec-tanp-raised-500m-yen-from-gcp
人はこうすれば“ハマる”、源流はゲーマー視点の「幸せ」
https://project.nikkeibp.co.jp/behealth/atcl/feature/00005/012100006/
アプリ開発での起業は難しくない!成功するために覚えておくべきこと
https://www.biz.ne.jp/subject/blog/2004433/
【稼ぎ方が知りたい!】アプリの開発の収入って実際どれくらい?
https://itpropartners.com/blog/1657/
ネット関連事業で起業した成功例8選!ネットで成功するには○○が重要!?
https://www.official.or.jp/internet-entrepreneurship-success/
652デフォルトの名無しさん
垢版 |
2020/12/04(金) 14:40:55.75ID:rp0tCaVB
>>637
返信遅れて申し訳ありません、読んで色々試したら何となくですが理由見えてきました
一番為になった回答です…本当にありがとうございました
2020/12/05(土) 00:49:53.38ID:rsyXPWsW
>>652
結局のところ何がわからなかったのか言葉にしてくれんともやもやするんやが……。
2020/12/05(土) 08:56:44.63ID:F3hjf/ak
最近ずぶの素人にいきなりSTL教えたりする変な風潮、変なサイトが増えたせいで
こういうとこで初心者が苦労するんだよなぁ
ライブラリの使い方なんか、初心者がいきなりぶつかる"壁"であってはならんと思うんだが・・
先に言語自体の基本を学んでれば、>>634はここに聞きに来なくて済んでるはず
2020/12/05(土) 10:34:50.44ID:T+MIshnP
C++11以降はSTL前提で学んだほうが理解しやすい
2020/12/05(土) 11:14:52.77ID:pZ+vMW1v
STLとそうじゃないものの境界ってなに?
2020/12/05(土) 11:17:08.79ID:i8LYHGeY
そんなの意識する必要ない。"STL"なんて定義曖昧な言葉を使わなければよい。
658デフォルトの名無しさん
垢版 |
2020/12/05(土) 11:41:24.32ID:f0cq7ZxN
C++を使わなくてもSTLを学ぶほうが良い。
それどころか、およそ学問というものに携わる者はSTLを学ぶべきだ。
なぜなら20世紀における抽象化最大の功績だからだ。
659デフォルトの名無しさん
垢版 |
2020/12/05(土) 11:42:36.00ID:f0cq7ZxN
STLは宇宙人が教えた説があるほどクレバー、クレバー、そしてクレバーだ。
660デフォルトの名無しさん
垢版 |
2020/12/05(土) 11:47:59.12ID:f0cq7ZxN
目からうろこですよ。
まじ鱗。
661デフォルトの名無しさん
垢版 |
2020/12/05(土) 11:53:54.60ID:f0cq7ZxN
ムーブセマンティクスも感動したなあ。
あいつら本物の天才だな。
まじ鱗ですよ。
2020/12/05(土) 12:09:38.13ID:WVFX1CVk
unique_ptrとかthreadとかnumeric_limitsとかも"standard template library"だけどSTLとは呼ばれない
よく理解してないC++アンチが何となく叩きの槍玉に上げる時に使われる用語っていう印象
663デフォルトの名無しさん
垢版 |
2020/12/05(土) 12:15:33.65ID:f0cq7ZxN
なんじゃそりゃ。
2020/12/05(土) 12:22:29.71ID:pZ+vMW1v
コントかよ
665デフォルトの名無しさん
垢版 |
2020/12/05(土) 18:59:09.68ID:ynooL14Y
>>634
pairが初期化子リストによるコンストラクタを持たないから

c++ - emplace_back not working with std::vector<std::map<int, int>> - Stack Overflow
https://stackoverflow.com/questions/33207232/emplace-back-not-working-with-stdvectorstdmapint-int?answertab=votes#tab-top

似たような質問があって、mapだと初期化子リストのコンストラクタがあるから、initializer_listを使って初期化出来てる

この箇所あたりがそれ
https://cpprefjp.github.io/reference/map/map/op_constructor.html

map(initializer_list<value_type> init,
const Allocator& alloc); // (11) C++14 から

https://cpprefjp.github.io/reference/utility/pair/op_constructor.html
pairのコンストラクタにはinitializer_listは出てこない
2020/12/05(土) 19:10:24.03ID:F+hw3W9u
>>662
御意
2020/12/06(日) 03:41:22.30ID:hI81p89D
>>665
違うと思うぞ
668デフォルトの名無しさん
垢版 |
2020/12/06(日) 08:19:51.08ID:tzyWxjgm
じゃあ、多数決で決めましょうや。
669デフォルトの名無しさん
垢版 |
2020/12/06(日) 11:09:55.43ID:sjTPCZjA
>>667
違うんだったら何が正解だ?
2020/12/06(日) 13:55:38.68ID:hI81p89D
>>669
単純にemplace_backはコンストラクタに渡す引数を、push_backは生成済みの実体を受け取るという違いを
>>634が分かってないだけだろ

ついでに言えば、pairにinitializer_listを受け取るコンストラクタがあっても
emplaceは可変長テンプレート引数だから、推定に失敗してどっちにしてもエラーになる
多分。
2020/12/08(火) 20:44:18.72ID:efO/t6By
visual studio 2019でstd::filesystemを使いたいのですが、namespace"std"にfilesystemがありませんと言われます
ググた通りにC++言語標準をC++17にしても変わりません
どうすればいいですか?
672デフォルトの名無しさん
垢版 |
2020/12/08(火) 21:02:15.62ID:O6ovwbXJ
上の方に
#include<filesystem>
と書く
673デフォルトの名無しさん
垢版 |
2020/12/09(水) 01:24:22.81ID:WuZTb4kZ
なんだそりゃあ?!
2020/12/09(水) 06:50:42.80ID:OrjjObtT
>>671
// cl 671.cpp /EHsc /std:c++17
#include <filesystem>
#include <iostream>

using namespace std;
using namespace std::filesystem;

int main()
{
directory_iterator d(current_path());
for(auto&& e : d) cout << e.path() << endl;
}
全く問題なく動くぞ
cl.exeのバージョンは19.28.29334 for x64
2020/12/09(水) 08:05:49.03ID:TKgHvdMy
>>671
脱線の話だがappleのclangでfilesystem使おうと思ったら、
OSを10.15以降にしないと動かない上にビルドしたバイナリもそれ以降。
macだとintel版はhomebrewでgcc落としてビルドすれば旧いのでも動く。

日本語などのファイル名の扱いは、自分の試した範囲で、mac,linux,winで微妙に違ってた。
「wstring」、「stringでutf-8」のどっちかしか出来ん処理系があって、
複数機種用のコードは結局ifdefで分けるしかなかった。
そのうちライブラリが整備されるとは思うけど。
しかし「ハ゜」→「パ」のmacの仕様には参った。
676デフォルトの名無しさん
垢版 |
2020/12/09(水) 09:04:33.91ID:bCzZQrOf
脱線路運動。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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