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


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

C++相談室 part137



1 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 17:53:02.14 ID:FOAGvAbs.net]
次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part135
https://mevius.5ch.net/test/read.cgi/tech/1522495206/

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

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

[C++ FAQ]
https://isocpp.org/wiki/faq/
www.bohyoh.com/CandCPP/FAQ/ (日本語)

----- テンプレ ここまで -----

VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured

684 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 05:52:46.45 ID:d4sNno4d.net]
実行したいこととオブジェクトの型が一対一対応であるという保証はない。
C++固有のポリモーフィズム機能を使うと他の言語に移植できなくなる。
実行したいことを列挙型なりビットフラグのメンバ変数として保存しておくのが一番楽だろう。

685 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 05:53:49.02 ID:0eRJE2kB.net]
テンプレートでダックタイピング的なことをするとか

686 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 05:59:59.43 ID:d4sNno4d.net]
追記。
やりたいことが1種類だけなら型と紐づいていても問題ないが、
やりたいことが複数の組み合わせになったら型と紐づいた設計は破綻する。
何がいいたいかというと、アキラメロンということだ。

687 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 06:38:46.33 ID:p9jfuJcV.net]
皆さまありがとうございます。無理ぽいことがよくわかりました。

>>659
うーん。
仮想関数との違いがよくわからないなぁ。
プロキシ―オブジェクトってことなんだろうけど。
うーんと、ほしいときって初期化タイミングの調整とかそのへんなのでメインレールはインターフェースでいいんだよなぁ。
どうしてこう融通が利かないのか。設計のせいか・・・Orz

>>660
結局そういうことになるんですよねぇ。。。うーん。

>>661
コンセプトがいるような気がする。
さっき上げたコードをテンプレートとanyで書けば同じようなことはできるけど、エラー吐いたら地獄な気がする。
でも、そっちの方が高機能かもしれんなぁ。anyのキャスト問題を除けば。

688 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 06:40:45.22 ID:p9jfuJcV.net]
とりあえず、お付き合いいただきありがとうございました。
今日は寝ます。また。

689 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 07:05:11.27 ID:f/eWc4F9.net]
Unicodeの時はwchar_t、マルチバイトのときはcharとして扱ってデータをコピーしたい
その切り替えを処理途中にifdef入れまくるのは不適切だと思うからdefineかtypedefを一度することによって
自動で切り替えられるようにしたいけどtypedefだとできない?

#ifdef unicode
#define tlen wcslen
#else
#define tlen strlen
#endif

int main ()
{
TCHAR a;
int size = tlen(a);
}

690 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 07:07:47.43 ID:iZqKv3XP.net]
コピーだけなら簡単

691 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 07:10:21.06 ID:f/eWc4F9.net]
>>666
コピー以外も色々と

692 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 07:19:12.22 ID:iZqKv3XP.net]
色々と
じゃ答えようが無い



693 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 07:19:41.44 ID:iZqKv3XP.net]
色々と
頑張ってね

694 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 07:31:58.40 ID:d4sNno4d.net]
>>665
以下のようなwchar_t, char に応じたオーバーロード関数もある。私は使わないけど。

std::char_traits::length(const T* s)

695 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 07:31:58.98 ID:PNfVMsqd.net]
色々と間違ってる

696 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 07:33:16.73 ID:X/p1NsAX.net]
コンパイル時に決まってるならテンプレートにすればいい

697 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 07:40:29.94 ID:f/eWc4F9.net]
>>668
文字列長を求める
データコピー
Stringstream

698 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 07:44:16.79 ID:f/eWc4F9.net]
>>670
これだとLengthに特化したやつだけになるのかな?
他にもあるので切り替え方法が知りたく

>>672
コンパイル時には決まってます
テンプレートを作成するってのはT型を作るってことかな?

699 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 07:46:33.59 ID:uYApHCeM.net]
クラスのインスタンスのコピーさせない方法ってコンストラクタにdeleteをつけるだけで実現可能?
それとも違うんかね?
参考を探していてもデフォルトコンストラクターにつけているだけで
複数のコンストラクターがある場合とかがわからない

