[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 01/25 20:06 / Filesize : 267 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part121



1 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 23:54:41.33 ID:rlbDZGLz.net]
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part120
peace.2ch.net/test/read.cgi/tech/1445516998/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.97【環境依存OK】
peace.2ch.net/test/read.cgi/tech/1439849418/

次期規格C++1zはこちら
C++14/C++1z 20
peace.2ch.net/test/read.cgi/tech/1410382924/

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

809 名前:デフォルトの名無しさん mailto:sage [2016/01/13(水) 21:36:42.99 ID:QjeDGB/s.net]
こういうアホには
「バカか? ポインタ1個分がスタック圧迫するだと?」
と罵倒できる、ここの方が健全だよね。

810 名前:デフォルトの名無しさん mailto:sage [2016/01/13(水) 21:42:47.06 ID:69fUgg/c.net]
真逆というかなんというか
Derived : Base
Sub extends Super
って感じかな
だから余計にカオス

811 名前:デフォルトの名無しさん mailto:sage [2016/01/13(水) 22:10:05.57 ID:z0Cmtt7f.net]
>>803>>805 ありがとうございます
なんだか自信に満ちた書きっぷりだったので、普通にフムフムと読んでしまいました

ただ、仮想関数テーブルは速度の観点でよろしくないことがあるとは聞きます
そういう場合にメタプログラミングで置き換えられないか考える、という感じでしょうか?

812 名前:デフォルトの名無しさん mailto:sage [2016/01/13(水) 22:11:01.63 ID:d5qzONzB.net]
そのくらいは設計時点でどっち使うか決める
というか見当つけないとやばいような

813 名前:デフォルトの名無しさん mailto:sage [2016/01/13(水) 22:18:54.46 ID:LUXlk2QR.net]
>>809
真偽は別として、
仮想関数の数だけ関数ポインターを格納したvtableを
すべてのオブジェクトが持つためと書いてあるだろ文盲

814 名前:デフォルトの名無しさん mailto:sage [2016/01/13(水) 22:25:15.88 ID:BvZrk89z.net]
>>811
仮想関数である事がパフォーマンス上の問題になるケースって、相当少ないから気にしなくて良いよ。
本の1〜2回、ポインタによる間接参照を辿る程度。
そういうのは問題になってから、原因を調査した上で改良すれば良いだけ。
ほとんどの場合、全然関係ないところにボトルネックはあるから、気にしない気にしない。

815 名前:デフォルトの名無しさん mailto:sage [2016/01/13(水) 22:26:07.60 ID:QjeDGB/s.net]
>>813
少しでも知能があればインスタンスごとに持つ必要がないのは明白であり、
既に>>805で偽であると断じている

死ね、バカ

816 名前:デフォルトの名無しさん mailto:sage [2016/01/13(水) 22:33:19.79 ID:QjeDGB/s.net]
>>811
二重の間接参照のペナルティはおうけど、それが問題になる局面で仮想メンバ呼ばなけりゃ良いだけの話

件のブログは全く読む気しないが、テンプレートで性能アップなんてのは幻想だと思うよ

817 名前:デフォルトの名無しさん mailto:sage [2016/01/13(水) 22:45:41.98 ID:1MrQElfZ.net]
>>803
ダックタイピングになっても、動的型付けになるわけじゃないんだから型の安全性は変わらんよ
お前テンプレートメタプログラミングしたことないだろ



818 名前:デフォルトの名無しさん mailto:sage [2016/01/13(水) 22:50:22.90 ID:LPUWxnLk.net]
>>803
「書かれたコードを呼び出す」とはこれまた曖昧な

819 名前:デフォルトの名無しさん mailto:sage [2016/01/13(水) 22:53:59.49 ID:bHHjMdz0.net]
関係ないけど、参照もしくはポインタ渡しでなければポリモーフィズムが効かないことを、その
オブジェクトがヒープ上になければいけない、と勘違いしてるやつが以前いた。
放置した。

820 名前:デフォルトの名無しさん mailto:sage [2016/01/13(水) 23:32:42.49 ID:z0Cmtt7f.net]
>>814>>816 ありがとうございます
自分にはメタプログラミングは敷居が高く感じるので、それを聞いて安心しました
だいたい、経験浅いくせに凝ったことやろうとしてもろくなことにならんですよね

821 名前:デフォルトの名無しさん mailto:sage [2016/01/14(木) 02:21:42.64 ID:87BOzuvC.net]
頑張って最後まで読んでみた。
baseclass->virtual();が遅い、デカイと言いながら
パフォーマンス向上!!と謳ったテンプレートではbaseclass->virtual();が実現できないと記事の最後に書いてあって和ロタ

こういうアホにスペース貸し出すな。qiita

822 名前:デフォルトの名無しさん mailto:sage [2016/01/14(木) 03:35:19.02 ID:wi7HAYBx.net]
>>813
そもそもそれが真だとしてスタック食い潰すか?
仮想関数でポリモルしたいならポインタで扱う事になるし

823 名前:デフォルトの名無しさん mailto:sage [2016/01/14(木) 03:49:31.16 ID:87BOzuvC.net]
>>802
> Riyaaaa_a
> 北の方で高専生やってます。 C++でゲーム作ったり、テンプレートメタプログラミングをしたり。
ずいぶん幼稚な思考だと思ったら案の定。

824 名前:デフォルトの名無しさん mailto:sage [2016/01/14(木) 15:11:12.77 ID:3xoxSYC8.net]
D&E(和訳)読んでふむふむ、とか思ってたのに自分もvtblはインスタンスごとにあると思ってた
何故今までおかしいと思わなかったんだ自分・・・吊ってくるorz

825 名前:デフォルトの名無しさん mailto:sage [2016/01/14(木) 19:29:33.39 ID:Sio+1GmJ.net]
コンストラクターの実行中は基底クラスの構築が完了する度に仮想関数が変わっていくんだから
インスタンスごとにテーブルを持ってると考えてしまうことはそんなにおかしな発想じゃあない

