- 1 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 17:54:00.55 ID:0DW9z0rL.net]
- ※前スレ
C++相談室 part153 https://mevius.5ch.net/test/read.cgi/tech/1602339500/ テンプレここまで
- 756 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 11:29:34.99 ID:u6Au0MiC.net]
- https://cpprefjp.github.io/lang/cpp20/consistent_comparison.html
のoperator==節で仕様とその理由についても説明してあります
- 757 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 12:05:07.17 ID:8kTif7Fu.net]
- relops
- 758 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 12:07:48.78 ID:ZhVk2C4b.net]
- relops
- 759 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 12:14:57.71 ID:7xS0C1vs.net]
- なるほどわからん。弱順序って何よ?
- 760 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 13:36:33.88 ID:peDNmUYI.net]
- >>745
二項関係で、反射律、推移律、比較可能性を満たすもの
- 761 名前: mailto:sage [2021/02/17(水) 21:10:31.90 ID:n4obO1jB.net]
- >>746
擬順序とか半順序と呼ぶ本もありますね、 ただ、その「比較可能性を満たす」とはなんでしょうか?私の教科書では、擬順序には反射律・推移律だけしか要請されていなかったと記憶しているのですが?
- 762 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 23:46:57.44 ID:ZhVk2C4b.net]
- 普通に言葉通り任意の2つの元を比較できるということなのでは…
木構造で「親は子より大きい」という順序を定義しただけ (全順序集合(例えば整数)で全ノードをラベル付けしてしまうというチート手段に訴えことなく、 文字通り「if (aはbの親) { a > b; }」という規則と(a, b)の反射律、推移律を導入しただけ では兄弟間の大小が定まらない、 みたいな
- 763 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 23:47:32.54 ID:ZhVk2C4b.net]
- のは半順序で、
整数みたいなやつが全順序
- 764 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 23:59:39.55 ID:ZhVk2C4b.net]
- なお{ 全順序集合 }⊂{ 半順序集合 }なのは確定的に明らかなので、
反射律・推移律だけしか要請されていなかったらそれは全順序集合の集合を含む半順序集合の集合の意味となりぬ つまり全順序集合の集合と半順序集合の集合が区別できん 両社を区別したい議論のときは比較可能性の有無を宣明せねばならんぬ、
- 765 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 00:34:07.44 ID:48a8FzyN.net]
- a≦b または b≦aが成り立つ時、比較可能
弱順序ってしらなかったけど、半順序とは違うようだ 「半順序?弱順序?二項関係・順序関係まとめ」って記事
- 766 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 03:35:31.61 ID:sRdwF113.net]
- 束論やってるけど弱順序とか初めて聞いた…
マ界用語?
- 767 名前:741 mailto:sage [2021/02/18(木) 06:50:20.77 ID:brZHVFLx.net]
- >>74
- 768 名前:2
まだ何とも言えないが thx! []- [ここ壊れてます]
- 769 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 10:08:01.17 ID:48a8FzyN.net]
- 弱順序は、半順序よりは制限強いが全順序より弱いもので、
ある種のソートアルゴリズムでは全順序よりは制限緩められるけど 半順序までは緩められない、ってのがあるみたいね
- 770 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 13:16:30.49 ID:9Yl3mCZH.net]
- >>752
束って何で勉強すればいいん?
- 771 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 14:43:05.98 ID:48a8FzyN.net]
- アルゴリズムとの関連はちょっとわからんけど
数学としての束論って単独の本は少なくて、代数学の本に載ってるんじゃないかな もしくは順序集合の話として集合論の本
- 772 名前: mailto:sage [2021/02/19(金) 04:42:11.06 ID:3tFNJrqv.net]
- >>748
>普通に言葉通り任意の2つの元を比較できるということなのでは… いや、それは全順序ですよ ・擬順序 ・順序 これらの演算子を≦としたとき、かならずしも任意の二元 a, b について a ≦ b の真偽が定まらなくてもいいと思います 擬順序に対して「a ≦ b かつ b ≦ a ならば a = b」という縛りが追加されるのが順序、 順序に対して、任意の二元 a, b について「a ≦ b」または「b ≦ a」のどちらかである、という縛りが要請されるのが全順序 だったかと
- 773 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 20:38:08.11 ID:mpGE+xsF.net]
- wikipediaの「推移関係」の項目より
半順序 - 反対称的な擬順序 擬順序 - 推移的であると同時に反射的 全擬順序 - 完全的な擬順序 同値関係 - 対称的な擬順序 厳密弱順序 - 強半順序関係で等価関係での比較が不可能な場合 全順序 - 推移的で反対称的な完全関係 全順序、半順序くらいしか知らんかった
- 774 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 20:51:11.65 ID:gWMDVcMR.net]
- OOPの本だとサブクラス関係は前順序って書いてるよな?擬順序ともいうのか
推移的、A→B∧B→C |- A→C 、サブクラスのサブクラスはサブクラス かつ反射的、AはAのサブクラス
- 775 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 20:55:11.79 ID:fAhRarpN.net]
- >>757
>いや、それは全順序ですよ は? その条件が共通なだけだろ
- 776 名前: mailto:sage [2021/02/19(金) 21:23:56.68 ID:3tFNJrqv.net]
- >>760
一番弱い順序、推移的かつ反射的であるのみの順序関係は、実は任意の二項間においてかならずしも順序関係の真偽が定まらなくてもいいのですよ すべての二項間で順序の真偽が定まるのは、順序の中でも一番強いものである全順序で初めて導入される、と私は解釈しています
- 777 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:44:53.04 ID:gWMDVcMR.net]
- ブール代数 型システムで検索しても出てこないけど>>523
可補分配束の定義見てると確かにそんな気はしてくる インスタンス関係かサブクラス関係なのか?どっちでも成り立ちそうだけど、取り敢えず静的チェックをパスすることを考える 要素が無いと言う意味でCのvoidを冪集合ブール代数の最小元、空集合とみなす void *は何でも指せるという意味で最大元 まともな型システムなら(少なくとも)上記の擬順序以上は要求る 演算は多重継承とvirtual 定義が∨/∧に対応?クラス図書いてみたら成り立ちそうに思える 型チェック通らない全ての型を考えられるし、それが¬ 型述語で定義してればそのまま!演算子になる
- 778 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:55:14.25 ID:gWMDVcMR.net]
- 確証が持てなくてもどかしい…数学できる人ツッコミ待ち
とりあえずダイヤモンド継承を許さない言語だと、常に∧/∨は定義されないからブール代数にはならない事には気付いた
- 779 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:55:34.53 ID:hHLb88jw.net]
- ググってる時点で、というかそのことを隠しもしないニワカ
- 780 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:56:36.22 ID:gWMDVcMR.net]
- >>764
隠して5chなんかで偉ぶってどうすんのさ
- 781 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 22:01:35.27 ID:aORwmd7L.net]
- 質問ですがムーブコンストラクタを有する基底クラスの
派生クラスでムーブコンストラクタを 派生クラスがムーブコンストラクトされる際に基底クラスにアクセスしようとする場合であっても 安全に書く方法って何かあるんでしたっけ
- 782 名前:デフォルトの名無しさん [2021/02/19(金) 22:03:03.40 ID:6z9jMlRH.net]
- 作ったクラスをmapにいれるときoperator<を書かなきゃいけないのがめんどい
- 783 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 22:08:24.37 ID:aORwmd7L.net]
- あとムーブコンストラクタを有するクラスを
詳細を隠ぺいする目的でインターフェースを設けたとき インターフェース経由でムーブコンストラクトする方法って何かあるんでしたっけ アブストラクトファクトリイーを作るしか無い?
- 784 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 22:11:39.72 ID:aORwmd7L.net]
- この場合アブストラクトファクトリイーといっても、元のクラスFooに対して
IFoo IFoo::move() { ... } が定義してあって IFoo x = (適当な生成手段) ののち、 IFoo y = x.move() でxが破壊されるやつ!
- 785 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 22:36:29.47 ID:F7SsNRLa.net]
- それインターフェースとして使えてないよ
- 786 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 00:40:16.16 ID:iK8Sr3o/.net]
- 領域が連続しているコンテナなら何でも良いんですが、たとえば array<T> a を vector< vector<T> > b に n 要素分コピーしたいときって
memcpy(b.data(), a.data(), n*sezeof(T)) で良いんですかね? UNIXコマンドと順番が違ったりして間違えそうなのですが、他に良いやり方ありますか
- 787 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 01:38:00.62 ID:YJV0xwOV.net]
- >>771
ド素人かよ
- 788 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 01:42:23.87 ID:upzAgg50.net]
- >>771
領域確保されてるならたぶんそれが最速だけど、普通はstd::copyかな
- 789 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 08:11:48.90 ID:BRyl48dG.net]
- >>761
その「一番弱い」とか言ってるのは前順序だろ。 ククク... 前順序は順序四天王の中でも最弱... ウィキペディアにも書いてあるのに間違うとは面汚しよ...
- 790 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 11:17:36.76 ID:ZF+WEG2v.net]
- 半順序とかいう訳が悪い
英語のpartial orderの方が分かりやすい
- 791 名前: mailto:sage [2021/02/20(土) 11:27:39.73 ID:mkFIMg3t.net]
- >>774
本によって用語にブレがあるのは数学では常識でしょう?だから>>761 では定義もあわせて書いておきました
- 792 名前:デフォルトの名無しさん [2021/02/20(土) 11:30:33.89 ID:ec7b4JGn.net]
- あとは裁判で争うしかないでしょうね。
我々には判決が出せませんから。
- 793 名前:はちみつ餃子 mailto:sage [2021/02/20(土) 11:52:10.16 ID:N5IkYQZo.net]
- >>771
前提条件として ・ T の型が trivially copyable である ・ vector の大きさが必要な大きさ分に出来ている ならそれでもいいよ。 でも、 C の関数を C++ でも使えるのはほとんどが互換性のためでしかなく、 作法的にはあまり使わないに越したことは無いって感じ。
- 794 名前:はちみつ餃子 mailto:sage [2021/02/20(土) 11:56:56.24 ID:N5IkYQZo.net]
- >>771
>>778 と思ったけど、 vector<T> ではなくて vector< vector<T> > なのか。 それだと領域が連続するという前提が成り立たないんじゃないんですかね。
- 795 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 12:51:28.34 ID:K0wy5MAI.net]
- >>770
どういう意味じゃ… ムーブコンストラクトする手段をインターフェースとして公開したい需要は論理的に有り得る それともIFoo::move()に実装が伴うからという意味?
- 796 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 14:23:36.69 ID:XZPJJfWU.net]
- >>779
なぜ? 行優先か列優先かは置いといて、vectorの要素は連続するのだからvectorのvectorも連続するのでは? サイズやキャパシティが変わったときに不連続になりうるということ?
- 797 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 14:39:27.43 ID:ZF+WEG2v.net]
- vectorのvectorの中身はサイズ値とバッファポインタが連続で並んでるだろうな
- 798 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 14:57:30.99 ID:upzAgg50.net]
- >>781
正しくコピーしたければ、 memcpy(b[0].data(), ...) みたいにしないと。 このとき当然b[1]のデータ領域はb[0]の後ろに連続していない
- 799 名前:はちみつ餃子 mailto:sage [2021/02/20(土) 15:27:01.55 ID:N5IkYQZo.net]
- >>781
vector 型のオブジェクトが連続して並んでいることは保証されるよ。 でも vector 型のオブジェクトのメモリレイアウトがどうなってるかは保証されない。 常識的な実装は >>782 が言う通りヒープから持ってきたメモリのポインタなどを持ってるだけ。 データそのものを内包しているわけではない。
- 800 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 16:22:37.93 ID:UDAFNKrx.net]
- ほらCと同じ基本の部分を教えずにいきなりSTLとか勧めるからこういう初心者が出てくる・・
- 801 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 17:06:29.35 ID:1TZxH4Mg.net]
- ある程度出てきても問題ないだろ。ちゃんとドキュメント読んで理解してくれる人も多いんだろうし、
「Cと同じ基本の部分」を教えたところでちゃんと理解してくれない人も居るだろうし。
- 802 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 17:09:29.42 ID:UDAFNKrx.net]
- ちょっと何言ってるかわかんない
- 803 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 17:54:39.09 ID:ZF+WEG2v.net]
- 相談室に初心者が来て何の問題があるのか
- 804 名前:はちみつ餃子 mailto:sage [2021/02/20(土) 18:06:15.32 ID:N5IkYQZo.net]
- >>788
程度による。
- 805 名前:蟻人間 mailto:sage [2021/02/20(土) 19:27:14.79 ID:VmESNyRi.net]
- >>771
> array<T> a を vector< vector<T> > b に n 要素分コピーしたいときって > memcpy(b.data(), a.data(), n*sezeof(T)) > で良いんですかね? 待てよ、b.data()って&b[0]だから型はvector<T>*だろ。書き換えたらいけないアドレスじゃん。 ダメです。
- 806 名前:蟻人間 mailto:sage [2021/02/20(土) 19:49:01.06 ID:HfYkFRCd.net]
- C++のvectorでは、演算子[ ]がオーバーロードされてるから、C言語の常識が通用しないんだよ。
memcpyは危険な関数だから簡単にメモリー破壊できるんだよね。 std::vector v; int a = 5; memcpy(&v, &a, sizeof(a)); // vのメモリー破壊。
- 807 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 20:38:26.44 ID:PUIofNKd.net]
- >>791
流石にそれは質問者のレベルにも達してないんで問題外
- 808 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 20:44:29.23 ID:Rkd/h2tQ.net]
- 別にここで何が正しいかを結論できなくてもいいのだが
>>776 そう言うなら「推移的かつ反射的であるのみの順序関係」が「弱順序」と書いてある本を 教えてくれる? 手元になかったらうろ覚えでもいいけど。〇〇の××先生がそう言ってたみたいのでもいいw 知識として一応確認しておきたいかなと。
- 809 名前: mailto:sage [2021/02/20(土) 21:19:47.30 ID:mkFIMg3t.net]
- >>793
>>761 では「推移的かつ反射的であるのみの順序関係が『弱順序』」とはいっていませんよ、よく読んでくださいね >>761 で言っているのは「一番弱い順序、推移的かつ反射的であるのみの順序関係は、実は任意の二項間においてかならずしも順序関係の真偽が定まらなくてもいい」としかいっていませんですよね‥‥ 曲解もはなはだしいと思いますね ちなみに私の教科書ではこれを「擬順序」と定義しています、大熊正氏の本ですが、私には一生かかっても私には読めないでしょうから、あとはググってください
- 810 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 21:44:52.70 ID:K0wy5MAI.net]
- std::vector v(sizeof(int));
int a = 5; memcpy(&(v[0]), &a, sizeof(a)); // おk
- 811 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 21:47:14.25 ID:K0wy5MAI.net]
- つかこうかorz
std::vector<int> v((size_t)1); const int a = 5; memcpy_s(&(v[0]), sizeof(v[0]) * v.size(), &a, sizeof(a));
- 812 名前:蟻人間 mailto:sage [2021/02/20(土) 21:58:40.54 ID:HfYkFRCd.net]
- この場合は素直にループを書くか、それとも格好良くstd::copy使うのが楽かな。
- 813 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 01:26:13.27 ID:G4m9GHw4.net]
- for文回したら死ぬ病気にでもかかってんのか?
- 814 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 01:29:00.28 ID:oO8KGr2m.net]
- 条件を満たすならmemcpyのほうが圧倒的に早いからな
- 815 名前:はちみつ餃子 mailto:sage [2021/02/21(日) 01:32:42.66 ID:jd0qgVVy.net]
- それほど速くならない・速くなくていい場合のほうが圧倒的に多いってのもあるけどな。
- 816 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 03:13:29.79 ID:ZrTKdY4P.net]
- そもそもそんなクソみたいなコードはふつう書かない
- 817 名前:770 mailto:sage [2021/02/21(日) 03:54:49.57 ID:HYHVDYIS.net]
- >>780
IFooっていう名前からしてインターフェースってJava/C#的な意味でのそれだと思ってたけど それならポインタなり参照なりじゃないと機能してないよっていうかコンパイルエラーでしょってツッコミ
- 818 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 03:58:42.63 ID:0HHdBuLy.net]
- メモリコピーを最適化する前に、他にすべきこと沢山あるだろ的な答えになるよな、確かに。
PG界の真理情報だわ。
- 819 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 05:11:43.88 ID:L28MHLBD.net]
- valarrayでxorとか
- 820 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 07:43:27.01 ID:F92hI73d.net]
- >>802
オブジェクトAがconstメンバとして保持しているブツの所有権を移してオブジェクトBを構築することは ムーブコンストラクタでないと_なのでムーブコンストラクタである必要があり この要請はオブジェクト全体が直接アクセスかポインタや参照経由の間接アクセスかとは独立愚連隊、 >>803 真に高速化を求められる内側のループでstd::vector<int> xとかしないから >>796はひとつながりの省略のないコードとして読んだら判断を誤りうる
- 821 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 07:51:19.71 ID:F92hI73d.net]
- じゃなかったorz
Foo::Foo(const Foo& src) { (srcを変更して新しいインスタンスを初期化) } はconst_cast<Foo>的な危険手段でないとやれないが Foo::Foo(Foo& src) { (srcを変更して新しいインスタンスを初期化) } とするとなんかコンパイラが警告を出すから Foo::Foo(Foo&& src) { (srcを変更して新しいインスタンスを初期化) } にせざるおえないという、
- 822 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 13:21:42.30 ID:Dqlg3tSu.net]
- 関数と関数オブジェクトってどう使い分けるの?
- 823 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 13:30:17.46 ID:YxY+Ievf.net]
- こういう馬鹿にはちゃんとベンチマークとれって言ってやるのが正しい行い。
- 824 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 14:32:16.15 ID:HYHVDYIS.net]
- >>805
そんなこと聞いてるんじゃなくて 提示されたコード片じゃどう考えても動かないから何したいか分からんのよ https://wandbox.org/permalink/ancQey3IkQKyWsu1 こっから始めてどこをどうしたいか教えてくれ
- 825 名前:デフォルトの名無しさん [2021/02/21(日) 14:47:26.80 ID:9WgNecVw.net]
- 404 Not Found
- 826 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 15:33:36.83 ID:HYHVDYIS.net]
- すまん
https://wandbox.org/permlink/ancQey3IkQKyWsu1
- 827 名前:デフォルトの名無しさん [2021/02/21(日) 16:21:41.69 ID:u2qGdVDT.net]
- 過疎ってるし、初心者どころかJavaの質問でもOKでは?
- 828 名前: mailto:sage [2021/02/21(日) 19:01:13.83 ID:3Ebck9FU.net]
- >>807
この質問に対して回答をつける用意がありますが、しばしお待ちを
- 829 名前: mailto:sage [2021/02/21(日) 19:27:36.57 ID:3Ebck9FU.net]
- >>807,813
昔のコードを今読んでみたんですが、実のところ関数オブジェクトにする必要性があったかどうか、今の価値観のもとでは首をかしげています 数値計算のプログラムって、無自覚にバンバン書いてると例えばルンゲ食ったをやっているとこと他とかが混ざり合って収拾がつかなくなる、と思って関数オブジェクトにアイソレートした記憶があって、それを思い出して読んでみたんですけれども、今読んでみても、なんだか、ねえ‥‥ https://mevius.5ch.net/test/read.cgi/tech/1434079972/72
- 830 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 20:07:12.76 ID:F92hI73d.net]
- >>809
Fooはこんなやつ、 https://ideone.com/mPPH8I IFooは、C++ではよく考えたらIFooのオブジェクトを直接生成できないので(>>802の仰せの通り std::shared_ptr<IFoo>とかで生成することを考えたのだがエラーになるorz (上のリンク先のコードでコメントアウトしてあるgenerate_IFoo() 思いのほか闇が深かった\(^o^)/ std::shared_ptr<IFoo>が生成できた暁には、 std::shared_ptr<IFoo> pがリソースの所有権を握ったFooを保持しているとき、 std::shared_ptr<IFoo> qというのがいるとして、 *q = *p で所有権を*pから*qに渡したり、 return *p で呼び出し元が所有権を有するFooを受け取れるようにしたいワケ
- 831 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 20:09:12.28 ID:F92hI73d.net]
- ちなみにWandboxでソースコードをフォークする方法は
初心者なので わかり ません
- 832 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 20:14:47.49 ID:LxNhpnKU.net]
- generate_Foo()がコケてるのはnewのところでFooのコピコンがないだけだろ
コピコン書くか、ムーコン使いたいならnew Foo(std::move(foo3))にすればいいだけ 後半も意味不明 *q = *pってそれスライシングだぞ
- 833 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 20:23:47.49 ID:F92hI73d.net]
- >>817
普通の(ムーブでない)コピコンは書けないなぜなら>>806の理由により >*q = *pってそれスライシングだぞ どゆこと? Foo foo1とFoo foo2だと foo1 = foo2 とできるのに、
- 834 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 20:26:48.03 ID:F92hI73d.net]
- ちょっと補足すると、IFooには現状代入手段が無いから、
*q = *pはそもそもコンパイルが通ることはなく、目的とする機能を形而上的に表す仮想コード のつもり
- 835 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 21:03:58.63 ID:+My/Unlg.net]
- >>814
処理を意味でまとめるようなことなら積極的にやるべきだと思いますが、それは関数オブジェクトじゃなくて関数でもできますよね?
- 836 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 21:05:03.53 ID:HYHVDYIS.net]
- >>815
コピー代入演算子とムーブコンストラクタだけ定義するとか意味分からんし インターフェースによる隠蔽より先にそっち解決しなさい 何がしたいのか自分で本当にわかってる?
- 837 名前: mailto:sage [2021/02/21(日) 21:07:32.53 ID:3Ebck9FU.net]
- >>820
まあ、そのとおりであり、そうなんですよね… >>814 は関数オブジェクトである必然性はありません、関数オブジェクトを積極的に使う例としては STL にご登場願うしかないのかもしれませんね
- 838 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 22:29:56.45 ID:LxNhpnKU.net]
- >>818
shared_ptrは関係ないから普通のポインタで話するぞ(同じ事だ) IFoo* p = new Foo(); IFoo* q = new Foo(); というのがあったとして*q = *p;ってのは何だと思う? pとqはIFoo*型だ だからもちろん*pと*qというのはIFoo型だ すなわち*q = *p;というのはIFoo::operator=(const Foo&)の呼び出しだ operator=()はvirtualにできないから、pとqが本当はFoo型オブジェクトを指してることなんか知りもしないし考慮もしない よってIFoo部分の代入だけが行われて、要はqのIFoo部分だけが首チョンパされてpのIFoo部分が代入される これをスライシングという
- 839 名前:はちみつ餃子 mailto:sage [2021/02/21(日) 23:00:12.09 ID:jd0qgVVy.net]
- >>822
関数オブジェクトに「関数」とついているのは関数と同じ記法で呼び出せるということに意味があって、インターフェイスの問題。 状態を持った関数 (関数オブジェクト) も状態を持たない関数 (関数ポインタ) も統一的に扱えたらうれしいねって話なので、 状態を持たず、高階関数に渡すこともない場合は関数オブジェクトにする意味はないな。 (普通の関数も static 変数への参照を持ってたりする場合もあるので必ずしも状態を持たないわけではないけど。)
- 840 名前: mailto:sage [2021/02/21(日) 23:42:46.53 ID:3Ebck9FU.net]
- >>824,820,(>>813,814,822)
結局、どーでもいい一発芸で、ああ動くね‥‥、と思ったまま放置してましたね<関数オブジェクト https://mevius.5ch.net/test/read.cgi/tech/1434079972/21 https://ideone.com/9KIuSD あとはラムダ式の理解のための存在という認識、か
- 841 名前:はちみつ餃子 mailto:sage [2021/02/22(月) 00:10:55.10 ID:oiAqsUn6.net]
- 「ラムダ式が関数オブジェクト (型の定義と生成) の構文糖」というのは
既存のプログラムとの整合性を壊さない上手いアイデアだと思うけど、 しばらくしたら「関数オブジェクトはラムダ式の実体」という説明のほうが 通りがよくなったりするかもしれないね。
- 842 名前:デフォルトの名無しさん [2021/02/22(月) 04:39:33.19 ID:7qATnC1I.net]
- 関数オブジェクトで状態を渡せるのは結構なんだが、コピーコンストラクタ渡しなので、
手の込んだ状態管理だった場合は結局、C言語と同じ
- 843 名前:ュユーザー定義変数を介して状態を読み書きすることになる。 []
- [ここ壊れてます]
- 844 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 08:23:10.03 ID:Dz0hZ3aS.net]
- >>827
shared_ptr使えば、大抵の場合は問題ないんじゃない?
- 845 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 09:54:32.23 ID:Y0MZ31oO.net]
- >>807,820ですけどQZで始まる人あまりにもレベル低いというか回答者として不適格だと思うのでNGします
- 846 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 10:22:59.45 ID:1euWwsnd.net]
- >>829
答えてもらってる立場で偉そうに。常識ないの?
- 847 名前:デフォルトの名無しさん [2021/02/22(月) 11:11:29.17 ID:M+ptXBNl.net]
- いやでも実際・・・QZはね・・・
50過ぎのおっさんが無理して絡みにいってるけど空回りしてる感じなんだよね ほんと残念だけども
- 848 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 11:36:36.23 ID:7qATnC1I.net]
- 関数オブジェクトに対するラムダ式の優位性は、ローカル変数を比較的安全かつ手軽に参照渡しできることだろう。
- 849 名前:デフォルトの名無しさん [2021/02/22(月) 12:08:03.12 ID:5Ezd+ZoO.net]
- あわしろ氏がQzはアカン言うてたけど、ターゲット変えたのかな?
急にその手の書き込みが増えてあからさますぎる。
- 850 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 16:15:54.50 ID:rpJl6SNk.net]
- >>831
QZの回答は糞だとして、回答者に対して>>829みたいな態度をとることがどう正当化されるわけ?
- 851 名前:デフォルトの名無しさん [2021/02/22(月) 17:04:18.35 ID:M+ptXBNl.net]
- 回答者には無条件で感謝しないといかんのか?
気持ち悪いな
- 852 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 17:39:33.90 ID:rpJl6SNk.net]
- >>835
感謝しろなんて言ってないぞアホ
- 853 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 19:14:24.66 ID:SaDkzfTf.net]
- >>835
回答を得るのに適切な行動を取りゃいいよ。 変にヘイトを吐くとつっかかる奴がいるから回答から遠くなる。 >>829は感情を制御する訓練をしないとな。
- 854 名前:デフォルトの名無しさん [2021/02/22(月) 19:28:11.36 ID:M+ptXBNl.net]
- たしかに
勝手にNGしとけば十分で煽るように宣言するは意味はまったくないね 擁護した俺が悪かったごめん
- 855 名前: mailto:sage [2021/02/22(月) 19:57:55.16 ID:R3R68rti.net]
- >>831
認めましょう >>838 私の意見に一番近いですね 私は、馬鹿な私の意見を見たくない人も多いと想定しており、馬鹿な私が発言するときは馬鹿の印としてトリップをつけるようにしています、それだけは確約しますので、後は好きなように NG に入れていただいて結構ですよ 私はそういう人に干渉するつもりはありません
- 856 名前:デフォルトの名無しさん [2021/02/22(月) 20:02:59.96 ID:5Ezd+ZoO.net]
- そういう書き込みを見ると、あわしろ氏よりQzのほうが大人に見えるなあ。
まあでも、あわしろ氏には技術評論社がついてるからね。 謝っといたほうが良いんじゃないの?
|

|