700 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 07:59:27.52 ID:iZqKv3XP.net]
コピーコンストラクタとoperator = をprivateにして
関数の実体も作らない

701 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 08:15:19.60 ID:cglfv0MQ.net]
今は=deleteも出来るぜ。

702 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 08:48:18.73 ID:uYApHCeM.net]
privateにすることでできそう
ありがとう



703 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 08:49:25.57 ID:a+3O8uOm.net]
C

704 名前:++極める方法教えてよ []
[ここ壊れてます]

705 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 08:53:13.90 ID:FVsJ4La+.net]
STLの仕様を見ます
自分で実装します
ソースコードをみて答え合わせをします

まずはvectorから、ハイ、どうぞ

706 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 09:02:52.19 ID:I9yy5anA.net]
高位合成toolを入手します。
あなたの思った通りの動きをするCPUを作れば完成

707 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 09:44:57.66 ID:UZimlLTI.net]
CreateProcess失敗したときのhProcessに何が入るか記載しておいてよmsdn
NULLなの!?それとも別なの!?
msdn使いこなせるやつすげぇよ本当に

708 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 09:51:57.65 ID:I9yy5anA.net]
そんな引数無い事について以下100レス程

709 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 10:25:12.98 ID:NKvoiPPS.net]
>>670
char_traitsの関数はオーバーロードじゃねえだろ
引数ではなくスコープで区別するんだから

710 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 12:02:09.34 ID:d4sNno4d.net]
>>684
スコープ?

711 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 12:20:52.35 ID:LvXbuhRM.net]
>>683
CreateProcess()使ったことあれば lpProcessInformation.hProcess ってわかると思うが…

>>682
何も書いてない → 何が入っているかわからない
ってことだろ

712 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 12:21:22.72 ID:nFJe7QfE.net]
>>675
https://cpprefjp.github.io/lang/cpp11/defaulted_and_deleted_functions.html



713 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 13:06:07.39 ID:I9yy5anA.net]
>>686
HANDLEならINVALID_HANDLE_VALUEがデフォでしょ

714 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 14:25:58.73 ID:NKvoiPPS.net]
>>685
std:char_traits<char>::length(const char*)
std::char_traits<wchar_t>::length(const wchar_t*)
こういう関数の選択は引数によらない
wchar_t x[2];
std::char_traits<char>::length(x); //error

715 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 14:45:17.93 ID:LvXbuhRM.net]
>>688
だからそんなことを期待しちゃダメってこと

716 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 15:10:51.55 ID:ayqbPQA0.net]
>>689
wchar_tを使うとわかっていてテンプレート引数にcharを入れるのはおかしくない?

717 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 18:49:42.52 ID:hMB1uQwa.net]
>>682
関数が失敗したら新しいプロセス自体作れられないんだから
hProcessが不定でも何も困らないと思うが

718 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 18:53:21.62 ID:NKvoiPPS.net]
>>691
std::char_traits::length(x); //error

719 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 19:18:52.44 ID:7XXHmUWL.net]
おまいらコミュ障かよ

720 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 19:19:41.62 ID:JXFPQdyt.net]
std::char_traits<wchar_t>::length(x);//0

721 名前: mailto:sage [2018/08/10(金) 19:23:47.91 ID:H9lF8aPc.net]
>>680
>まずはvectorから、ハイ、どうぞ
これ、いちどやってみたいですね…
https://mevius.5ch.net/test/read.cgi/tech/1434079972/33

722 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 21:04:31.61 ID:U4E1U51M.net]
このメンツで開発とか地獄だろうな。。



723 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 08:11:36.74 ID:dFDFw6X4.net]
ガイジしかおらんやんけ…

724 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 11:00:44.96 ID:X6Hz/xY3.net]
char_traitsの件、どうも話通じてないなあ

725 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 11:25:54.74 ID:4zfRZVUI.net]
多重定義, オーバーロード - Wikipedia
https://ja.wikipedia.org/wiki/%E5%A4%9A%E9%87%8D%E5%AE%9A%E7%BE%A9