826 名前:デフォルトの名無しさん mailto:sage [2016/01/14(木) 19:40:40.78 ID:xs/jHoAF.net]
>>825
便乗質問ですが、
テーブルの作成はクラスの初回のインスタンス化で行われ、
2個目以降のインスタンス化では何もしないということですか?

827 名前:デフォルトの名無しさん [2016/01/14(木) 19:47:12.71 ID:b/ISwWkG.net]
何もしないっていうより無駄がない
つまり共有できるところは共有するということでは(キリッ)



828 名前:デフォルトの名無しさん mailto:sage [2016/01/14(木) 20:12:29.09 ID:MzRmodn1.net]
>>826
いんや、コンパイル時に作成だよ。

829 名前:デフォルトの名無しさん mailto:sage [2016/01/14(木) 20:14:56.37 ID:hYstN1PO.net]
chronoでは日付は扱えないようですね。標準で日付を扱える最新ライブラリはどれですか?

830 名前:デフォルトの名無しさん mailto:sage [2016/01/14(木) 20:56:56.66 ID:wi7HAYBx.net]
>>825
基底クラスの仮想関数が呼び出せないとでも思い込んでなきゃ
そういう発想にはならないと思う

831 名前:デフォルトの名無しさん mailto:sage [2016/01/14(木) 21:39:02.45 ID:26y3BBuX.net]
お前らポリモなんとかとかバーチャルなんとかとか小難しいことばっか言ってるからそんなんなんだぞ

832 名前:デフォルトの名無しさん mailto:sage [2016/01/14(木) 21:50:18.45 ID:xs/jHoAF.net]
>>828
ありがとです。一人で変な勘違いしてました
単なるテーブルなんだからコンパイル時に出来上がって当然ですよね

833 名前:デフォルトの名無しさん mailto:sage [2016/01/14(木) 22:37:12.93 ID:P4SGT366.net]
>>826
初回かどうかは関係なくインスタンスごとにテーブルの初期化が行われるように振る舞う
ideone.com/TyPDhY

834 名前:デフォルトの名無しさん mailto:sage [2016/01/14(木) 23:32:48.35 ID:P4SGT366.net]
>>829
ctime

残念ながらC11のtimespecは使えないので
ミリ秒まで必要ならstd::chronoを組み合わせて使うしかない

835 名前:デフォルトの名無しさん mailto:sage [2016/01/15(金) 07:04:44.57 ID:WQIaqYsW.net]
シンゴー、シンゴー

836 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 22:58:32.40 ID:aEwXbHoX.net]
コンストラクト中に呼んじゃ行けないのは純粋仮想関数だけ

837 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 23:42:22.64 ID:l2MX1byn.net]
呼べないじゃん



838 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 00:07:48.02 ID:kCdvK5WI.net]
お前らポリモなんとかとかバーチャルなんとかとか小難しいことばっか言ってるからそんなんなんだぞ

839 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 00:20:19.57 ID:PN/aZH6j.net]
うるせーバカ
ピュア・バーチャルな関数があるとコンパイル通らないわ

840 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 00:36:29.76 ID:1IQlXDwz.net]
お前のマイナーなコンパイラーの挙動をエラそうに書かれても
それに間接的似呼ばれている場合はコンパイルエラーにすることが不可能だし

841 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 01:02:18.06 ID:PN/aZH6j.net]
はいはい。難癖つける奴が出てる来ると100%予測してました。

842 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 07:07:28.85 ID:1IQlXDwz.net]
難癖と言うが具体的なコンパイラーの名前を書いて見ろよ
どうせ妄想のコンパイラーだろ?

843 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 09:13:04.59 ID:20Rww3ua.net]
>>834
悩みたくないのでBoostのdate_time使います

844 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 09:55:38.04 ID:PN/aZH6j.net]
>>842
ideone.com/hLWFJG

845 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 10:47:02.69 ID:AVCLJmiz.net]
>>844
> prog.cpp: In constructor 'Kantoka::Kantoka()':
> prog.cpp:13:11: warning: pure virtual 'virtual void Nantoka::nantoka()' called from constructor

"warning" を「コンパイル通らない」と言うかどうか、という点の認識が違うんじゃないかな。
コンパイルは通ると言う人のほうが多いと思うよ。

純粋仮想関数がオーバーライドされてないクラスのインスタンス化できないことについては
たぶん誰も異論は無い。
でもそこはコンストラクタ中の純粋仮想関数呼び出しとは関係ない。

846 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 11:01:49.40 ID:PN/aZH6j.net]
>>845
そういうのを「難癖」と表現しました。
結局インスタンス化できないんだからピュア・バーチャルはコンストラクタから呼べないということには間違いは微塵もないんだが。
あとワーニングはエラー扱いしたほうがいいよ。俺はずっとそうしてる。そうしない奴とは一緒に仕事したくない。

847 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 11:06:03.21 ID:ib6exPCP.net]
>>846
ワーニングかエラーかって言葉の定義の問題だから、スタンスの問題にすり替えられても少々困る。



848 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 11:17:37.56 ID:AVCLJmiz.net]
>>846
もしかして、 Kantoka からさらに派生したクラスで nantoka() をオーバーライドすれば
派生クラスがインスタンス化できる(純粋仮想関数を呼び出す Kantoka のコンストラクタが呼ばれる)のに
気づいてないのかな?

849 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 11:33:19.11 ID:PN/aZH6j.net]
>>848
難癖の上塗り
その場合nantoka()はピュアバーチャルじゃないからw
つかそんなへんてこりんな設計するな

850 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 11:35:23.24 ID:FsCZAz0x.net]
ワーニングwwww

851 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 11:51:13.65 ID:AVCLJmiz.net]
>>849
いや、>848の場合でも>844-845と同じ警告が出るんだけどね。
コンパイラが間違ってるとでも言うの?

852 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 12:11:39.59 ID:5L4n9nSa.net]
基底クラスのコンストラクタの話かと思って読んでたら違った…

853 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 13:02:04.77 ID:HetPa4FB.net]
コンセプトってC++17で入るんですか?

854 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 13:34:41.80 ID:PN/aZH6j.net]
>>848
ideone.com/jJHfvI
試しにやってみたけどリンクエラーになるんですが?結局コンストラクタではピュアバーチャルは呼べない。
>>850
バーカ。お前は難癖野郎未満。

855 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 14:08:04.19 ID:uMGt1p7o.net]
>>854
ideone.com/jFx9uA

856 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 15:39:02.12 ID:PN/aZH6j.net]
あ!

857 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 18:16:12.49 ID:IEnSuMyH.net]
ここは怖いインターネットですね



858 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 00:43:10.26 ID:Lt3kNDHx.net]
>>854-856
定義しなけりゃエラー、定義すりゃ動くって話じゃなくて、どっちも未定義動作の結果だから気をつけてな。

859 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 01:28:27.98 ID:tEwpEdlT.net]
0 3 4 8 3 2 3 9 4 2 3 4 ...と続くファイルから一個ずらしの差分をとってどこかに出力する場合、

ifstram ifs {input_file};
ifstream_iterator<int> iite1 {ifs};
ifstream_iterator<int> eos;
ifstream_iterator<int> iite2 {ifs};
ofstream ofs {output_file}
ofstream_iterator<int> oite {ofs};
transform( ++iite1, eos, iite2
 , []( const int& post
   , const int& prev)
  {
    return post - prev;
  }
);

ってやったらダメなんですか? なんか結果がおかしいんですが

860 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 01:40:19.12 ID:tEwpEdlT.net]
あ、ifstream_iteratorじゃなくてistream_iteratorですね

861 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 01:59:26.13 ID:Lt3kNDHx.net]
>>859-860
2つの iite1, iite2 それぞれがインクリメントのたびに ifs >> x するから、
片方をインクリメントしたときに取り出された値はもう片方からは見えなくなる。

たぶん adjacent_difference() さんの出番。
https://www.google.co.jp/search?q=adjacent_difference

862 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 12:28:34.20 ID:I8HE+idC.net]
参照と左辺値の両方を受け取れる関数って作れますか?
ムーブやコピーを使わずに両者を一括で処理できる関数を作りたいのですが。

ideone.com/GAlNj2

863 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 12:40:31.71 ID:LBmPehyf.net]
>>862
結局何をやりたいのかは不明だけど、まずconstを勉強しなさい
ideone.com/OH9KJ8

864 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 12:56:09.58 ID:o3vXp8Uj.net]
>>861
ああこれだと思ったんですが、それの仕様で、最初の一項はそのまま残すってのが、何でこんな風にしちゃったのって思いますね。
要らないなら最初を飛ばせばいいじゃんって思うかもしれませんが、例えば別のクラスからdoubleなんかへ『特定の二項関数を適用した場合のみキャストが定義』されるってケースでは
adjacent_differnceでは最初の一項が単なる代入となってしまうので次元が違うんですよ
具体例を挙げるなら、time pointとtime pointの差でtime durationが定義されるって場合、欲しいのはtime durationのリストなのに、最初の一項を代入が発生すると、それはtime pointだから型が合わないわけです
じゃあ特別に初項のtime pointだけ無理矢理time durationに変換するコードを定義するってなると邪道というかコードが汚れるというか、そもそもそんな定義に正当性はあるのか、とか余計なことを色々考えなければならなくなるので、とにかくなんでこんな仕様にしたのか残念でなりません
点毎の微分係数のリストが欲しいのに初項だけなぜか原始関数が入ってるみたいな感じです

865 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 13:29:59.33 ID:LBmPehyf.net]
それなら最初を捨てればいいだけじゃないの?
初期値が0扱いされてるだけだから正当性もクソもないよ
残念なのは。。。

866 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 14:13:46.61 ID:u5xt7rMo.net]
>>865
出力されるものは、
初項のみ入力型、それ以降は入力型どうしの差の型です。
両者が一致しないならコンパイルエラーになるでしょう?
取り敢えず生成して最初だけ捨てるとか以前にコンパイルでストップするでしょ

867 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 14:31:29.68 ID:I8HE+idC.net]
>訂正
>参照と左辺値の両方を受け取れる関数って作れますか?
>参照と右辺値の両方を受け取れる関数って作れますか?

>>863
まさにこれがやりたかったのです。ありがとうございます。
h関数やmoveの用途に誤解を招くミスがあったので元ソースを修正しておきました。

ideone.com/GAlNj2



868 名前:864 mailto:sage [2016/01/19(火) 16:48:12.65 ID:u5xt7rMo.net]
私と同じ悩みを持っている人により質問がされていて、あれこれ議論されているサイトを見つけました。根本的解決法はないようです。(自分で初項を代入しない版adjacent_defferenceを作るしかないようで、そうするとSTLの最適化メカニズムから外れる可能性があると)
stackoverflow.com/questions/8267806/implicit-transformation-while-calling-stdadjacent-difference

なので、ワークアラウンドとして出力型から入力型への変換関数を書き、無条件でNaNを返すようにしました。
これなら今後意図しないところでうっかり勝手なキャストがされてしまったとしても見つかり易いでしょうから。(本当はそんなキャストをした値など持ち回して、その内比較などした時点でエラーで停まって欲しいんですが)
いずれにせよバグの卵を仕込んだようで気持ち悪いです(感想)

869 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 17:03:44.18 ID:QRF0ukOE.net]
俺ならublasつかってpop_frontしたものからpop_backしたものを引く
正確にはpopはできないからrangeを使うことになるが

870 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 20:30:59.08 ID:I2igp/Hj.net]
そもiostreamの時点で遅いのだから
最適化とか気にしても仕方ない気がするが

871 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 21:30:54.15 ID:LBmPehyf.net]
iostreamのイテレーションでは最適化なんて出来ないだっろ

872 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 22:45:17.98 ID:hRgr/fBZ.net]
int a[][2] = { {1,2}, {3,4} };
の中身を
vector<array<double, 2>> v;
に渡したいんですが、forで回すのではなく1発で渡す方法ってないですか?

873 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 23:07:55.63 ID:xZbak6Ni.net]
intをdoubleに、はないんじゃないかなあ

874 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 23:22:51.00 ID:hRgr/fBZ.net]
>>872
しまった、タイポしましたorz

875 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 00:30:15.92 ID:NAm3D3i5.net]
>>872
https://ideone.com/hWx03e

876 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 00:33:42.12 ID:NAm3D3i5.net]
>>864
格好つけないでベタなコード書け
その方が速い

877 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 00:33:42.79 ID:NAm3D3i5.net]
>>864
格好つけないでベタなコード書け
その方が速い



878 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 00:34:38.51 ID:NAm3D3i5.net]
ミスった連投スマヌ

879 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 01:15:07.18 ID:CgeLzYDg.net]
>>875
おお、ありがとうございます
しかしこれは・・・実際使うわけにはいきませんね

880 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 05:48:14.00 ID:t0Y9mTVs.net]
>>877
格好つけてないで ベタなコードだけで
毎日何かを頑張っていりゃ

書いていくんだ それでいいんだ
型に飲み込まれ エラーではじかれて
それでもその手を離さないで
バグがあるんだ みんなあるんだ
解はどこにある 君は休みを取れない

881 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 06:41:42.51 ID:HskUHurd.net]
>>880
なんかメドレーになりそうで嫌だ

882 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 08:39:28.48 ID:NAm3D3i5.net]
ウダウダやってる時間があったら
自分で初期値ありのadjacent_differnceでも作れ
ただ自己満足したいだけなら続けてどうぞ

883 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 21:54:30.21 ID:gq7zZGSJ.net]
CPUって普通の整数に比べて、2のn乗で割るの得意っすか?

884 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 21:54:59.79 ID:Ci1f4cma.net]
整数の種類による

885 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 22:01:53.08 ID:7pHwgTRU.net]
>>883
まぁ一般的には得意じゃね?

886 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 22:08:23.19 ID:e8aI9wBz.net]
>>883
シフトより普通の割り算の方が速いCPUやDSPを見たことが無いから、
まあ普通は2のn乗で割るのは得意と言えるでしょう

>>884
整数の種類とは?

887 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 22:13:49.51 ID:1TVX6yTA.net]
>>886
2の乗数か否か



888 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 22:15:13.15 ID:LUAhyj75.net]
書くのも簡単だよね
ビットシフトするだけ

889 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 22:17:22.40 ID:e8aI9wBz.net]
>>887
まあ確かに、
「2の乗数で割るのに比べて2のn乗で割るのが得意」
とは言えないわな

屁理屈

890 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 22:17:35.51 ID:Ci1f4cma.net]
>>887
日本語読解能力の無い低能は去れ

891 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 22:19:24.38 ID:e8aI9wBz.net]
シフトより乗算の方が速いCPUはあるから、
割る数が固定であれば割り算の代わりに乗算を行うことで特に得意とは言えないCPUも存在はする

892 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 22:24:51.80 ID:KVzlV0R1.net]
0初期化はxorだよね!

893 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 22:27:40.37 ID:e8aI9wBz.net]
subでも

894 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 22:28:44.12 ID:Ci1f4cma.net]
割り算の話に反応して無条件にビットシフトなどと言い出す低能は
一週間穴にこもるべき

895 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 22:28:44.83 ID:I6UYKzry.net]
除数がコンパイル時定数で2の階乗ならシフト使うこともあるだろうけど
そうじゃなきゃ割り算命令(または逆数乗算)使うから

896 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 22:38:02.27 ID:e8aI9wBz.net]
>>894 >>895
コーディング時に2^nだってわかっていれば
プログラマーがシフトに変更できるから普通は速い

明らかな2^nによる除算をシフトに置き換えられるコンパイラが存在するかどうかは知らん
Visual Studio 2015 は無理そう

897 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 22:42:44.15 ID:e8aI9wBz.net]
>>894 >>895
それから最近の高性能CPUだと、割る数が2^nの場合の除算命令は処理が早く終わるのが普通
スループットが向上しレイテンシも短くなる

instlatx64.atw.hu/



898 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 22:45:09.29 ID:e8aI9wBz.net]
てことで、
低能は >>894

899 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 22:54:20.69 ID:e8aI9wBz.net]
同じ割る数による除算がひたすら繰り返されるような処理だと、
2^nかどうか事前に判別して違うコードを走らせるってのも可能だね

>>895
2の階乗って2だけど、2のべき乗の間違いだよね
あと、変なところに誤爆したでしょ?

900 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 22:56:21.78 ID:I6UYKzry.net]
>>897
>割る数が2^nの場合の除算命令は処理が早く終わるのが普通
例えばそのリストのどれを見ればそれが分かりますか?
ちょっと見たけど分からなかった

901 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 22:58:02.65 ID:I6UYKzry.net]
>>899
そう。べき乗の間違いでした

902 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 23:35:22.15 ID:I6UYKzry.net]
Skylakeで試してみたけど除数が2^nかそうじゃないかでは処理時間に有意な差は見られないなあ

903 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 23:49:09.97 ID:Ci1f4cma.net]
>>895
20年前に見たボーランドbccですら
2のべき乗以外の割り算でもシフトが使われるケースは有るのだが
嘘をつく前に生成されたアセンブリコードを確認したらどうだ?

904 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 00:16:53.77 ID:RQbtFNgK.net]
はいはい20年前
割り算命令がそもそも無いとかあってもすごく遅いとかあったからね

905 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 00:21:15.60 ID:0HmD462y.net]
Visual Studio 2015のx64でも
unsigned intの9や10での割り算をシフトを使ったコードに置き換えるというのに

906 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 00:34:21.36 ID:RQbtFNgK.net]
>>905
ホントか?試してみたけどdiv使ってるんだが

907 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 02:50:22.80 ID:RQbtFNgK.net]
どうした?0HmD462y=Ci1f4cma
どういうコードをどういうオプションでVS2015のx64でコンパイルしたら、unsigned intの9や10での割り算をシフトを使ったコードに置き換える
って言うんだ?答えられなけりゃ20年前のbccの件も虚言と見なす
>嘘をつく前に生成されたアセンブリコードを確認したらどうだ?
とか言ったんだからそれくらいは当然だよな?



908 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 07:11:22.26 ID:0HmD462y.net]
>>906
Releaseにしないとdivになる

909 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 07:12:57.80 ID:0HmD462y.net]
ていうか普通のintですら単純な左右シフトじゃなくて複雑な計算になるだろ
int_val / 8
の結果ぐらい確認してないのか

910 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 08:24:59.65 ID:TVvRrwr+.net]
むしろ定数の割り算divを使うことがあるのかと
でhttps://goo.gl/T8WrIL

911 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 09:20:33.26 ID:y+dNRHZw.net]
基本的に長文連投する奴は間違いが多い
まともに確認すらせずに返答するしな

912 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 10:50:16.84 ID:RQbtFNgK.net]
話にならない連中だな
>>908
Releaseでもdivだね
>>909
unsigned intの9や10での割り算って言ってるだろアホ
>>910
定数なんざ問題にしてねーよ
定数ならシフト使うこともあるって俺は>>895で書いた

913 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 11:00:46.87 ID:TVvRrwr+.net]
>>912
それは変数が9か10かを確かめるコードが出るって言ってるのか?
さすがにそんなコードは出ないだろ
unsignedの定数での割り算ならさらに簡単になるだろうしな

914 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 11:05:36.66 ID:RQbtFNgK.net]
あっそうか定数で2^nじゃない場合について言ってたのか
これはとんだ勘違いだった謝る

915 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 11:23:15.37 ID:TVvRrwr+.net]
これはひどい

916 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 13:00:57.22 ID:X8Ey5hke.net]
プログラマには自説を曲げてはならないという掟でもあるの?

917 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 14:02:30.61 ID:y+dNRHZw.net]
大マヌケな発言しちゃって恥かきたくないんだろ
シフト演算とdivじゃ10倍以上の差があるのにな



918 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 14:15:16.66 ID:Ln13efwQ.net]
引数でもらったイテレータから、そのコンテナのメンバ関数を呼び出す方法はありますか?

919 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 14:55:52.13 ID:Ln13efwQ.net]
list か forward_list を受け取ってどっちでも共通に動作するコードって簡単に書けるんでしょうか?
片方はemplace、もう一方は emplace_after だし、挿入位置違ってきますよね。

抽象的に、リンクで繋ぐ系のコンテナを貰って、条件に合うところに幾つか要素を挿入します(listでもforward_listでも結果は同じになります)って関数を自然に書けるものなのでしょうか? それともメタプログラミング必須ですか?

920 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 15:13:19.94 ID:zscSzf1M.net]
今確認してみたけど定数での割算は全部かけ算命令とシフト命令に変換されてるね

921 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 15:21:02.57 ID:F7LwJmHZ.net]
>>919
STL(standard template library)の横断なんだからメタプロ必須
traits一個作るだけ

922 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 15:32:17.65 ID:+1Wa9Hdc.net]
>>916
ほら、傲慢は美徳って言うし…(意味が違います

923 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 16:05:24.51 ID:RQbtFNgK.net]
ぐちゃぐちゃしつこいね
定数の2^n以外の場合については俺が間違いだったことを認めるから
昨日のe8aI9wBzは俺の>>900の質問に答えてくれないかな

924 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 16:16:04.74 ID:RQbtFNgK.net]
>>902に書いた通り
俺I6UYKzry=RQbtFNgKが試してみた限り
Skylakeのdivでは2^nかどうかでは差は見られないんだが
差が出る「最近の高性能CPU」って例えば?是非教えてほしいな

925 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 16:40:30.24 ID:zscSzf1M.net]
2^nかどうかでは変わらないけど割る数によって速さは違った
結果が小さくなる方が速く終わるっぽい

926 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 17:15:24.08 ID:RQbtFNgK.net]
>>925
ちなみにCPUは何ですか?
こっちでは(Skylake+GCC4.8.4)では結果が小さくなるようにしてもdiv系命令使ってる限り差は出ないけど

927 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 17:40:25.35 ID:zscSzf1M.net]
Intel(R) Core(TM)2 Duo CPU P8700

1.c
unsigned int a (unsigned int a)
{
return 1111111 / a;
}

2.c
unsigned int a(unsigned int);
int main ()
{
int i;

for (i = 0; i < 100000000; i++)
a (10000000);
return 0;
}
このコードだとa(1)とか10000000とかが一番速く終わって2が一番遅くなる



928 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 17:44:54.10 ID:zscSzf1M.net]
Intel(R) Atom(TM) CPU N280 @ 1.66GHz
これだと全部同じだった

929 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 18:02:27.03 ID:y+dNRHZw.net]
divを最適化で置き換え直す必要性も16bit以上のdivの速度が一定でない事も
intelの文書に書いてあるよ
知らないにしても他の人みたいに動かして確認すればいいのに何なんだコイツは

930 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 18:05:51.20 ID:Ln13efwQ.net]
forward_list、思ったより使えない
back()やsize()すら無いって・・・

931 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 18:11:37.46 ID:0O01DQba.net]
テンプレートメタプログラミングのテストってどうやってますか?

932 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 18:43:50.40 ID:E9KCKHCx.net]
>>916
そのような自説を持ってるのはQだけです

だが最後に自分の誤りを認識した時点で素直に謝れるメンタル だ け は凄いと思うわ

933 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/21(木) 18:55:00.91 ID:ypubXGFS.net]
>>931
static_assert使え

934 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 19:27:35.76 ID:Ln13efwQ.net]
>>921
メタプロはまだぼくには早いなぁ

935 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 19:41:52.93 ID:hKcolSLC.net]
weak_ptrってlock()して有効かどうかをif文とかで調べてから使うのが正しい使い方ですよね。
つい面倒なので wp.lock()->hoge() と横着しちゃうんですが、いつか痛い目みそうな予感がします。
上手い具合に何とかする方法ないでしょうか?

936 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/21(木) 19:45:22.06 ID:ypubXGFS.net]
if (auto ptr = a.lock())
{
...
}

937 名前:デフォルトの名無しさん mailto:age [2016/01/21(木) 20:09:41.71 ID:ypubXGFS.net]
あげ



938 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 20:34:19.36 ID:LqtdmCnC.net]
>>930
size( ) はまだしも back( ) のためのポインタケチるためのものだし、当たり前だろ

939 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 21:59:56.82 ID:Ln13efwQ.net]
ミニマlist

940 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 23:10:02.14 ID:H8Alaf9u.net]
>>936
>if (auto ptr = a.lock())

copy elisionが期待できるとしても無駄なコピー/ムーブが
発生しうる書き方はどうも落ち着かない。
auto &&と書きたくなってくる。

941 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 23:35:41.37 ID:ySY5R7YZ.net]
えっ

942 名前:デフォルトの名無しさん [2016/01/22(金) 06:57:40.42 ID:xsHc+uK/.net]
weakの生存チェックが必要ならsharedにしたら

943 名前:デフォルトの名無しさん mailto:sage [2016/01/22(金) 07:49:31.44 ID:KaWUxaNQ.net]
>>942
そんなどこぞの女王みたいな事言ってたら、デストラクタが暴動を起こすぞヽ(^。^)ノ

944 名前:デフォルトの名無しさん mailto:sage [2016/01/22(金) 07:54:12.64 ID:nKA5Ublh.net]
↑馬鹿

945 名前:935 mailto:sage [2016/01/22(金) 10:14:57.31 ID:5LnUGiwJ.net]
>>936
今までそうしてきました。
elseの中でどのクラスのどの関数なのかエラーメッセージを出したりしてたんですが、
面倒臭くなって質問した次第です。

946 名前:935 mailto:sage [2016/01/22(金) 10:17:26.65 ID:5LnUGiwJ.net]
>>942
クラスで互いに参照を持たせたいんでweak_ptrも必要なんです

947 名前:デフォルトの名無しさん mailto:sage [2016/01/22(金) 18:21:29.83 ID:iI4n/Grb.net]
話を聞いている限り子にsharedで親にweakもたせる案件のような気が



948 名前:935 mailto:sage [2016/01/22(金) 20:25:00.39 ID:5LnUGiwJ.net]
親と子というのはそれぞれ管理する側と管理される側のことですか?
相互参照させる場合、前者は後者への強参照を、後者は前者への弱参照を
メンバとして持つのが普通だと思ってたのですが、もしかして逆なんですか?

949 名前:デフォルトの名無しさん mailto:sage [2016/01/22(金) 21:19:55.44 ID:gy9aPLY5.net]
>>948
それだと親が生きてる限り子への参照が無くならない。
明示的に子の削除をしなければならなくなる。
>>947なら子への参照が無くなればその子は消える。
全ての子が消えれば親も自動的に消える。

950 名前:デフォルトの名無しさん mailto:sage [2016/01/22(金) 21:59:23.10 ID:9qqofano.net]
子が生きている間は親も生きていると考えるのが普通だから
子が親のweak_ptrを持つのはあまり旨みがないというか、生ポインタでも良いんじゃね?ってなる

951 名前:デフォルトの名無しさん mailto:sage [2016/01/22(金) 22:06:48.94 ID:9qqofano.net]
weak_ptrからshared_ptrを生成できるので
子が親のshared_ptrを他のオブジェクトに渡すとかという場面で
生ポインタじゃなく、子が親のweak_ptrを持つのも一応意味があるっちゃあるが
逆の方が何かと都合がよいことが多いのだ

なにせ子が生きている間は親も生きているわけだろうから
親をweak_ptrで持っていてもnull_ptrが返ってくることは無いので

952 名前:デフォルトの名無しさん mailto:sage [2016/01/22(金) 22:10:32.65 ID:63yfy9By.net]
cpp-lang.sevendays-study.com/problemex4.html
このサイトの問題4.4で、何も入力せずenterを押すと入力を終えるの部分をどうやれば作るか教えて下さい
while (1) {
cin >> a;
if (a.length()==0) {
break;
}
このように入力した文字をaにいれてaの長さが0ならループを抜けるようにしたのですがうまくいきません

953 名前:デフォルトの名無しさん mailto:sage [2016/01/22(金) 22:17:40.62 ID:fbzf1CVx.net]
改行文字にすりゃええやん

954 名前:デフォルトの名無しさん mailto:sage [2016/01/22(金) 22:26:02.40 ID:63yfy9By.net]
>>953
改行文字とはendlのことですか?
判定する所でa==endl としてもエラーが出ます

955 名前:デフォルトの名無しさん mailto:sage [2016/01/22(金) 22:33:49.62 ID:iI4n/Grb.net]
>>948
依存性が逆に見えたから言ってみただけ
Observerパターンなら親がweak持てばいいけど違うなら逆じゃないよん
循環参照は機能分割が不十分な事による設計ミスのが多いよ

956 名前:デフォルトの名無しさん mailto:sage [2016/01/22(金) 22:42:11.03 ID:BMlJwOmj.net]
親子の関係にshared_ptr,weak_ptrを
持ち出すあたりが既に設計の誤りの可能性大。
というかshared_ptr使ったコードは高確率で糞コード。

957 名前:デフォルトの名無しさん mailto:sage [2016/01/22(金) 22:45:56.01 ID:iI4n/Grb.net]
>>952 >>954
string str;
while( getline(cin,str) && str.length() ){
 処理
}



958 名前:デフォルトの名無しさん mailto:sage [2016/01/22(金) 22:58:26.71 ID:63yfy9By.net]
>>957
すみません、よくわかりません
getline関数はこのサイトでまだ扱ってないので使い方がわからないのと、どうしてそのコードで入力が空白かどうか判定できるのでしょうか?

959 名前:デフォルトの名無しさん mailto:sage [2016/01/22(金) 23:06:21.99 ID:iI4n/Grb.net]
>>958
getline(cin,str) // cinの入力を一行strに取り込む(改行文字なし)、失敗で偽
str.length() // 1文字以上なら真、0文字なら偽

このスレは怖い人がいっぱいいるから質問するなら下のにしなさい

【初心者歓迎】C/C++室 Ver.97【環境依存OK】
peace.2ch.net/test/read.cgi/tech/1439849418/l50

960 名前:デフォルトの名無しさん mailto:sage [2016/01/22(金) 23:12:12.68 ID:PuO012nm.net]
>このスレは怖い人がいっぱいいるから
一番攻撃的なのはお前なんだが

961 名前:デフォルトの名無しさん mailto:sage [2016/01/22(金) 23:28:13.82 ID:63yfy9By.net]
>>959
理解できました。
ありがとうございます

962 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 00:09:49.18 ID:oOoz6Peh.net]
>>960
ずいぶん攻撃的だねえ・・・

963 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 00:10:09.38 ID:ACxJywqs.net]
インテルのやつはビットシフトよりテーブルにした方が速い、
希ガス

964 名前:935 mailto:sage [2016/01/23(土) 00:54:21.22 ID:M1o1eQTV.net]
>>956を見てハッとしました。たぶん、いや確実に今書いてるコードは糞なんだと思います。
この糞コードを書いたときの流れはこんな感じでした。

クラスもインスタンスもたくさんあってメモリリーク怖いから、とりあえずインスタンス化には
スマートポインタshared_ptr使っとこう。
 ↓
そういえばクラス関係は 国→県→市→番地 みたいな階層構造になってるんだった。
(左側クラスは右側クラスを複数含む)
 ↓
じゃあメンバでvector<shared_ptr<class>を持たせよう。
 ↓
逆方向 国←県←市←番地 にものアクセス欲しいな。
 ↓
shared_ptrメンバじゃ循環参照になってしまうから、weak_ptrメンバにしとくか。
 ↓
weak_ptrいちいちlock()すんのめんどくせー。
 ↓
>>935に至る。

まぁ事実まともな設計とか全くしたことない素人なんですが、改めて書き下してみると酷いな・・・

965 名前:935 mailto:sage [2016/01/23(土) 00:59:37.64 ID:M1o1eQTV.net]
今一度足りない頭でクラスの所有関係と各クラスが持つべきメンバについて
考えてみたのですが、こんな感じで合ってるでしょうか?

親クラス(管理側)をP、子クラス(非管理側)をCとして、
@PはCをメンバとして所有する。複数所有したいならvector<C>とする。
ACはPへアクセスする必要があるなら、Pへの参照メンバを持たせる。
BPのvector<C>メンバの並び順をCの内部状態によって変えたいなら、vectorではなくlistにする。

Bが正しいか気になります。

966 名前:935 mailto:sage [2016/01/23(土) 01:03:44.65 ID:M1o1eQTV.net]
ここまで考えて思ったのですが、クラスメンバにスマートポインタがあるのは所有関係を
きちんと考えていない、つまり設計が不十分な可能性を疑うべき、ということでしょうか。
>>955さんの
>循環参照は機能分割が不十分な事による設計ミスのが多いよ
や、>>956さんの
>というかshared_ptr使ったコードは高確率で糞コード。
はそういう意味だったんですかね。

そうするとスマートポインタが主として登場すべき場面とは、関数内でテンポラリ的にインスタンスを作り
それを他の関数に渡す等のごにょごにょした作業をしたいときなんでしょうかね?

なんかレスが多くなってすみませんが、指導していただけると助かります。

967 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 02:07:22.97 ID:ACxJywqs.net]
このスレは荒れる…!

現実のアーキテクチャで走るプログラムは
(1) アルゴリズムと、(2)データ構造と、(3)スレッド間通信
からなる

このうち、(1)はの範囲は処理の順序が命なのであって、
設計完了=処理の順序が明らか、ということなので設計完了したならばスマポの出番など無い

一方(3)は、スレッドAからスレッドBにデータを渡しっぱなしにできたら
同期化が簡単になって無駄な実行時コストも抑えられるからスマポの出番と言える
ていうかimmutableなオブジェクトを他のスレッドで破棄させるケースぐらいしか
スマポの使用は正当化されない

残りの(2)は、(1)に属することもあれば(2)に属することもある
(スマポ自体のデータ構造とか、カーネル内のデータ構造とかは(2)の範疇
スマポ自体の是非とは関係ないので省略



968 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 02:09:35.49 ID:oOoz6Peh.net]
>>964-965
循環参照のミスというのは同層のことで、親子のただの相互参照は一般的だよ
Bは速度がいらないならvector、他はそんなに問題あるとは思えない
weak_ptrのエラー分岐が億劫ならマクロにしたらというぐらい

人に教える程の立場でもないのでこれぐらいにしておきます

969 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 02:12:14.42 ID:ACxJywqs.net]
訂正;
誤:残りの(2)は、(1)に属することもあれば(2)に属することもある
  (スマポ自体のデータ構造とか、カーネル内のデータ構造とかは(2)の範疇
正:残りの(2)は、(1)に属することもあれば(3)に属することもある
  (スマポ自体のデータ構造とか、カーネル内のデータ構造とかは(3)の範疇

あと補足で、std::unique_ptr<T>は(1)の範疇でも実装上のテクニックとして多用することもあるが
あんまり賢くないのでここではスマポに含めないものとする、

970 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 06:32:51.71 ID:9P3xRRKy.net]
>>964
shared_ptrを使うのはその名の通り特定のオブジェクトによる所有や集約の関係ではない場合、生存期間の管理が疎結合の場合に使う
国の知らない間に一部の市が消えることがあるか?
市より先に国が消えることがあるか?
国→県→市→番地 なら多くの場合は「国が複数の県を所有または県は国に集約」のパターンになることが多い

971 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 08:02:49.16 ID:+qmFdC28.net]
スマポって作ったオブジェクトをいずれ殺さなきゃならないときに使うイメージだわ
殺す必要がない(vectorのメンバとして作られるからあとで自動で死ぬとか)なら子が持つ親のポインタはスマポじゃなくて生ポインタでいいんじゃない?
ポインタじゃなくて参照型のメンバ変数持ってルートノードは自分への参照でもいいけど、==演算子のオーバーロードは面倒くさそうだし結局親ノードの判定にポインタの比較しそうな気がするわ

972 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 10:58:19.45 ID:xWQTZZB9.net]
抜き身の刀だらけの相談室

973 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 11:41:45.07 ID:2xi+SZqr.net]
『一つのパーティションにつき一つの要素のみ』って英語のコメントでどう書けばいいですか?
// Only one element by one partition.
前置詞わかんないです><

974 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 11:56:10.39 ID:BpJ08GBs.net]
// the each partitions only has one element.
自信ない

975 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 12:05:54.61 ID:bbKQS1co.net]
// one element == one partition
// A partition has only one element
// Only one element for(in) each partition

// At most one element can be appeared in each partition
// A partition has at most one element
// Multiple elements are prohibited in a partition

// 一つのパーティションに一つの要素だ。日本語も読めない馬鹿はクソして寝ろ

976 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 12:32:51.86 ID:Tt4ej2Ee.net]
パーティションてのは区画じゃなくその仕切りのことを言うわけだが、間違いだよな?
Only one element in one section

977 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 12:40:10.50 ID:9P3xRRKy.net]
>パーティションてのは区画じゃなくその仕切りのことを言うわけだが
いえそれはパーティションでなくpartitionです
用語と一般名詞の区別ぐらいはした方がいい



978 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 12:42:14.32 ID:Tt4ej2Ee.net]
>>977
働くならパーティションのある会社の方がいいぞ?

979 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 12:44:29.00 ID:VPAh/uPo.net]
Only one element is for each patition.

980 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 12:44:52.04 ID:9P3xRRKy.net]
なるほど
文脈を読まずに単語レベルで反応してしまったんだろうな

981 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 12:48:38.88 ID:Tt4ej2Ee.net]
一般名詞とか言っててそれか
頭大丈夫か?

982 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 12:48:39.35 ID:ZeOvtoAd.net]
スレ違いなのでよそでやれ。

983 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 13:42:00.33 ID:7KDEJB/l.net]
C++こそ至高の頂

984 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 13:43:05.61 ID:7KDEJB/l.net]
バカの壁を突破できんと使いこなせんのよ

985 名前:964 mailto:sage [2016/01/23(土) 14:42:34.05 ID:M1o1eQTV.net]
>>967>>968>>970
ありがとうございます。さっそく糞コードを修正します。
いやはやとんでもない勘違いをしていた・・・

986 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 16:52:12.93 ID:2O2OeDHJ.net]
std::partition_pointやで!!

987 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 19:41:20.94 ID:2xi+SZqr.net]
なるほど、partitioned rangeが正しい英語ですね
Only one element can belong to each partitioned range.
こうかな



988 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 19:50:19.75 ID:MQWxukSB.net]
one element is in the only one patitioned range.

989 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 20:00:22.29 ID:xc9KTHaP.net]
さあw patitioned rangeなんて表現聞いたこと無いんだが

990 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 20:07:07.21 ID:xc9KTHaP.net]
patitionってもともとrange的な意味を含んでるから
仕様上でpatitionの意味がはっきりしてればわざわざrangeつけるのは普通の表現としてはクドい
『一つのパーティションにつき一つの要素のみ』なら
each partition can have only one element.
とかでいいんじゃないか?

991 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 20:24:11.82 ID:xc9KTHaP.net]
std::partition_pointとかの説明で出てくるpatitioned rangeって
「patitioned(部分集合化)されたrange」のことだからな
>>973のいうパーティーションはそれぞれの部分集合のことだろ

992 名前:973 mailto:sage [2016/01/23(土) 20:30:47.80 ID:2xi+SZqr.net]
>>990
ありがとうございました。この問題は対話を通じ、双方が同意できる恒久的な解決がなされました。

993 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 21:46:41.75 ID:2O2OeDHJ.net]
恒久的な解決といっても何がどう恒久なんだかようわからん国もあるけどな。

994 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 21:52:02.81 ID:xc9KTHaP.net]
1つのパーティションに0個の要素っていうのがあり得るのかどうかでも表現は変わってくるわな

995 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 23:04:39.12 ID:HdItgJjm.net]
ジスレ立てますか

996 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 23:16:08.61 ID:HdItgJjm.net]
C++相談室 part122
peace.2ch.net/test/read.cgi/tech/1453557975/

997 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 00:03:08.58 ID:XILi4z/P.net]
>>993
おっとQの悪口はそこまでだ



998 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 00:18:02.59 ID:ZhXA5MpP.net]
plam

999 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 01:39:42.78 ID:+srqsch5.net]
999

1000 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 04:52:41.80 ID:vt7CmcBy.net]
1000 イタダキ!

1001 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<267KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef