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/
892 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 15:14:31.28 ID:GfZrXG+U.net] 任意の区間の乱数って、どうせはみ出した分をちょん切るんでしょ?
893 名前:はちみつ餃子 mailto:sage [2022/02/13(日) 15:18:24.06 ID:nD0XyBZB.net] せやで。
894 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 15:25:43.89 ID:CS3pmCmc.net] そんな短い周期の疑似乱数使ってないんじゃない? 端っこは気にしないと思うなあ
895 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 16:00:39.64 ID:yoBtg/nD.net] >>876 > そらもちろん、元がそんな狭い範囲ならだめでしょ 「分かり易い例」って書いてあるのも理解できないの?
896 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 16:06:17.09 ID:CS3pmCmc.net] 一般論でいうと周期に余裕がない様な疑似乱数使うのが間違いなんだと思うけどね
897 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 16:19:57.08 ID:kSk9XozZ.net] そういうのを乱数知識ない奴が触らずに済むようにパッケージにしたのが<random>のdistributionなんだから素直に頼っとけよ
898 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 16:42:35.21 ID:JnTPIF3C.net] 周期と値域は別では
899 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 16:56:02.36 ID:KditTIA5.net] >>885 内部的にはおおむね同じです
900 名前:はちみつ餃子 mailto:sage [2022/02/13(日) 17:04:20.08 ID:nD0XyBZB.net] 線形合同法とかなら値の範囲と周期が一致することもあるが、乱数の一般的性質というわけではない。
901 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 17:59:20.78 ID:av/6iEu7.net] 周期と値域は別だろ たとえばマイナス一億と、プラス一億の2値をとる乱数とか
902 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 18:15:27.44 ID:AOBvb97v.net] 疑似乱数なんて今の値で次の値が決まるんだから周期も値も同じだろう その値の一部を使ったらまあ見た目は減るだろうけど
903 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 18:32:37.88 ID:3OIdnfKh.net] 値域: 出力される値の範囲 周期: そのまんま乱数の出力が1周するステップ数 内部状態かなんかとごちゃ混ぜになってない?
904 名前:はちみつ餃子 mailto:sage [2022/02/13(日) 18:34:40.46 ID:nD0XyBZB.net] >>889 内部状態と結果を分離する方式だって当然あるよ。 メルセンヌツイスタのどでかい内部状態を毎回値として利用するわけないし、 乱数として利用できる性質になってない。
905 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 18:34:49.25 ID:AOBvb97v.net] さすがにマジの最大値と最小値なんて誰も問題にしとらんやろ
906 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 18:38:19.35 ID:mUIDTArd.net] >>892 その思い込みで「値域」と「内部状態の大きさ」をごっちゃにしてるから話がこじれてたんでしょ。 区別して。
907 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 18:55:00.53 ID:RJAwRgrO.net] 端っこにゴミがあるよりは歯抜けが散らばってる方がいいというのは一理あるね
908 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 10:33:59.04 ID:14KvXXq2.net] メンバー関数をテンプレートに出来たりしませんかね? struct Sample{void func1(int i); void func2(int i);...} template<typename T> void SampFunc(Sample& sample, int i){sample.T(i);} みたいな エラーはNo member named 'T' in ホゲホゲって感じですが
909 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 10:38:23.09 ID:14KvXXq2.net] 書き込んでから思いつきましたが直接やらずに struct Caller1{void operator()(Sample& sample, int i){sample.func1(int i);}}; ... みたいなのを挟むべきですかねぇ
910 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 10:52:52.11 ID:Z549+Tcq.net] structの{}内にテンプレートの文全部入れてみ?
911 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 11:13:25.35 ID:o9A3FVGP.net] 毎回 uniform_int_distribution のインスタンスを一時的に生成しては破壊するのを繰り返すのだけはありえんだろ 無意味なメモリのアロケーションありすぎ
912 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 11:16:30.38 ID:lu0CYRrt.net] #include <iostream> using namespace std; struct Sample{ void func1(int i) {cout << i << "," << __PRETTY_FUNCTION__ << endl;} void func2(int i) {cout << i << "," << __PRETTY_FUNCTION__ << endl;} }; template<typename T> void SampFunc(Sample& sample, int i, T member_func){ (sample.*member_func)(i); } int main() { Sample s; SampFunc(s, 1, &Sample::func1); SampFunc(s, 2, &Sample::func2); return 0; }
913 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 11:28:15.31 ID:s3l2ZTMb.net] doubleとfloatの配列を同じように関数の引数に渡して扱う方法ってありますか? ・処理部が複雑なので引数の型が違う関数2個は作りたくない ・IF関数として両方版を作ってそこから処理部を呼び出すみたいな構造は可能、ただし別型版の実体コピー配列などは作りたくない(配列が巨大な為) 考えてみたのが、 配列の値部分をvoid*配列で指したものと、type_infoを持ったクラスなり構造体なりを用意して、 処理部でtype_infoに応じてvoid*をキャスティング、という方法ですが、 どうにも汚いのでもっと綺麗なやり方あれば教えてください。
914 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 11:34:29.03 ID:lu0CYRrt.net] コードがないので0点
915 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 11:51:48.64 ID:MNwZvUCy.net] テンプレートでいいだろ
916 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 11:54:11.63 ID:L8LvhIeL.net] >>900 ふつーにテンプレートじゃね? template <typename T> requires std::is_floating_point_v<T> void func(T&& arg) { } あとanyなんて手もあるけど void func(std::any arg) { if(arg.type() == typeid(double)) { } if(arg.type() == typeid(float)) { } }
917 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 11:57:58.78 ID:81yRYH7R.net] >>900 template<typename T, size_t size> void f(T(&a)[size]){ }
918 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 12:04:39.18 ID:Z549+Tcq.net] >>903 に便乗してC++20で以下のような書き方も #include <concept> template<std::floating_point T> void func(T && a){}
919 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 12:12:47.83 ID:L8LvhIeL.net] >>900 まさかとは思うが float f[2]; std::fill(std::begin(f), std::end(f), 0); double d[2]; std::fill(std::begin(d), std::end(d), 0); こんな基本はわかるんだよな?
920 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 13:46:37.17 ID:nlxkZZlr.net] >>899 ありがとう、採用します 895
921 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 14:17:59.24 ID:s3l2ZTMb.net] ありがとうございます、テンプレート便利ですね。使わせていただきます。900
922 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 14:33:14.26 ID:HFyH6Ayv.net] あるクラスのメンバ関数のデフォルト引数を同クラスのメンバ変数にすることって可能でしょうか
923 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 14:51:26.37 ID:lu0CYRrt.net] 可能
924 名前:はちみつ餃子 mailto:sage [2022/02/14(月) 14:51:35.72 ID:eI8f6/6+.net] もっとわかりやすく説明して……。
925 名前:はちみつ餃子 mailto:sage [2022/02/14(月) 14:55:09.41 ID:eI8f6/6+.net] デフォルト引数をデータメンバにするってのは単にデフォルト引数の値をデータメンバに入れるって意味? ↓ こういうの? struct foo { int x; void bar(int y=1) { x=y; } }; こんな単純なことがわからないとも思えんし、なんか隠れた要件がありそうな気がするんやが
926 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 15:03:33.70 ID:JdXPqUHi.net] >>912 逆だろ文網
927 名前:デフォルトの名無しさん [2022/02/14(月) 15:13:09.50 ID:9KgBPGkB.net] >>912 こいつJ民だったの?
928 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 15:13:51.43 ID:M1yCctPq.net] たぶん struct S{ int field; void f(int x=field){...} }; ってのをやりたいんだろうけどな あいにくC++のデフォルト引数は関数定義を見ただけで定数に決まるものしか受け付けられない どうしても同等の処理をしたいならオーバーロードして転送するのが一番楽 void f(){f(field);}
929 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 15:17:25.95 ID:L8LvhIeL.net] > デフォルト引数は関数定義を見ただけで定数に決まるものしか受け付けられない そうか? int func() { int a; std::cin >> a; //絶対に定数になり得ない return a; } void test(int arg = func()) { } int main() { test(); //OK. もちろん入力待ちをする }
930 名前:はちみつ餃子 mailto:sage [2022/02/14(月) 15:21:08.20 ID:eI8f6/6+.net] >>915 デフォルト引数は関数を呼び出すときに補われたかのように動作する。 関数呼出しのたびに評価されるよ。
931 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 15:33:51.02 ID:lu0CYRrt.net] コードがないし状況不明で困ってる文面にも見えないからアレで十分
932 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 17:52:44.50 ID:m3z01MvF.net] uniform_int_distributionって本質はIntTypeのペアを持った関数オブジェクトだから毎回生成したところで遅くはないはず
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 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています