- 1 名前:デフォルトの名無しさん mailto:sage [2021/08/09(月) 10:57:31.60 ID:JaaB5Egp.net]
- 前スレ
C++相談室 part156 https://mevius.5ch.net/test/read.cgi/tech/1621389313/
- 30 名前:デフォルトの名無しさん mailto:sage [2021/08/09(月) 20:07:17.09 ID:XVy1LhuX.net]
- >>23
普通にコンポジションで実現できる条件だよな メルプラネットの奴らも同じこと言いそう
- 31 名前:デフォルトの名無しさん mailto:sage [2021/08/10(火) 00:55:38.92 ID:rk6SLsdN.net]
- 親オブジェクトへのポインタをうっかり共有ポインタにすると循環参照の原因になる(小並感)
- 32 名前:デフォルトの名無しさん mailto:sage [2021/08/10(火) 03:53:30.08 ID:mPLpHQ1a.net]
- +=の引数が1のときは++を呼ぶようにする方法ってありますか
- 33 名前:ハノン mailto:sage [2021/08/10(火) 04:41:55.83 .net]
- >>30
自分でそう書くのがいいのでは? (n == 1) ? x++ : x += n;
- 34 名前:デフォルトの名無しさん mailto:sage [2021/08/10(火) 08:16:11.83 ID:JssHBcjd.net]
- >>30
遅くなる可能性があるから気にしない。 コンパイル時に解決できるなら++使っても同じだし、実行時に解決するようだと1かどうかの判定が増えて遅くなる。
- 35 名前:デフォルトの名無しさん mailto:sage [2021/08/10(火) 12:11:16.71 ID:OMlKC5pQ.net]
- TCPIPのソケット通信プログラム作ろうと思っているのですが、
コネクションを維持し続ける場合のデメリットって何がありますか?
- 36 名前:デフォルトの名無しさん mailto:sage [2021/08/10(火) 12:42:43.27 ID:ZRv1Vy3I.net]
- >>32
後出しになって申し訳ありませんが、*、!=、++、+=、- 辺りが定義されたイテレータを持つ自作のデータ構造を範囲for文で走査することを考えています それ自体は想定した通りにできたのですが、その範囲for文をomp並列化するとイテレータのインクリメントが ++ でなく
- 37 名前: +=1 で行われるようになります
で、その自作データ構造では ++ よりも += の方が重い実装になっているので、+=1 よりは ++ の方を使ってほしいです omp に特有の仕様に思えるので、普通に += の冒頭で引数が1かどうかの分岐を入れることにしようかと思います ありがとうございました [] - [ここ壊れてます]
- 38 名前:デフォルトの名無しさん mailto:sage [2021/08/10(火) 14:57:46.78 ID:W7aMf5pX.net]
- マルチスレッドのキューのサンプルをSTLで作りゃったーしたったわ、
https://ideone.com/bS7rqc ↓ここのC#のサンプルプログラムの移植 // https://atmarkit.itmedia.co.jp/ait/articles/1801/31/news023.html フラグの必要性は意味を取り違えていたわサーセン、 しかしこれフラグ(runningFlag)無しでやるとしたら終了時にConsumerがいちいちProducerが join可能か調べる(std::thread::joinable())ことになってスレッドより先にプログラムした人が終了したくなるお フラグで済むのに、
- 39 名前:デフォルトの名無しさん mailto:sage [2021/08/10(火) 15:21:27.23 ID:W7aMf5pX.net]
- Windowsのイベントオブジェクトと条件変数の違いまとめ
https://dev.activebasic.com/egtra/2011/09/19/413/
- 40 名前:デフォルトの名無しさん mailto:sage [2021/08/10(火) 15:28:07.54 ID:W7aMf5pX.net]
- と思ったがやっぱ当初の意味(Producerが待っているのかどうか)のフラグが無いと、
キューが空になった後のnotifyで、1万個あるかもしれない仕事の無いConsumerが次々起床され、 巡り巡ってようやくProducerが起床されるみたいな非効率が生じる余地があるやんけ;;; やっぱ当初の漏れのフラグ必要という意見で正しかったのかもしんない 漏れは天才なのかもしんない、 かもしんない運転、
- 41 名前:デフォルトの名無しさん mailto:sage [2021/08/10(火) 18:25:35.80 ID:W7aMf5pX.net]
- つかその前に、漏れの天才eyesが改造元とした@IT様のサンプルプログラムに
スレッドのディスパッチ依存で終了できなくなることがあるという恥ずかしいバグを発見した、 論より証拠: https://ideone.com/NbKdEQ 変更点は、Consumerを1個にして、Producerの側のある個所にsleepを入れただけ (マクロ CAUSE_STOPPING_FAILURE_BUG で条件コンパイルで有効にしている個所 これでConsumerスレッドが終了できなくなる 対策は、同ソースコードの BUGFIX_STOPPING_FAILURE_BUG マクロを有効にしたら宜しい 天才の判断である
- 42 名前:デフォルトの名無しさん mailto:sage [2021/08/10(火) 18:42:35.68 ID:mYAwPqTL.net]
- >>34
すみません。この件なんですが、 void operator += (int n){ if(n == 1){ // ここ }else{ …… } } 「ここ」で演算子++を呼びたいときってどう書いたら良いでしょうか ++の中身をコピペしても良いのですが、 this -> ++ みたいなノリで呼び出せた方が都合が良いです
- 43 名前:デフォルトの名無しさん mailto:sage [2021/08/10(火) 19:06:35.71 ID:W7aMf5pX.net]
- というわけで最終的な版を貼る、
https://ideone.com/G3XeAg ProduceとConsumerそれぞれに対する起床条件を分離すた、 日本語ではいくら説明しても一向に理解の光が射さなかったボンクラ学生レヴェルの>>15でも 100行足らずのソースコードなら読めるんじゃないの 知らんけど
- 44 名前:デフォルトの名無しさん mailto:sage [2021/08/10(火) 19:11:32.09 ID:cMFKuo8t.net]
- >>39
++(*this); または this->operator++();
- 45 名前:デフォルトの名無しさん mailto:sage [2021/08/10(火) 19:24:28.15 ID:mYAwPqTL.net]
- >>41
ありがとうございます 前置/後置の別が自分
- 46 名前:フ中でよく付いていませんが、教えていただいたことに基づいて調べてみます []
- [ここ壊れてます]
- 47 名前:デフォルトの名無しさん mailto:sage [2021/08/10(火) 19:37:16.72 ID:Lbev+Y0v.net]
- >>40
で、そこで取れると良い「スレッドの実行状態」って結局何なん?
- 48 名前:デフォルトの名無しさん mailto:sage [2021/08/10(火) 20:32:27.09 ID:W7aMf5pX.net]
- 「スレッドの実行状態とは起こす対象のスレッドが具体的に何をしているか、や
とれると良い、ではなく取ることが必須や なぜなら、WIN32APIのイベントは1回だけキューイングされるので投げたら投げっぱなしでもそのうち 受け取ってもらえるが、(pthread系統のしくみである)状態変数はそうではなく、 起床信号を投げつける前に相手が信号をキャッチ可能なのか(待ちに入っているのか)知る必要がある なお、イベントのキューイングの有無によって話が変わる旨はすでに書いたある(>>997 上記のことを書いてあるというのに理解もせずにしつこく同じことを繰り返し言ってきたのが>>15
- 49 名前:デフォルトの名無しさん mailto:sage [2021/08/10(火) 21:01:08.35 ID:Lbev+Y0v.net]
- >「スレッドの実行状態とは起こす対象のスレッドが具体的に何をしているか、や
それって具体的にどういうものを想定しているんだろう。 もともとの話はstd::threadに追加したい機能だったと思うけど、この説明だけじゃ全然想像がつかない。
- 50 名前:デフォルトの名無しさん mailto:sage [2021/08/10(火) 22:11:54.85 ID:W7aMf5pX.net]
- なんか元にしたコードにまだ問題があった気配orz
MAX_QUEを1にすると高い頻度でProducerとConsumerが両方待ちに入ってしまいハングアップする、、、 対策版は多分これ↓で良いんジャマイカ…… https://ideone.com/at7ef9 (何が起きていて、どうしてこれで対策なのかはコメント参照、 >>45 >>「スレッドの実行状態とは起こす対象のスレッドが具体的に何をしているか、や >それって具体的にどういうものを想定しているんだろう。 今回のサンプルコードでは具体的にはありません(キリ しいて言えば!runningFlagならConsumerが自身を待ちに入れない(∵Producerがもう起こしてはくれない というのはあるが、>>35に書いた通りフラグ以外の方法でも同じ判定を行える 言っていることにブレがあるのは今日pthreadを勉強したばっかりやし、 天才なので大目に見てホスイ、
- 51 名前:デフォルトの名無しさん mailto:sage [2021/08/10(火) 22:25:26.70 ID:W7aMf5pX.net]
- でもまあコメントを読んでいただければ、pthread系のしくみだと
起こす対象のスレッドが何をしているのかについて常に配慮が居るということをご理解いただけるのではないかと思う 今回はたまたま見込みでnotifyして話が通るからスレッドの実行状態を表す変数が具体的に生じなかっただけ
- 52 名前:デフォルトの名無しさん mailto:sage [2021/08/10(火) 22:47:59.90 ID:C0wcAbjz.net]
- すみません。
自作プログラムが特定のPCだけ同じ場所でntdll.dllのエラーで止まるのですが、何が原因と考えられるでしょうか? 他のPCでは問題無く進み、エラーを起こすPCのメモリにも異常は見つかりませんでした。
- 53 名前:デフォルトの名無しさん mailto:sage [2021/08/10(火) 23:06:02.90 ID:OOQ3UOoB.net]
- >>48
未初期化変数があって無効なアドレスにアクセスしたとかじゃね 確実なことを言うためには例外コードが知りたい あと問題の箇所のソースコードも
- 54 名前:デフォルトの名無しさん mailto:sage [2021/08/10(火) 23:24:57.75 ID:C0wcAbjz.net]
- ソースはすみません、ちょっと出せないです
エラーコードは0xc0000005でしま
- 55 名前:デフォルトの名無しさん mailto:sage [2021/08/10(火) 23:30:51.53 ID:OOQ3UOoB.net]
- はいメモリアクセス違反ですね
デバッガでがんばって調べてね
- 56 名前:デフォルトの名無しさん mailto:sage [2021/08/10(火) 23:32:41.60 ID:C0wcAbjz.net]
- あざす
- 57 名前:デフォルトの名無しさん [2021/08/10(火) 23:34:52.75 ID:5fGESjxl.net]
- 他の言語にはスレッド実行中か判定するAPIあるしstd::thread作った人達だってそのくらいのこと知ってたでしょ
boost::thread時代にそういった要望もあっただろうし それでもあえてstd::threadにはスレッド実行中を調べる機能を付けなかった 本質的に必要な機能ではないと
- 58 名前:判断したんじゃないの? []
- [ここ壊れてます]
- 59 名前:デフォルトの名無しさん mailto:sage [2021/08/10(火) 23:44:13.15 ID:rk6SLsdN.net]
- スレッドそのものの終了状態を知る需要はあまりなく、スレッド内で行われるユーザー定義処理が終わったかどうかが重要だからでしょ
- 60 名前:デフォルトの名無しさん mailto:sage [2021/08/10(火) 23:50:54.98 ID:Lbev+Y0v.net]
- >>47
>起こす対象のスレッドが何をしているのかについて常に配慮が居るということをご理解いただけるのではないかと思う それがwaitで待っている状態かそうでないかを意味しているんだとしたらそれは正しくない。 チェックした次の瞬間にwaitする可能性もあるわけなんで。
- 61 名前:デフォルトの名無しさん mailto:sage [2021/08/11(水) 01:24:38.33 ID:qkzYmFIh.net]
- >>55
>チェックした次の瞬間にwaitする可能性もあるわけなんで。 無い チェックと処置をmutexによる単一のロック期間の中でアトミックに行うのだから>>55は全くナンセンスな問題提起 >>53 thread::joinable()があることは書いたもーん
- 62 名前:デフォルトの名無しさん mailto:sage [2021/08/11(水) 01:28:13.23 ID:qkzYmFIh.net]
- 問題だらけだった@IT様のサンプルコードだけど
これまともに実装するとしたら条件変数をConsumer x NとProducerの計N+1個設けて、 さらにConsumerそれぞれが待っているのか動いているのかを示すフラグを設けて 全部動いていたらProducerを待たせる Consumerが待ちに入る直前にProducerにnotifyかけてキックする、みたいな スレッドプールを手で実装するみたいな話になりそう…… でここまでやるならConsumerの状態変数が実体としてコードに現れる
- 63 名前:デフォルトの名無しさん mailto:sage [2021/08/11(水) 01:44:51.77 ID:01hIEDa4.net]
- 何を主張したくてごちゃごちゃ言ってるのかさっぱり見えないし途中で変わったりしてるようでもあるので、
続けるならそもそもどういう主張をしているのかいっぺんまとめてほしい。
- 64 名前:デフォルトの名無しさん mailto:sage [2021/08/11(水) 08:13:22.18 ID:SyYdmIb8.net]
- >>56
std::threadから取得する「スレッドの実行状態」の話をしているんだが。 それをmutexでアトミックに操作する???
- 65 名前:デフォルトの名無しさん [2021/08/11(水) 09:56:36.95 ID:8ERcfmko.net]
- C++ってiPhoneアプリ作れる?
- 66 名前:デフォルトの名無しさん mailto:sage [2021/08/11(水) 12:11:01.26 ID:sOdrsbt7.net]
- >>60
作れる。QtやUnityで。
- 67 名前:デフォルトの名無しさん mailto:sage [2021/08/11(水) 12:13:04.52 ID:sOdrsbt7.net]
- iPhone専用でいいなら、そもそも、Appleが提供している標準開発環境だけでも
C++で作れる。 iPhoneの標準開発言語はSwiftだが、SwiftはC++と相互に呼び出せるから。 ただし、それだけだと面倒かも知れない。 そういう場合は、Qtで作れば。
- 68 名前:デフォルトの名無しさん [2021/08/11(水) 12:52:41.17 ID:MU7UJMps.net]
- std::vector で insert するとき
v.insert(v.begin() + n, hoge); とかすると思いますが このときの n の型って何ですか? int ? unsigned long ? size_t ? あとこういう型を調べるときって vector のどことか iterator のどこを調べると判りますか?
- 69 名前:デフォルトの名無しさん mailto:sage [2021/08/11(水) 13:03:37.14 ID:19rzwYjH.net]
- 22.3.11 Class Template vector
23.3.11.1 Overview 3 using iterator = implementation-defined; //see 22.2 となっていて、std::vector::iteratorの型は処理系定義だね 現物で調べるならVisual Studioの[F12]が簡単だと思う
- 70 名前:デフォルトの名無しさん mailto:sage [2021/08/11(水) 14:01:06.77 ID:OqxISI0I.net]
- >>59
ID:W7aMf5pX = ID:qkzYmFIh はスレッドの状態として ・その瞬間の状態: Run/Ready/Wait/... ・終了してるかどうか: thread::joinable で取得できる を混同してる(わざとかどうかは知らんが) あと条件変数とスレッドの状態も混同してるので > チェックと処置をmutexによる単一のロック期間の中でアトミックに行うのだから なんて意味不明なことを言い出してる これ以上続けるなら>>58が言うように本人にまとめてもらわないとますますグダグダになるだけだと思う
- 71 名前:デフォルトの名無しさん mailto:sage [2021/08/11(水) 14:15:21.29 ID:EWMgwFeS.net]
- std::thread使ったことないから自信無くて黙ってた
- 72 名前:ッど
thread::joinable()って別にスレッドが終了したかの判定ではなくない? 他スレッドでの実行を管理していない状態の(空の)オブジェクトが作れるから、そういう空の状態かどうかの判定関数であるように読めた fstream::is_open()的な…… [] - [ここ壊れてます]
- 73 名前:デフォルトの名無しさん mailto:sage [2021/08/11(水) 14:23:39.88 ID:01hIEDa4.net]
- >>63
暗黙変換があるから n の型としてはすべての整数型があり得る。 基本的には、生ポインタで実装される可能性もあるものなので ptrdiff_t だと思っておけばいい。 正確な型が必要なら difference_type とか iter_difference_t とかで調べればわかる。
- 74 名前:デフォルトの名無しさん mailto:sage [2021/08/11(水) 14:56:54.71 ID:OqxISI0I.net]
- >>66
> thread::joinable()って別にスレッドが終了したかの判定ではなくない? もちろん正確にはスレッド変数がスレッドと関連づいてるかどうかの判定 彼は>>35辺りでスレッド終了判定と思い込んでるフシが見られるのでそう書いてある
- 75 名前:デフォルトの名無しさん [2021/08/11(水) 15:08:15.20 ID:MU7UJMps.net]
- >>67
ありがとうございます >>64 >現物で調べるならVisual Studioの[F12]が簡単だと思う それで判るのは自分で定義した可能性の高い n の型ですよね? 知りたいのは v.begin() + n に要求されている型のことです
- 76 名前:デフォルトの名無しさん mailto:sage [2021/08/11(水) 15:28:09.46 ID:EWMgwFeS.net]
- >>68
やっぱりそうですよね じゃあ>>65の2個目の中黒の内容については引用?? 例のコードではjoinableなんか使ってないし>>7が書いたのを試しもせずに真に受けた感じなのかな
- 77 名前:デフォルトの名無しさん mailto:sage [2021/08/11(水) 15:29:37.31 ID:EWMgwFeS.net]
- >>69
v.begin().operator+(n)とでも書き換えてoperator+で[F12]しろということではなかろうか
- 78 名前:はちみつ餃子 mailto:sage [2021/08/11(水) 15:43:43.66 ID:QcAq7ivU.net]
- >>69
ランダムアクセスイテレータには difference_type (またはそれに暗黙に型変換出来る何か) を足すことができて、 その結果の型はイテレータ自身と同じ。 https://timsong-cpp.github.io/cppwp/n3337/random.access.iterators
- 79 名前:デフォルトの名無しさん mailto:sage [2021/08/11(水) 15:52:06.26 ID:SyYdmIb8.net]
- >>66
>thread::joinable()って別にスレッドが終了したかの判定ではなくない? 実際にそのスレッドが実行中か待ちか終了しているかを表しているわけじゃないことはその通り。 で、たぶんそれで十分だからjoinable以上の機能は用意されなかった。 ところがそれが役に立つ場面があるよと言ったのが前スレ>>997 このスレの>>35と同一人物かどうかは知らんが。
- 80 名前:デフォルトの名無しさん mailto:sage [2021/08/11(水) 15:54:21.05 ID:19rzwYjH.net]
- >>71
そういうこと
- 81 名前:デフォルトの名無しさん [2021/08/13(金) 02:38:58.72 ID:tLa9gek2.net]
- char *mystrcat(char *a, char *b)
{ // a に b を結合して return a; } みたいな関数を shared_ptr<char *> mystrcat(shared_ptr<char *> a, char *b) { // a に b を結合して return a; } みたいな実装にするとき参照カウンタが無限に増える心配はありますか? shared_ptr<char *> mystrcat(weak_ptr<char *> a, char *b) の方が良いのでしょうか? あと hoge = mystrcat(NULL, hage); みたいに使用されるときは mystrcat の中で new してコピーして new したポインタを返したいのですが問題ありませんか?
- 82 名前:デフォルトの名無しさん mailto:sage [2021/08/13(金) 02:56:15.88 ID:nopi39s7.net]
- >>75
shared_ptr<char *> だと、たぶんやりたいことはできてない。 shared_ptr<char[]> の間違いなんだろうと思うけど、この時点でコンパイルすら試してないのが見て取れる。 参照カウンタの動きは挙げられたソースだけじゃ読み取れないけど、無限に増えるなんてことはまず起こらない。 shared_ptr の use_count() で取れるから試してみればいい。 問題があるかどうかも自分で試してみればいい。何を「問題」とするかこちらにはわからないし。
- 83 名前:デフォルトの名無しさん mailto:sage [2021/08/13(金) 09:51:25.31 ID:BE9FMbqU.net]
- 個別の事例で心配ない、問題ないという返答を得たとしても理解が深まらない。
shared_ptr のメカニズムを理解できないと何度でも心配になるだけ。
- 84 名前:ヌういう理屈で参照カウンタが無限に増えると思ったのかを説明してみて。
考え方に間違いがあれば指摘するよ。 [] - [ここ壊れてます]
- 85 名前:デフォルトの名無しさん mailto:sage [2021/08/13(金) 11:40:57.21 ID:UG8FRdqC.net]
- char *mystrcat(char *a, char *b)
{ // a に b を結合して return make_shared<char []>(a); } じゃいかんの しらんけど
- 86 名前:デフォルトの名無しさん mailto:sage [2021/08/13(金) 14:30:41.36 ID:vEVo7A6C.net]
- 適当な質問者と適当な回答者
ゴミとゴミをあわせてもゴミはゴミ
- 87 名前:デフォルトの名無しさん mailto:sage [2021/08/13(金) 18:27:35.00 ID:tLa9gek2.net]
- shared_ptr<char []> c(a);
return &c[0];
- 88 名前:デフォルトの名無しさん mailto:sage [2021/08/14(土) 08:57:21.71 ID:dlgzlAXX.net]
- namespaceってどのように使うものなんですか?
存在意義がわからない。
- 89 名前:デフォルトの名無しさん mailto:sage [2021/08/14(土) 09:56:52.00 ID:2Gpa2MRC.net]
- >>81
大規模ライブラリを設計するときに重宝する機能 詳しい経緯は知らないがグローバルスコープの識別子名の競合を回避する目的で導入されたと思う namespaceがないC言語時代にいくつからの大規模ライブラリを組み合わせたときに何が起きがちだったか知っていれば納得出来るはず どんな機能もそうだが、自分が必要と思った時に使えば良いだけだよ 存在意義が分からないならお前にとっては必要のない機能ということだから、気にする必要はない
- 90 名前:デフォルトの名無しさん mailto:sage [2021/08/14(土) 10:45:32.18 ID:MjnqNUAd.net]
- Cにnamespaceが導入されないのは何故なんです?
- 91 名前:デフォルトの名無しさん mailto:sage [2021/08/14(土) 10:48:18.77 ID:isR1pnnS.net]
- >>75
蛇足だけど、理由がなければshared_ptr<char[]>の代わりにshared_ptr<str>にしたほうがいいな。 // a に b を結合して return a がすごく怖い。
- 92 名前:デフォルトの名無しさん mailto:sage [2021/08/14(土) 11:05:20.03 ID:HmVXtcJk.net]
- >>83
namespace
- 93 名前:デフォルトの名無しさん mailto:sage [2021/08/14(土) 11:07:32.50 ID:HmVXtcJk.net]
- >>83
namespaceを導入するということは :: だのマングリングだのADLだの色々付いてくるからな
- 94 名前:デフォルトの名無しさん mailto:sage [2021/08/14(土) 11:09:29.69 ID:sh47n3w4.net]
- >>83
マングリングが必要になってしまうから、ってのが大きいだろうな。
- 95 名前:デフォルトの名無しさん [2021/08/14(土) 11:16:28.29 ID:Wd8wuOU/.net]
- C++を本格的に学ぼうと思って本を数冊買ったが、言語仕様が複雑な割には知らないとエラー起こすだろ
っていう項目が多くてビビってる。あと、きれいなコードを書くのに尋常じゃない経験が必要なんじゃないか
- 96 名前:はちみつ餃子 mailto:sage [2021/08/14(土) 11:34:44.96 ID:xM4RG8+9.net]
- 全部知らなくてもわかる部分だけでまあまあ使えるというのが C++ の方針なので
最初から綺麗に書こうと思わないほうがいいと思う。 綺麗に書けないと考えるより汚くても普通なんだと考えると気が楽でしょ。
- 97 名前:デフォルトの名無しさん mailto:sage [2021/08/14(土) 11:41:20.52 ID:HmVXtcJk.net]
- 構造体の中に関数が書ける、というコアの中のコアな部分の使い方・考え方さえ憶えるというより慣れれば
あと他のは追加で憶えればいいってだけ ただし、その追加が今とんでもない量になってて 禿本の初版からやってる俺でさえ憶えきれなくてもがいてる
- 98 名前:デフォルトの名無しさん mailto:sage [2021/08/14(土) 11:47:19.11 ID:fhp8ilcT.net]
- いいかい学生さん、 他人のコードをな、 他人のコードをいつでも読めるくらいになりなよ。
それが、人間えら過ぎもしない貧乏過ぎもしない、 ちょうどいいくらいってとこなんだ。
- 99 名前:デフォルトの名無しさん mailto:sage [2021/08/14(土) 13:15:40.19 ID:MjnqNUAd.net]
- >>88
エラーが起こったらまだマシだな イクときはだまってイクからな
- 100 名前:デフォルトの名無しさん mailto:sage [2021/08/14(土) 13:23:47.33 ID:sh47n3w4.net]
- 他人のコードを読んで学ぶのに一番向いてない言語だよなC++は。
- 101 名前:デフォルトの名無しさん mailto:sage [2021/08/14(土) 13:48:08.91 ID:fhp8ilcT.net]
- オーバーロードが悪いんですよ
- 102 名前:デフォルトの名無しさん mailto:sage [2021/08/14(土) 14:19:07.48 ID:EcmTnCEO.net]
- >>93
perl に比べたらまだマシ
- 103 名前:デフォルトの名無しさん mailto:sage [2021/08/14(土) 17:38:14.88 ID:sh47n3w4.net]
- perlは文法が複雑なだけで、知らない書き方に出会ったらそれを調べれば
- 104 名前:「い。
C++はコードの断片だけ見ても動作を想像できないことがあるから厄介。 [] - [ここ壊れてます]
- 105 名前:デフォルトの名無しさん mailto:sage [2021/08/14(土) 18:45:25.98 ID:lbIZmRLc.net]
- ぶっちゃけスマートポインターって面倒だよね?
- 106 名前:デフォルトの名無しさん mailto:sage [2021/08/14(土) 18:54:41.75 ID:fhp8ilcT.net]
- スマポに限らず面倒なテンプレートクラスだらけだよ
- 107 名前:デフォルトの名無しさん mailto:sage [2021/08/14(土) 18:56:25.80 ID:fRH2bKcn.net]
- ぶっちゃけどんなときに面倒だと感じる?
- 108 名前:デフォルトの名無しさん mailto:sage [2021/08/14(土) 19:58:29.67 ID:x6Wgppy9.net]
- スマートポインタに慣れたら自分で解放しなきゃならないmallocやnewの方がよっぽど面倒
- 109 名前:デフォルトの名無しさん mailto:sage [2021/08/14(土) 20:04:27.45 ID:HmVXtcJk.net]
- >>98
クラステンプレートな
- 110 名前:デフォルトの名無しさん mailto:sage [2021/08/14(土) 21:41:33.25 ID:fhp8ilcT.net]
- autoが便利すぎて反復子の型を明示していたころのC++には戻れそうにない
- 111 名前:デフォルトの名無しさん mailto:sage [2021/08/14(土) 22:18:40.56 ID:cML6JT7R.net]
- 11よりは前は書きたくないね
- 112 名前:デフォルトの名無しさん [2021/08/15(日) 00:20:00.85 ID:YeWgyy60.net]
- QZ案外初心者やなw
でも言ってることは全面的に賛成 ポインタや参照、クラス等の基本を抑えてからでないとスマポや、C++11からの要素(右辺値参照含む)の使い方もわからんと思う
- 113 名前:デフォルトの名無しさん mailto:sage [2021/08/15(日) 06:30:24.80 ID:AkVzvB4L.net]
- autoもそうだが ->戻り型やusingエイリアスもだね
typedefには戻れない
- 114 名前:ハノン mailto:sage [2021/08/15(日) 09:34:41.47 .net]
- >>103
確かに罰ゲームの一種になるかも‥‥私も少しずつ採り入れていくようになっていますし >>104 もう永遠の初心者だと思っていますので、ならば、初心者の気持ちがわかるコメントでコントリビュートするのもありかと、ふつふつと
- 115 名前:デフォルトの名無しさん mailto:sage [2021/08/15(日) 14:37:33.11 ID:Qb5ISoeo.net]
- >>104
なにこれ? QZ「〜」 名無し「QZ初心者やな。でも賛成」 っていう自演をやろうとしたが、一個目のQZのレスをコテつけ忘れで投稿してしまったのか? あるいははちみつとQZを同一視している? いずれにせよとんでもない皮肉だな笑
- 116 名前:ハノン mailto:sage [2021/08/15(日) 15:29:20.83 .net]
- >>107
いちいち反応しなくてもよろしい >>108 つ鏡
- 117 名前:デフォルトの名無しさん mailto:sage [2021/08/15(日) 17:48:49.44 ID:pJ9UilRh.net]
- >>107
それ、以前俺が書いたカキコを勝手にコピペされただけだよ
- 118 名前:デフォルトの名無しさん mailto:sage [2021/08/15(日) 17:52:57.61 ID:/OoKg6VD.net]
- クッソささやかな体面保つためだけの自演も失敗とか本当にみじめないきものだな…
- 119 名前:デフォルトの名無しさん mailto:sage [2021/08/15(日) 18:00:11.34 ID:/ZNLC/hj.net]
- これか。どういう意図のコピペなんだろうかね。
https://mevius.5ch.net/test/read.cgi/tech/1594615908/595
- 120 名前:はちみつ餃子 mailto:sage [2021/08/15(日) 18:12:10.32 ID:oR5NZ4bd.net]
- >>111
ブラウザが記憶してたのを再度投稿してしまったとかそういうしょうもないミスじゃないかな。 JaneStyle のメモ欄で以前のレス内容を貼り付けたりそのまま投稿できたりする機能があるよ。
- 121 名前:デフォルトの名無しさん mailto:sage [2021/08/15(日) 18:15:56.65 ID:pJ9UilRh.net]
- だから勝手にコピペされたっつってんだろクソ餃子め
>>104は俺じゃないから 3行目を引用したかったのか変な自演したかったのかは知らん
- 122 名前:はちみつ餃子 mailto:sage [2021/08/15(日) 18:21:10.51 ID:oR5NZ4bd.net]
- >>113
すまぬ。 本人によるものでなくてもなんらかの意図でメモしてたものを うっかりということは起こりそうなデザインにはなっているので、 意図によるものでなくただのミスじゃねという部分が主旨。
- 123 名前:デフォルトの名無しさん mailto:sage [2021/08/15(日) 18:25:05.27 ID:pJ9UilRh.net]
- (´・ω・`)そうか
- 124 名前:デフォルトの名無しさん mailto:sage [2021/08/16(月) 15:03:34.95 ID:Gh+OcB3l.net]
- >>107
なんで突然はちみつ?
- 125 名前:はちみつ餃子 mailto:sage [2021/08/16(月) 15:17:56.99 ID:5E5Krdno.net]
- >>116
現時点でこのスレにコテ (+トリップ) 付きで書き込んでいるのがはちみつ餃子と QZ だけだからだろ。
- 126 名前:デフォルトの名無しさん mailto:sage [2021/08/16(月) 19:18:38.03 ID:QgSHgEhC.net]
- (unsigned) intの数を受けたら何らかの演算をして (unsigned) long longの数を返す、(unsigned) double の数を受けたら何らかの演算をして (unsigned) long double の数を返す、みたいのって逐一オーバーロードを書くしかないですよね?
要するに、大きいデータ型に格上げして何らかの演算をして返したいってことなんですが
- 127 名前:ハノン mailto:sage [2021/08/16(月) 19:34:40.64 .net]
- >>118
演算子のオーバーロードにしても関数のオーバーロードにしても、返り値の型を指定することは出来なかったかと 思いつくのは演算前の引数にあてがうキャストのオーバーロードですね
- 128 名前:デフォルトの名無しさん mailto:sage [2021/08/16(月) 19:55:44.02 ID:AiYiQHL1.net]
- 引数をテンプレートにして、引数Tのビット数と整数型かどうかを見て、一段階大きい型を戻り値の型とすることは出来る
- 129 名前:ハノン mailto:sage [2021/08/16(月) 20:16:27.49 .net]
- >>120
pls kwsk >>119 普通にコンストラクタのほうがいいですか‥
- 130 名前:デフォルトの名無しさん mailto:sage [2021/08/16(月) 21:59:33.60 ID:AiYiQHL1.net]
- ごめん、めんどい・・というか
sizeof(T)と整数or浮動小数点数のbool(is_integralとかで取る)を受け取る構造体の中でtype(戻り値の型)を定義、とか考えてたけど 結局Tのサイズごとに特殊化するから手間変わらん、てのと 関数の中身が長くなるなら、オーバーロードした関数からテンプレート版(戻り値の型と引数の型がテンプレート)を呼んで、そこで中身書けば一回で済むね
|

|