質問者が解決の糸口を見つけられればそれでいい。
>>684 のような間違った用語定義を主張して、何の生産性にも貢献しない ID:NKvoiPPS みたいな人は迷惑。

726 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 12:18:16.68 ID:X6Hz/xY3.net]
>>700
Wikiより規格票な

N3337 13 Overloading [over]
When two or more different declarations are specified for a single name in the same scope, that name is said to be overloaded.

JIS X3014:2003 13. 多重定義
同じ名前を指定した異なる宣言が同一有効範囲内に複数ある場合,その名前は,多重定義されているという。

言わんでも解るだろうから、説教臭いことはあえて黙っておく

727 名前:はちみつ餃子 mailto:sage [2018/08/11(土) 13:37:39.73 ID:zO3XAoAm.net]
たしかに >>670 のいう「オーバーロード」は用語の使い方が誤っているが、
それはそうとしてオーバーロードっていう言葉の中にバーローという言葉が入ってるから、
オーバーロードの話題が出るたびに俺の中のコナン君がバーローとささやくので、
お前らにも同じ呪いをかけてやろう。

728 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 13:41:08.56 ID:xFvEQmr2.net]
真実はいつも多重定義されない!

729 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 13:43:33.49 ID:xFvEQmr2.net]
std::char_traits<char>::length()と
std::char_traits<wchar_t>::length()は
互いに同じ名前(a single name)なんやろうか…

730 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 15:53:50.27 ID:xFvEQmr2.net]
>>663
>どうしてこう融通が利かないのか。設計のせいか・・・Orz
ユーザーコードにクラスの中で定義された型(Base::TypeやNext::Type)を見せるのはやめて、
NextやBaseのオブジェクトのふるまいとしてだけ見せたら宜しいかと

ふるまいだけを見せる抽象化はまず純論理的にはポリモーフィズムで逝ける
次の段階として、呼び出しの度にvtblの間接参照が一発入る遅さを嫌い、高速化したいという要求が生じるかもしれないが
そのときは知らん(テンプレートによるダックタイピングでさらに戦うこともできるが同一翻訳短以内でのcloseが前提でありかつクラスの継承の恩恵にはなかなかあずかれない

731 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 15:58:27.82 ID:xFvEQmr2.net]
なおふるまいだけを見せる抽象化ができないオブジェクト指向言語とか無いから他言語への移植性とかを気にするのは狂気の杞憂
ていうか非オブジェクト指向言語であっても関数ポインタと構造体が使えれば似たようなことはいつでもできる

732 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 18:59:43.05 ID:X6Hz/xY3.net]
非オブジェクト指向言語とオブジェクト指向言語で
最終的に作れるものと作れないものは
その違いによる差は全くないんだが



733 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 22:22:49.51 ID:xFvEQmr2.net]
ちな>>707は、>>660へのレス。

734 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 22:42:05.15 ID:4zfRZVUI.net]
技術系の板でID使い分けする惨めさよ

735 名前:707 mailto:sage [2018/08/12(日) 07:44:03.92 ID:2Xoj+DoI.net]
俺の偽物がいるな

736 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 20:13:35.92 ID:KnTIebYQ.net]
レイトレーシングをやってみたいんですけど、何もない状態から画像を生成するのと、画像処理(opencv)でやろうと思ってます。
前者と後者とも資料は見つけたのですが、どうやって勉強するのがおすすめですか?
opencvで例えばアイドルの画像をCGっぽく、またはアニメっぽくはできたりするのでしょうか?

737 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 22:21:45.58 ID:MDfKI+a6.net]
>>711
多分君には無理だからそういったアプリを探しなさい
煽りでも何でもなく実力不足

738 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 23:17:59.82 ID:RJjtK8Ko.net]
>>711
レイトレーシングの本質は三次元空間での光の挙動のシミュレーションであって
既存の画像を加工するような技術じゃないぞ

739 名前:デフォルトの名無しさん [2018/08/13(月) 00:27:19.20 ID:p4qIMBze.net]
Late racing.

740 名前:デフォルトの名無しさん [2018/08/13(月) 00:28:37.24 ID:p4qIMBze.net]
視線の追跡したほうが効率よさそうな気がする。
目に入らない光は無いも同然だし。

