1 名前:デフォルトの名無しさん mailto:sage [2021/11/15(月) 18:49:18.44 ID:I69rZ/Of.net] 前スレ C++相談室 part157 https://mevius.5ch.net/test/read.cgi/tech/1628474251/
933 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 20:03:27.39 ID:vE8mmwyH.net] 乱数ってだいたい静的になんか持ってるよね
934 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 20:44:52.17 ID:UkhMLhRO.net] マルチスレッド環境用にジャンプって機能が疑似乱数にあるよな 「疑似乱数 ジャンプ」でぐぐると出てくる
935 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 21:33:11.13 ID:CqI2HZWm.net] 状態持ってるのはエンジンの方 分布ごときにどんな怪獣ブラックボックスのイメージ持ってんだ
936 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 21:37:34.26 ID:zjXK/l5x.net] エンジン以外に何があんの?
937 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 22:08:14.48 ID:2E5iBc/D.net] 例外処理で、catchした後、どのクラスがthrowしたのかってわかりますか?
938 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 22:35:41.44 ID:jOONNl+N.net] 初心者質問ですみません。 ヘッダで定義したテンプレート特殊化の非推奨属性がヘッダ外で効いてないっぽいんですけど、 ヘッダ外でも非推奨としたい場合何か特殊な事をしないといけないとかありましたっけ? 例えば .h ``` template <std::integral INT_TYPE> struct int_auto { using type = auto_int_detail<std::is_signed_v<INT_TYPE>, sizeof(INT_TYPE)>::type; }; template <> struct [[deprecated("char type is not allowed")]] int_auto<char> { using type = auto_int_detail<std::is_signed_v<char>, sizeof(char)>::type; }; template <std::integral T> using int_auto_t = int_auto<T>::type; int_auto_t<char> i_header; // これは非推奨 ``` .cpp ``` int_auto_t<char> i_cpp; // これは非推奨じゃない ``` と
939 名前:ネっています。 MSVC++(v142)で言語標準準拠はstd:c++20です。 [] [ここ壊れてます]
940 名前:はちみつ餃子 mailto:sage [2022/02/14(月) 22:41:31.68 ID:eI8f6/6+.net] >>924 それ自体には発生元を特定する情報を持たないけど……。 どういう状況? ・ 例外的な状況から回復する必要があって発生源によって処理の切り替えが要る ・ プログラムの正常系が動くはずなのに何故か出てくる例外の元を特定したい (つまりデバッグ用途) どちら?
941 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 23:02:44.91 ID:2E5iBc/D.net] >>926 大学でこういう課題を出されたのですが、全然いい方法がわからないです。 「あるクラスの例外だけをレポートするためにはどのような実装方法があるか」
942 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 23:08:22.30 ID:BDOt87Dq.net] >>927 ヒント。例外はクラス等なんでも投げられる。そしてクラスは継承できる。
943 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 23:11:22.86 ID:R5SapkSQ.net] それはどのクラスがthrowした、じゃなくて、どのクラスがthrowされた、の間違いだな 例外 c++で検索すれば答えはすぐ出てくるよ
944 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 23:29:00.15 ID:a+DIA8ij.net] >>916 >>917 嘘やんと思って試してみたらマジでいけるやんけ知らんかった インスタンスフィールドまでは触れんかったが
945 名前:デフォルトの名無しさん mailto:sage [2022/02/15(火) 00:14:19.75 ID:VnfLS+lO.net] >>928 なるほど。std::exceptionを継承した自作クラスを定義して、 それを投げるというこですね?
946 名前:蟻人間 mailto:sage [2022/02/15(火) 00:23:09.85 ID:vbEMbnXt.net] throw this;
947 名前:デフォルトの名無しさん mailto:sage [2022/02/15(火) 14:33:45.24 ID:StNRh9X/.net] クラスメンバをforで回す方法はありますか? 例えばintのaとdoubleのbという2つのメンバを持つクラスがあったとして、 forループでクラス内のメンバ変数を全部加算したい、など。 イメージはこんな感じです。 double all = 0.0; for (T member : this->allMember) { all += member; }
948 名前:デフォルトの名無しさん mailto:sage [2022/02/15(火) 14:55:33.51 ID:aaenmMxg.net] for で回さないといけないほど多数のメンバー変数がある設計をまず見直すべき
949 名前:デフォルトの名無しさん mailto:sage [2022/02/15(火) 14:59:14.95 ID:0rNaChGh.net] リフレクションは無いというのが回答か
950 名前:デフォルトの名無しさん mailto:sage [2022/02/15(火) 15:15:26.06 ID:AWN50YIA.net] 動的にロードするのでなければ、自分で登録するか、ソースから解析するタイプのリフレクションライブラリを書くか探せばいい
951 名前:デフォルトの名無しさん mailto:sage [2022/02/15(火) 15:16:41.63 ID:g9Gn9R1H.net] 配列じゃあかんのか
952 名前:デフォルトの名無しさん mailto:sage [2022/02/15(火) 15:22:08.66 ID:3zKYAjvH.net] 数学のベクトルクラスでも作成してるのかい?
953 名前:デフォルトの名無しさん mailto:sage [2022/02/15(火) 17:13:44.36 ID:QbgtcDS7.net] >>933 あるよ。おすすめするわけじゃないけど。 https://www.google.com/search?q=boost+fusion+for_each+struct こんな奇怪なライブラリ使わなくても済むようにするための言語側サポートはいずれも提案中。先は長い。 P1306 Expansion statements https://github.com/cplusplus/papers/issues/156 P1240 Scalable Reflection in C++ https://github.com/cplusplus/papers/issues/545
954 名前:デフォルトの名無しさん mailto:sage [2022/02/15(火) 17:28:44.20 ID:AWN50YIA.net] じゃあこれもオススメではないがリフレクションベースで https://www.rttr.org/ を使った例でも... #include <iostream> #include <rttr/registration> using namespace rttr; struct s{ int m1; double m2; }; RTTR_REGISTRATION { registration::class_<s>("s").constructor<>() .property("m1", &s::m1) .property("m2", &s::m2); } template<typename T> double sum(const T& o) { type t = type::get<s>(); double sum = 0.; for (auto& prop : t.get_properties()) { sum += prop.get_value(o).to_double(); } return sum; } int main() { s o{1,1.1}; std::cout << sum(o) << std::endl; return 0; } // 思いつきで聞いてるだけな気もするけどw
955 名前:デフォルトの名無しさん mailto:sage [2022/02/15(火) 17:31:44.80 ID:AWN50YIA.net] ちょっと修正 #include <iostream> #include <rttr/registration> using namespace rttr; struct s{ int m1; double m2; }; RTTR_REGISTRATION { registration::class_<s>("s").constructor<>() .property("m1", &s::m1) .property("m2", &s::m2); } template<typename T> double sum(const T& o) { double sum = 0.; for (auto& prop : type::get<T>().get_properties()) { sum += prop.get_value(o).to_double(); } return sum; } int main() { s o{1,1.1}; std::cout << sum(o) << std::endl; return 0; }
956 名前:デフォルトの名無しさん mailto:sage [2022/02/17(木) 18:59:32.62 ID:bHlhY+TU.net] std::unique_ptr</*見切れる程長いクラス名*/> looongPtr{ std::make_unique</*見切れる程長いクラス名*/>(/*見切れる程多い引数*/) }; unique_ptrをメンバ変数にするときに最初のとこをautoに出来ないんですか?
957 名前:デフォルトの名無しさん mailto:sage [2022/02/17(木) 19:17:57.96 ID:9tUnWmYs.net] make関数使えば?
958 名前:蟻人間 mailto:sage [2022/02/17(木) 19:30:29.28 ID:sNGWbyyl.net] typedef longlonglongtypename shorttypename; auto ptr = std::make_unique<shorttypename>...
959 名前:デフォルトの名無しさん mailto:sage [2022/02/17(木) 20:09:06.95 ID:TNf7BdQD.net] >>942 できないですね。 https://cor3ntin.github.io/posts/auto_nsdmi/#so-why-are-auto-nsdmi-not-in-the-standard
960 名前:デフォルトの名無しさん mailto:sage [2022/02/17(木) 20:26:37.89 ID:wIu//gsc.net] >>942 設計を見直せ
961 名前:デフォルトの名無しさん mailto:sage [2022/02/17(木) 21:57:39.99 ID:d4bhbZak.net] 単なる○○できますか?に対して設計見直せとだけ言ってくるガイジなんなん まず質問に答えた上でなら分からんでもないが
962 名前:デフォルトの名無しさん mailto:sage [2022/02/17(木) 22:12:03.03 ID:wIu//gsc.net] うるせぇ雑魚が
963 名前:デフォルトの名無しさん mailto:sage [2022/02/17(木) 23:04:10.74 ID:wrwPyddf.net] ざーこざーこw
964 名前:デフォルトの名無しさん mailto:sage [2022/02/17(木) 23:56:12.71 ID:bHlhY+TU.net] 🤔
965 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 00:20:49.11 ID:q/M7jrOo.net] C++の業務ってことで入ったんだけどC++とは名ばかりのC言語バリバリのコードだった C++11、いやせめてCじゃなくてC++を書こうとしようぜと思うんだけど世の中こんなんばっかなん?こういうケースほんっとに多くてさぁ 40代↑の人が書いてるC++の言語って大体ほぼCでうんざりする
966 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 00:25:14.77 ID:qZSzRw8s.net] 偏見だけど同名の関数が並んでる以外Cとしてコンパイルできそうなイメージある
967 名前:はちみつ餃子 mailto:sage [2022/02/18(金) 00:25:30.70 ID:fowo2HBL.net] >>951 なんでそんなことになるんだろうな? コンパイラを信用してないからか? ワイは40代以上やけど C++ を使える状況であえて C 的なスタイルで書く気はしないわ。 だって単純に面倒くさいもの。
968 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 00:26:19.39 ID:VWFgwWIW.net] で、相談は?
969 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 01:20:21.17 ID:x3azmRP7.net] Cの文法が覚えられる限界なんでしょうな
970 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 02:48:20.56 ID:y/CjghL0.net] 人事部の人がCとC++の見分けがつかなくて 会計上コンパイラ代に「C++」と書いてあったから C++で募集かけてたんじゃね?
971 名前:ハノン mailto:sage [2022/02/18(金) 03:23:56.08 ID:AKyBDynF.net] >>953 C++で通らないCは書きたくない、とは思いますね
972 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 13:34:17.22 ID:NqXxszTV.net] >>951 ←こういう初心者にじゃあすべて作り直していいよ、と言うと何もできない。 無職の妄想からは何も生まれないのだよ。
973 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 14:23:13.29 ID:y/CjghL0.net] 自分は何かできるとでも言いたげだな すべて作り直すということがどのくらいの工数かわかってないんだろ
974 名前:デフォルトの名無しさん [2022/02/18(金) 15:06:16.89 ID:tL/18rdC.net] >>958 俺もそう思う 現場の不平不満ばかりの意識高い系エンジニアさん多いよね その現場を改善するわけでもなく文句いうだけ 高いスキルあるならそんな現場やめれば? 単価150万超えるようなとこなら周りにも高スキルな人がたくさんいるよ? 現場の文句言うだけの奴は結局その現場がお似合いのレベルなんだよ、っていつも思ってる
975 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 15:32:05.24 ID:dD/fDJ+w.net] >>951 普通の職場ならコーディングスタンダードあるから勝手はできないだろ。 コーダーとライブラリアンで許可されている範囲も違うだろうし。
976 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 15:57:07.65 ID:NqXxszTV.net] >>955 無職が言いそうなことだ。無能なブロジェクトリーダーはCプロジェクトをあっさりとC++化できる、 存在しないスーパープログラマを探し続けるがそんな奴はどこにもいない。 そんなスーパーPGがいたらATMはバグで止まらない。C++書ける奴はCをバカにしないよ。
977 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 16:33:00.65 ID:xb2lszF9.net] バグ出たまま放置してるヤツはバカにするけど
978 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 17:01:46.61 ID:1bc1nI/9.net] 正当な理由もなくスマポやSTLを嫌がった結果 生ポインタをガチャガチャいじくり回したスパゲティコード書いて それが遅くて非効率でバグまみれリークだらけというのは非常によくあるけど そういうCプログラマ様も敬わなきゃダメ?
979 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 17:04:32.95 ID:y/CjghL0.net] バイアス満載だな 落ち着けよw
980 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 17:19:05.78 ID:xb2lszF9.net] そういうどうしょうもないのはヒソカに心の奥でバカにしていいし反面教示にすべし
981 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 18:15:33.32 ID:jeS+/hUn.net] マ板かここ?
982 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 20:06:32.33 ID:z2RoOtDN.net] 80対20の法則は大事だし、動くコードを作ってから最適化をした方がいいって偉い人も言ってた気がする リソース管理はとりあえずスマポを使うのが吉だと思ってます
983 名前:デフォルトの名無しさん [2022/02/18(金) 20:12:42.95 ID:N0FOn5a0.net] 自分で責任もって結合テストする覚悟があるんならいくらでもCからC++に置き換えていいと思うよ
984 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 20:34:30.32 ID:y/CjghL0.net] とテストの基本がわかってないやつが言う C++に動的な型宣言はないからな
985 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 20:38:01.63 ID:NqXxszTV.net] 効率ガーと言うが、CをC++に書き換えて高速化、省メモリ化するなんてむしろレアケース。
986 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 20:44:21.03 ID:y/CjghL0.net] C++の隠れたコードが何をしてるか解ってないやつが C++にしたら高速化した低速化したって言語のせいにするんだよ
987 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 21:35:17.98 ID:UZsjZs7N.net] こういうとき悲しいのはね CもC++もたいして知りもしねえド素人のアマチュアが 想像と思い込みでもっていろいろレスつけてくること 噴飯ものだぞ?
988 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 23:03:13.88 ID:k8EYArXJ.net] c++書いてたとき何ちゃらストリームやらのファイル操作遅すぎてムリすぎて結局fopen使ったような… まあ便利は便利なんだけど利便さ求めるならそもそもpythonとかに逃げますし C++17未満?だとfilesystem使えなくてこんな簡単なことも出来ないのかと絶望した気もする
989 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 23:08:29.98 ID:qZSzRw8s.net] std::endlがフラッシュ兼ねてるのを知らずに使うとクソ遅くなる
990 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 00:57:04.84 ID:kSnJ/KwP.net] 初心者にC++は早い C++は人類に対する挑戦
991 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 01:05:13.77 ID:Sb0QDKc0.net] みんな最初は初心者
992 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 01:28:32.55 ID:MLwzxLgZ.net] Appleのcopland、Googleのandroid、MSのEdgeの失敗を見れば 予算と開発期間が十分にあれば解決すると思ってるならそれは間違いだと理解するだろう。 生ポインタをこねくり回す程度で脳みそのキャパが越えてるようじゃC++使ってもまともな実装なんてできない。 隠れたコードも何もC、C++はアセンブラの知識は必須だ。バイナリを読めるようになってから文句言え。
993 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 03:09:27.37 ID:kSnJ/KwP.net] フムフムアセンブラが必須か… https://godbolt.org/z/jq16j83We #include<vector> using namespace std; void f(char* dst, const char* src_start, const char* src_end) { const char*s = src_start; char*p = dst; while (s != src_end) *p++ = *s++; } template<typename Dst, typename Src> void f2(Dst dst, Src src_start, Src src_end) { auto s = src_start; auto p = dst; while (s != src_end) *p++ = *s++; } void hoge() { vector<char> dst(1024), src(1024); f(dst.data(), src.data(), src.data() + src.size()); f2(src.begin(), dst.begin(), dst.end()); } これってどうしてhoge側だとSIMD使わないの? C++コードでSIMD使わせるにはどうしたらいい?
994 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 04:43:40.93 ID:2+bZAOZm.net] valarray
995 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 04:46:13.97 ID:kSnJ/KwP.net] 不正解
996 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 06:01:38.84 ID:2+bZAOZm.net] hoge側でどうSIMD使えって言いたいの? inlineとかだったらしばくぞ
997 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 06:20:48.76 ID:ZqDn11YK.net] イントリンシック、でしょう?
998 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 08:45:24.25 ID:0ANF/iVA.net] Intelのコンパイラに任せ
999 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 09:52:14.21 ID:kSnJ/KwP.net] 1024 -> 1024 * 16にすると...
1000 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 09:57:47.91 ID:kSnJ/KwP.net] intrinsicは(inline)assemblerとほぼ同じなので、C#でしか使ったことないな
1001 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 10:03:29.25 ID:mDQ0X8WX.net] アセンブラなどの理解は「低レイヤを知りたい人向けのCコンパイラ作成入門」が結構勉強になったんですが、バイナリは何で勉強すればいいですかね?
1002 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 10:34:54.00 ID:0ANF/iVA.net] >>985 キャッシュメモリのアレで遅くなるやつか?
1003 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 10:44:00.07 ID:kSnJ/KwP.net] さぁ?・・・callしたり判定用コードやサイズ計算とかオーバーヘッドがあるからじゃね?知らんw
1004 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 11:57:14.27 ID:kSnJ/KwP.net] 次スレ立ててきた C++相談室 part159 https://mevius.5ch.net/test/read.cgi/tech/1645239402/
1005 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 12:08:36.38 ID:2h4SA+VW.net] CADソフトCANDYの作者の発言。 >数年前に,私の会社で組み込み機器向けのプロジェクトで,C++コンパイラが安定して動かないので >Cでプログラムを書くように私が指示したケースがあったのだが, >何人かのエンジニアが「今さらCなんかでプログラムを書けませんよ。 >クラスを使えなければスパゲッティコードになってしまいます」と猛反対をしてきた。 ■ 第4回 オブジェクト指向の本質 https://gihyo.jp/lifestyle/serial/01/software_is_beautiful/0004 別のインタビューと補完すると、そのときC++の標準ライブラリ的なブツを著者が C言語でババーっと書いて仕事させたという話だったはず(記憶モード ちょっどこの昭和カヨ?!
1006 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 12:18:20.98 ID:kSnJ/KwP.net] 組み込み機器用のCPUって特殊なんで、コンパイラが安定しないなんてよくある話 オブジェクト指向のメリットの本質についての話なので、可能/不可能が実装言語に依存しないというのもよくある話(楽かどうかは別) 別に昭和でも平成でも令和でも変わってないけど、>>991 に伝わってないのは確か
1007 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 12:50:13.00 ID:gFosEVVi.net] GTKのGObjectはCでオブジェクト指向を実現している訳だけど (ただし学習コストが低いとは言えないと思う)
1008 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 12:53:15.56 ID:2h4SA+VW.net] そんなん言ったらX Window SystemもC言語でオブジェクト指向しているらしい らしい(伝聞
1009 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 13:05:47.37 ID:x/upE6G9.net] 当たり前だけどアセンブラでもオブジェクト指向はできるし還暦の爺さん(とは言ってもなかなかの人ではある)が10年以上前に書いた記事だしまじで何を言いたいのかよくわからん
1010 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 13:20:12.26 ID:kSnJ/KwP.net] 分からん分からん言うのは誰でも出来るし、どんな初心者でも何に対してもそう言える なので、具体的に分からん部分を指摘できない人は初心者か、荒らしだと思ってる
1011 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 13:22:03.79 ID:kSnJ/KwP.net] athenaくらいつかったことあるよね
1012 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 13:28:47.19 ID:2h4SA+VW.net] >当たり前だけどアセンブラでもオブジェクト指向はできるし ちょっカプセル化(シンボルの隠蔽)にやや手間がかかるし オブジェクトをスタックにのコピーして返すのにもさらに手間がかかるし、 コンストラやデストラの呼び出しの保証や継承関係のチェックについて処理系のサポートが一切無いし、 やんけ;;; そういうオブジェクト指向のプログラミングパラダイムにおいて裏で当然働くべき処理が プログラマーが手間をかけ注意を振り向け続けないと実現されないというのはオブジェクト指向しているうちに入らないのでは……
1013 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 13:31:35.88 ID:6TS2kFRN.net] brainfuckでもオブジェクト指向でプログラミングできるんやで
1014 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 13:31:55.84 ID:6TS2kFRN.net] >>1000 なら次スレでちんこ貼る
1015 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 95日 18時間 42分 38秒
1016 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています