19/05/12 11:19:05.13 k8bUqGvO.net
>>539
>int *p = &a[5];
これは多分だめで、ポインタ値としての存在なら許される
int *p = a+5;
542:デフォルトの名無しさん
19/05/12 11:53:09.39 nuZIUjqi.net
ややこしいからoperator <<を定義しようw
543:デフォルトの名無しさん
19/05/12 15:25:00.10 8/5ODvoI.net
VC++だと
std::vector<T> a; &a[a.size()]はoperator[]のassertionに引っかかるね
544:デフォルトの名無しさん
19/05/12 22:25:11.86 yr8YjJOU.net
std::transformって並列処理されてますか?
545:デフォルトの名無しさん
19/05/12 23:20:05.82 jFoQmc6B.net
c++17のparallel版使えば並列実行されるかもしれない
546:デフォルトの名無しさん
19/05/13 01:24:36.27 RKe/NLvg.net
visual studioでC++17にしたけどいまいち並列版の使い方が分からなかった
普通にfor回すのと、OpenMP使ってfor並列化するのと、transform(非並列)使うの比較したら
OpenMP>普通にfor≧transform だった
547:デフォルトの名無しさん
19/05/13 20:49:38.54 YS57w6Jq.net
おとなしくpthead使えよ。
548:デフォルトの名無しさん
19/05/13 20:56:12.40 WUu3P+2G.net
非並列使ったならそりゃそうなるだろ
549:デフォルトの名無しさん
19/05/16 02:02:33.17 1v50lv4I.net
struct AとAを継承したstruct Bがあって
Aの内容をBの共通部分にコピーする方法ってないですか?
A a;
B b = a;
みたいにしたいんですけど親を派生先にキャストはできないので困ってます
550:デフォルトの名無しさん
19/05/16 02:06:57.91 mZDDPYlt.net
struct B : public A
{
B* operator=(const A& a){ this->hoge = a.hoge;}
};
これ初期時にも使えるんかな
551:デフォルトの名無しさん
19/05/16 02:25:05.62 1v50lv4I.net
コピーコンストラクタが実装できたとしてメンバ変数は1個ずつコピーするしかないですかね
552:デフォルトの名無しさん
19/05/16 02:28:08.55 mZDDPYlt.net
スライシングをさせるとか?
安全に?スライシング起こす方法ってあったっけな?
なんか危ういからやろうともしなかったが
553:デフォルトの名無しさん
19/05/16 06:25:17.13 /dAesd8e.net
cloneメソッド用意するとか
554:デフォルトの名無しさん
19/05/16 06:31:42.80 ebJ8HHSX.net
>>549
初期化時は普通にコンストラクタ初期化リストで A(a) って書けるでしょ。残りのメンバをどうするのか知らんけど。
代入なら static_cast<A&>(b) = a か b.A::operator=(a) で済みそう。
555:デフォルトの名無しさん
19/05/16 06:33:37.60 C3C4SHXA.net
普通にコンストラクタかオペレーター作ればいいんじゃね
B::B(const &A)
B::operator =(const &A)
A::operator B()
雑なキャストでよければdynamic_cast<A>でおk
556:デフォルトの名無しさん
19/05/16 06:38:27.18 C3C4SHXA.net
↑dynamic_cast<B>の間違い
B b = dynamic_cast<B>(a);
557:デフォルトの名無しさん
19/05/16 11:40:14.21 74mGoL8y.net
>>551
sturctでまとめればデフォルトコピーコンストラクタが使えるけどね。
あとはintとかPODオブジェクトだけだったらmemcpyしちゃうとかも、俺はたまにやるなw
558:デフォルトの名無しさん
19/05/16 17:20:00.24 PgzYowjZ.net
549です
解決しましたありがとうございます
以下のように書いたら思っていたことが出来ました
(派生先のコンストラクタで親のデフォルトコピーコンストラクタ呼べるの知りませんでした)
代入は現状使う予定がないので大丈夫です
B::B(const &A a) : A(a) {}
559:デフォルトの名無しさん
19/05/16 18:17:29.46 mr2QiBZl.net
その内容だったら=defaultでいいよ
560:デフォルトの名無しさん
19/05/16 21:32:58.41 /aEDSlbd.net
引数付きコンストラクタって、=default使えるの?
561:デフォルトの名無しさん
19/05/16 22:09:55.18 jJO9F8Je.net
使えないよね
うかうかっと読み過ごしてたわw