741 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 00:31:27.67 ID:sn7iPKpv.net]
一番シンプルなレイトレの実装は視線追跡だからな

742 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 00:33:31.73 ID:sn7iPKpv.net]
>>716
寝ぼけて謎な用語の用法をしてしまった忘れてくれ
視線側からのレイの追跡だ



743 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 00:36:44.24 ID:XxWurSAu.net]
トイレの覗きかと一瞬勘違いしましたw

744 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 00:43:21.17 ID:MxL7CAkg.net]
ちゃんとミラーボールの映像から抽出しないと

745 名前:デフォルトの名無しさん [2018/08/13(月) 01:42:46.41 ID:+YkMTMKz.net]
遠い昔だが、いい基礎解説本があったんだがタイトルが思い出せない
98用のCのソースコードも附録でついてた
98なんかもってなかったから、Xlibで動かした記憶がある

その書籍はサーフェイスモデルもレイトレーシングも基礎から丁寧に書いてある良書だった
サーフェイスモデルについては、ものすごい力を入れて書かれてた良い本だった

ワイヤーフレームから陰面消去、さらに双三次スプラインでの補間、そしてレンダリング、バンプマッピング
さらに3次アフィン変換つかってモーションキーで動くとこまで解説してる
基礎で必要な内容は、ほぼすべて網羅されてて、バカでもチョンでも分かるように書かれてた

で、レイトレーシングはサーフェイスモデルより超簡単だからな
このスレのアホが難しいといってるだけで
むしろレイトレーシングはバカでもチョンでも分かる

746 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 01:48:30.63 ID:GxmByJ3O.net]
せっかく良い質問なのに、
あまり汚い言葉で、アホとかバカとかチョンとか言わなない方がいいよ…

747 名前:デフォルトの名無しさん [2018/08/13(月) 02:07:33.90 ID:Zz4bK/+7.net]
レイトレならこれもおすすめ
https://qiita.com/mebiusbox2/items/89e2db3b24e4c39502fe

748 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 02:52:34.70 ID:J+SKK2b0.net]
Oh!Xにソース付きで事細かく書いてあってだな

749 名前:デフォルトの名無しさん [2018/08/13(月) 03:13:41.34 ID:bfksj/4u.net]
多分これだと思う
https://www.amazon.co.jp/dp/4871481999
3冊とも名著。1と2はBASICだけど

750 名前:デフォルトの名無しさん [2018/08/13(月) 03:39:58.88 ID:p4qIMBze.net]
レイトレーシングに限らないけど、アルゴリズムの勉強にはLinuxが良いですよ。

751 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 04:00:12.36 ID:3+Hm6Wut.net]
紹介されてる本全部古い...

linuxだと何がいいの?

752 名前:デフォルトの名無しさん [2018/08/13(月) 04:14:38.66 ID:p4qIMBze.net]
Kernelソースが勉強になります。



753 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 04:15:34.47 ID:J+SKK2b0.net]
openclとグラボの勉強したら?
レイトレーシングの大量の計算するのがグラボでしょ

754 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 06:59:52.73 ID:k7xD/gvg.net]
>>724
アスキーの『応用グラフィックス』か。入門・実習・応用の3冊シリーズだね。
各巻のつながりは緩いから順番に読まなくてもほぼ大丈夫だけど。

確かに良い本だった気がするけど、なにぶん読んだのが昔なんで
いくらも理解できなかったわ。今ならもう少しマシだと思いたい。
大学近くの古本屋でなら見つかるかも。

755 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 07:05:01.34 ID:JKsq+WjD.net]
 
畏(おそ)れ多くも森喜朗元帥閣下の有り難いお言葉:
 「オレはIT(いっと)のことはよく知らんがぁ
   時計をたった2時間早めるだけだろぉ?
  オレなら1分あれば済ませるぞぉ!
   サマータイムの何がそんなに難しいんだぁ?」
 
システム開発現場の勇ましい言葉:
 「畏れ多くも森元帥閣下のご下命を賜った以上
   現場SEは有り難いお言葉に勇気百倍
  デスマーチとバンザイ突撃を敢行いたします!」
  
 「マラソン選手さまが涼しい時間に走るためなら
   現場SEの千人や二千人死んでも本望です!
  私たちSEの生命など、虫けらと同じです!」
 
 「畏れ多くも森元帥閣下の有り難いご下命にしたがって
   最前線システム開発現場で殉職出来るとしたら
  現場SEとしてこれに勝る喜びはありません!」
 
日本という国では
 体育会系が一番偉い(森元帥閣下、田中理事長)
  文科系がその次で(財務省、教授会)
 理科系は最底辺の奴隷とされています(現場SE)
 

756 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 07:26:44.37 ID:WtSMvp2C.net]
レイトレーシングがサーフェイスモデルより簡単とか
半透明物体内部の散乱表現に踏み込んだらそんな寝言は言えないんじゃ…

757 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 10:07:11.78 ID:uSgRX9ke.net]
みんな例外と戻り値ってどう使い分けてる?
例えば以下みたいな、ファイルからとある要素を抜き出して返す関数とかで

std::string extractHogeFromFile(const std::string& file_path)

俺だったら以下みたいにしてるけど、いまいちしっくり来てないとも思ってる

ファイルが見つからない→例外
要素が見つからない→例外
要素が見つかるけど空→空

みんな例外クラスとかはstd::exception継承して自作してるのかな?
バックトレースやコード行数とれないのが使いにくくて、javaっぽい例外クラスを自作してる

758 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 10:16:27.95 ID:Z0vFISs/.net]
例外は発生時の動作が遅い

759 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 10:17:50.65 ID:gsTSbRo/.net]
exceptionを直に継承ということは滅多にないな
system_errorがあるからerror_categoryの派生クラスを作れば大抵足りる
__FILE__ や __LINE__ のようなデバッグ情報を入れたくてマクロを作ることはあるけどね

空という概念ならoptionalはいかが?
template <typename ELEMENT>
std::optional<ELEMENT> extractHogeFromFile(std::path) noexcept(false);

760 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 10:36:14.97 ID:uSgRX9ke.net]
>>733
発生時は確かに遅いね
ただ、あくまでも例外的なものだけに利用をとどめておけば、そんなに発生するものでもないし、その場合は戻り値をifで見るより命令数が少なくなるから、結果的に高速になるって俺は考えてる

>>734
exception直に継承も少し疑問もってるんだけど、std::exceptionのcatchで全部取りやすいからこうしてるんだよね
...でcatchは乱暴な気がするし

ただ、調べて見た感じsystem_errorも使いやすそうね。最近開発で使えるようになったC++11だからこんなのあるの気づいてなかったわ
std::optionalとかあったんだね、ちょっと調べてみるわありがとう

761 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 11:20:33.79 ID:NtbFT1j9.net]
>>720
レイトレーシングが簡単なのは入り口だけ
20世紀あたりのなんちゃってレイトレーシングは楽だけど本格的にやると解決できない問題が多数出てくる

762 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 11:32:34.68 ID:D1VtDJH7.net]
ファイル開くのはそれ自体がすっごい遅い操作だから例外のコストなんか無視できるのと
開き損なうとそれ以降の処理が致命的な失敗になりやすい
そういう操作のエラー通知が例外に向いてる



763 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 11:47:23.91 ID:2dORgvS5.net]
>>733
例外発生時の速度が問題になるなら例外の使い方を見直した方がいい

764 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 12:31:28.26 ID:Z0vFISs/.net]
>>832に対して
例外は遅いから例外の時に使いましょう
ということを書いたつもりなんだけど

単なる終端マークとか区切りとか
そういう頻出する可能性のある用途では使っちゃダメってこと

765 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 12:35:13.84 ID:Z0vFISs/.net]
例外は仕組みを入れるだけで、
例外が発生しなくてもオーバーヘッドが発生する環境がほとんどなので
組み込みだとわざと無効にすることも多い

x86の64bitはオーバーヘッドが無い代わりに
例外発生時は極端に遅い
一度測定してみるとその遅さがよく分かる

そういうことがわかっていれば
どこに使うべきかがおのずとわかる

766 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 12:41:46.34 ID:WtSMvp2C.net]
低水準ライブラリに属するべき関数が例外みたいな高級なしくみに依存するのは美しくないキモス
システム設計とかアプリの基本設計レベルで例外の種類とcatch箇所とcatch時の処理を定義して使うなら良い
が、呼び出し側でif文を書きたくないからという理由でイミフな例外定義を行うと、結局第三者に正しく使ってもらえない
キモス

767 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 12:48:07.11 ID:WtSMvp2C.net]
例外のオーバーヘッドについてはこれな↓↓↓
ttp://zakkas783-blog-blog.tumblr.com/post/3870295160/c-の例外ハンドリングとパフォーマンス

>>740の通り例外処理の裏側の実装には2つの潮流があるんじゃ

768 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 13:03:58.12 ID:u8inRKlo.net]
制御をすっ飛ばす必然性があるほどの例外的状況に限るのが吉だろうな。
返値で返せないものを返すのに使うなら検査例外のような保証が欲しいところ。

769 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 13:22:39.94 ID:BGH31mSy.net]
別スレッドでの関数呼び出し階層が深すぎて安全にスレッド終了させる方法が分からない時に便利でしょ、例外。

770 名前:デフォルトの名無しさん [2018/08/13(月) 13:37:06.53 ID:hqkLiaZ4.net]
このパーセンテージどうやって表示してるのですか?
aokomoriuta.hateblo.jp/entry/2016/05/05/145810

771 名前:デフォルトの名無しさん [2018/08/13(月) 13:37:33.57 ID:hqkLiaZ4.net]
すいませんこれです
https://i.imgur.com/p53FZao.jpg

772 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 14:16:12.02 ID:uSgRX9ke.net]
前測ったときはアセンブリ言語にしてみると、戻り値ifチェックだと2命令だったのが例外使うと20命令くらいだったなぁ



773 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 14:27:34.65 ID:uSgRX9ke.net]
>>741
自前の文字列操作のUtilとかだと例外にするかすごいその観点で迷うんだよね

>>743
賛否両論なjavaの検査例外だけど欲しくなるときはあるね
C++の例外指定がもう少し使いやすければよかったんだが

>>744
すごく同感

774 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 14:39:38.06 ID:gsTSbRo/.net]
>>739
困ったことにbasic_iosはexceptionsで頼みもしてないのにEOFで例外を投げる

775 名前:デフォルトの名無しさん [2018/08/13(月) 14:48:44.15 ID:p4qIMBze.net]
HTTPで400番台500番台は例外投げればいいのかな。

776 名前:デフォルトの名無しさん [2018/08/13(月) 14:51:05.76 ID:p4qIMBze.net]
例外を投げるクラスはピッチャーって名前でいいんか?
受け取るクラスはキャッチャー?

777 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 15:18:30.60 ID:m/ibS17x.net]
甘めの例外を打ちかえすのはバッター

778 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 15:38:43.20 ID:Twrhv79p.net]
C++17では多値が返せるようになりました。
できるならレガシーを切って次へ行きたいものです。
またはstd::optionalなんてものもありますな。

std::tuple<bool,Item> Fun(){return {true,Item()};}
auto [F,I] = Fun();

779 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 15:41:48.16 ID:Twrhv79p.net]


780 名前:、多値自体は返せたけど受け取って初期化できるようになったか。
ちなみにすでに実体化している変数は、std::tie(...);で受け取れます。
[]
[ここ壊れてます]

781 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 16:14:15.10 ID:gsTSbRo/.net]
>>754
prvalueでもforward_as_tupleならおk

782 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 16:15:13.67 ID:gsTSbRo/.net]
auto func()
{
return forward_as_tuple(123, "456");
}



783 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 19:17:45.97 ID:Twrhv79p.net]
お、なるほど。良いこと聴いた!

784 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 20:21:18.19 ID:m/ibS17x.net]
ただ元からタプルがある言語と比べたら劇的に汚い仕上がりだよね






[ 続きを読む ] / [ 携帯版 ]

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

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