[表示 : 全て 最新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

596 名前:デフォルトの名無しさん mailto:sage [2018/08/06(月) 19:34:04.04 ID:ykSda89u.net]
>>570
今現在コード書いてないオワコン禿げのいう事のが信用ねーわ。
江添とかも同類。
コードをまともに書いてないやつが言語仕様決めてるってのがc++のクソなところ。

597 名前:デフォルトの名無しさん mailto:sage [2018/08/06(月) 19:45:02.37 ID:Xt7Beabr.net]
>>575
コードがマトモに書ける人は書く方が忙しいので仕様どころではないって割とありそう

598 名前: mailto:sage [2018/08/06(月) 22:20:17.51 ID:zDoA3miN.net]
ryzen threadripper 2950X 16C32T 3.5GHz〜4.4GHz !!
なんだか最近急にすごくなっていませんか?

599 名前:デフォルトの名無しさん mailto:sage [2018/08/06(月) 23:09:33.16 ID:L/6qyfUO.net]
今までのAMDが怠けてただけだよ!

600 名前:デフォルトの名無しさん mailto:sage [2018/08/06(月) 23:12:22.15 ID:zQ2KZFwb.net]
floatのゼロ割りって、infになるものの、別にそれ自体が問題ではなくて、
それがクラッシュに繋がるような演算を行うことが問題であって、
例えば条件分岐で一定の大きさ以下の場合のみ参照するようにしているなら問題ないですよね?

601 名前:デフォルトの名無しさん mailto:sage [2018/08/06(月) 23:30:48.85 ID:Xt7Beabr.net]
ゼロで割り算したい意図は?

602 名前:デフォルトの名無しさん mailto:sage [2018/08/06(月) 23:38:20.39 ID:wPUCa9qR.net]
>>579
うん
>>580
ゼロで割りたいなんて一言も書いてない

603 名前:579 mailto:sage [2018/08/06(月) 23:40:51.75 ID:zQ2KZFwb.net]
>>580
物体の速度なのでゼロのときがあるんです。
例えば、ある距離に到達する時間を求めるとなると、その距離を速度で割るのでゼロ割りがあり得ます。

604 名前:579 mailto:sage [2018/08/06(月) 23:43:04.07 ID:zQ2KZFwb.net]
>>581
ありがとうございます。
ゼロで割ること自体を回避するのって、けっこう厄介なんですよね・・・。
ある程度小さい場合は演算しないとか、どれくらい小さかったらいいの?みたいなことを考えないといけないので・・・。
無限大のときにどうする?という考え方の方が対処し易いように思います。



605 名前:デフォルトの名無しさん mailto:sage [2018/08/07(火) 06:50:16.11 ID:PssQ1NSH.net]
今Python + Opencvで画像処理をしているのですが、速度の問題でこれをC++に書き換えたいです
Pythonのnumpyみたいなものはc++にも有りますか?
OpencvのMatを(多次元配列に格納するなりして)C++で弄くれると嬉しいのですが

606 名前:デフォルトの名無しさん mailto:sage [2018/08/07(火) 07:05:01.46 ID:rmdm0Ojo.net]
まずOpenCVはもともとC++で書かれてるライブラリであってPythonのはラッパーだって所から始めようか

607 名前:デフォルトの名無しさん mailto:sage [2018/08/07(火) 08:33:46.01 ID:dagdXeyj.net]
>>575
めっちゃコード書いてんじゃん

608 名前:はちみつ餃子 mailto:sage [2018/08/07(火) 15:24:28.59 ID:pMC2Ofi2.net]
江添っちはコード例はたくさん書いてるけど、
アプリケーションとして完成したものはひとつだけしか見たことねぇ。

今はドワンゴにいるし、社内で使うツールを書いたりすることもあるのかなぁ?

609 名前:デフォルトの名無しさん mailto:sage [2018/08/0 ]
[ここ壊れてます]

610 名前:7(火) 15:40:59.13 ID:3k81+fEr.net mailto: snprintfには第一引数をNULLにすることで本来何文字の領域があればよかったかを判断できるみたいだけど
wchar_tにはそのようなものはないだろうか?
[]
[ここ壊れてます]

611 名前:デフォルトの名無しさん mailto:sage [2018/08/07(火) 15:59:59.84 ID:8+yE0dxd.net]
>>570
もしかして先月の27日、行ってきたの?

612 名前:デフォルトの名無しさん mailto:sage [2018/08/07(火) 16:51:22.86 ID:rmdm0Ojo.net]
おう行ってきたぞ
内容は知ってる話が多かったけど本人の口から聞けて楽しかった

613 名前:デフォルトの名無しさん mailto:sage [2018/08/07(火) 20:17:28.47 ID:7soFSQAi.net]
int main(int argc, char** argv)
このchar**って他に変えれたりする?tcharとかwchar_tとか

614 名前:さまよえる蟻人間 mailto:sage [2018/08/07(火) 20:20:21.90 ID:p+v0mQmH.net]
Win32では、int wmain(int, wchar_t**)に変えられるよ。環境変数の引数も付けるのは変態かも知れん。



615 名前:デフォルトの名無しさん mailto:sage [2018/08/07(火) 20:21:20.30 ID:7soFSQAi.net]
>>592
wmainになるのね
助かります

616 名前:デフォルトの名無しさん mailto:sage [2018/08/07(火) 20:28:56.24 ID:rmdm0Ojo.net]
標準で認められてるmain関数はint main();とint main(int argc, char** argv);だけ
それ以外は処理系の独自拡張

617 名前:デフォルトの名無しさん mailto:sage [2018/08/07(火) 20:40:16.10 ID:8+yE0dxd.net]
>>590
何か変わったこと言ってたらレビューplz

618 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 00:08:10.74 ID:N8tx/Inn.net]
実は宗教的な会合ではなかろうか
教祖もしくは弟子・伝道者・教皇の御言葉を拝聴する、それが宗教だ

現状、全ての教祖・開祖が生きている時代なので、それを感じないだけだ
10年後くらいにはぼつぼつ死にはじめる
そこからが正念場だ

サイモン&ガーファンクルも生きてるし、K&Rも生きてる、ついでに、ビャーネ・ストロヴストルップとかESRも生きてる
21世紀の今がそういう時代というだけだ

619 名前: mailto:sage [2018/08/08(水) 00:15:12.33 ID:35SEMuEM.net]
>>596
デニス・リッチーは2011年に亡くなった

620 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 00:32:10.97 ID:bKO8QxvP.net]
イタコがふえるんやなぁ・・・。

621 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 05:08:18.88 ID:d90b/R1Y.net]
宗教だと? 失礼だな
俺は禿を盲信なんかしてねえよ
newなんかいらねえと俺は初版の当時から思っていたし
動的例外指定なんぞISOで否定されてんだぞ

622 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 05:53:47.96 ID:bKO8QxvP.net]
ジェネリックなメモリ確保はどのみち必要だと思うよ。構文がどうであれ。
あと、動的にコンストラクタとか呼ばないといけないし必要だと思うよ。
個人的にnewはライブラリ屋さんが使えばいいものだと思ってる。

623 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 06:09:55.58 ID:d90b/R1Y.net]
placementみたいのがあれば充分

624 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 06:18:49.25 ID:bKO8QxvP.net]
タイプ量増えて嫌カモ。
new T[] ってできるのは結構強いと思う。
まぁ、自分でやる事はないけど。



625 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 07:00:42.37 ID:/7C7gkY0.net]
A, Bそれぞれコンソールアプリケーションで作成
AがBをCreateProcessする状況を作成しました

Aを実行したらBの専用のコマンドプロンプトが立ち上がって次々に処理をするのかな?って思ってたのですが
実際はAが立ち上げたコマンドプロンプトにBも出力などしてます
これ分離することできないのでしょうか

626 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 07:11:53.05 ID:d90b/R1Y.net]
タイプ量って、それは現状の構文での話やん
コンストラクタを実行する構文がたとえば3文字のキーワードでできるなら
その主張は崩れる

627 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 07:12:46.84 ID:HlzHxdvD.net]
startコマンド

628 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 07:13:58.46 ID:EhLv0UZk.net]
CreateProcess で "start cmd /c B.exe" を起動するんじゃだめ

629 名前: []
[ここ壊れてます]

630 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 07:16:30.26 ID:d90b/R1Y.net]
template <typename T, typename ...ARGS>
T* create(ARGS ...args)
{
auto ptr = (T*)malloc(sizeof(T));
ptr->T(args...);
return ptr;
}
今C++をリメイクするならnewはクビだろ

631 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 07:29:04.25 ID:eb4eIp4R.net]
>>603
AllocConsole

632 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 08:30:47.37 ID:lcYbehB0.net]
メタプログラミングをやってみたいんだけど、テンプレートが中々難しい
みんなどうやって駆使してる?

633 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 08:31:50.27 ID:jzgqxY6J.net]
慣れ

634 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 12:14:27.90 ID:rnBqZLRU.net]
LPCTSTRをマルチバイトでもUnicodeでも対応して文字列操作するコードってどう書けば宜しいのでしょうか



635 名前:デフォルトの名無しさん [2018/08/08(水) 12:22:29.48 ID:oJrY5QK4.net]
>>611
関数名オーバーロード。それを応用するtemplate。の2つかな。

636 名前:さまよえる蟻人間 mailto:sage [2018/08/08(水) 12:22:37.74 ID:NS40+Y1c.net]
>>611
まず、#include <tchar.h>。
次にTEXTマクロ、_Tマクロの使い方を学ぶ。
さらに、<tchar.h>を見ながら、文字列関数呼び出しをジェネリックなものに置き換える。

637 名前:さまよえる蟻人間 mailto:sage [2018/08/08(水) 12:24:54.57 ID:NS40+Y1c.net]
必要に応じて#ifdef UNICODEを使う。

638 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 14:22:56.63 ID:oRJqApyO.net]
>>577
お前は未だにPhenomなんてガラクタ使ってるんだっけ
お前は無職だからそれでも恵まれすぎだけどな

639 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 14:33:18.94 ID:y2s3oWVB.net]
Phenomってガラクタだったんだっけ?
使い始めてそろそろ10年になるが
現在Windows10が動いているけどな

640 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 17:05:37.41 ID:5Rj4GrBF.net]
プログラムの板で、相手の使ってるハードウェアをネタに
悪口を言うのはよろしくないんじゃないか、と思ったけど、
アンカーの先を見たらそうでもないって気になった。

どうやら「固定ハンドルの人への攻撃はルール無用」という
より上位のルールがあるようだ(あくまで個人的な基準)。

641 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 17:11:27.46 ID:7VVPJa90.net]
>>617
ちょっとコテハンつけてくれないか?

642 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 18:09:52.75 ID:d90b/R1Y.net]
5ちゃんから入ったニワカ君だな
コテハン様は名無しより偉いんだよ
失礼のないようにね

643 名前: mailto:sage [2018/08/08(水) 19:20:38.29 ID:35SEMuEM.net]
>>615
よく知っているね、phenomIIx6 1090 で粘っていますよ、zen2 7nm にて大人買いしようと資金を積んでいます…

644 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 19:47:33.67 ID:y2s3oWVB.net]
>>620
おれはそのちょっと前のやつ

https://i.imgur.com/VvRofi2.jpg



645 名前: mailto:sage [2018/08/08(水) 20:17:40.85 ID:35SEMuEM.net]
>>617
>固定ハンドル
固定ハンドルじゃありません、トリップです!!

646 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 20:31:08.79 ID:foEj61l6.net]
ぬるぽ

647 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 20:33:39.72 ID:y2s3oWVB.net]
トリップ生成の種も後悔されているから、誰でもなりすませるかと

648 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 20:35:12.86 ID:foEj61l6.net]
好きな文字列をトリップにする枝

649 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 21:20:41.90 ID:IxvHxUWv.net]
>>611
Tに対応した文字列操作関数だけを使って操作するか、CT2W/CW2TでWに変換して操作するか実質二択。

650 名前:はちみつ餃子 mailto:sage [2018/08/08(水) 21:45:50.76 ID:X2pKT1V6.net]
>>623
ガッ

651 名前:デフォルトの名無しさん mailto:sage [2018/08/09(木) 06:46:59.99 ID:YmSdriT+.net]
>>622
ヌル文字列を固定ハンドルにして、
それに QZaw... ってトリップをつけてるのかと。

652 名前: mailto:sage [2018/08/09(木) 06:59:20.10 ID:pqAEhCoO.net]
テスト
◆QZaw55cn4c の酉って割れてるよね?

653 名前:はちみつ餃子 mailto:sage [2018/08/09(木) 17:44:07.59 ID:HZcgpX+K.net]
ワシのトリップもな。

654 名前:デフォルトの名無しさん mailto:sage [2018/08/09(木) 19:14:37.37 ID:oFkunHGA.net]
この前のローグ、標準ライブラリにメモリ確保お願いしてるのに中でNULLオブジェクトを操作して落ちるようになって詰んだ。。。
もういやー。



655 名前:デフォルトの名無しさん mailto:sage [2018/08/09(木) 19:46:32.29 ID:pqAEhCoO.net]
>>631
cpplintとかInferとかかければある程度は原因絞り込めると思うけど
Winじゃ導入が面倒か

656 名前:デフォルトの名無しさん mailto:sage [2018/08/09(木) 20:25:08.47 ID:oFkunHGA.net]
>>632
返信ありがとう。ヤル気がゴッソリぬけのたのでしばらく放置します。
特殊なこと全くやってないになんでこうなるんやー。
うぅ。。。

657 名前:デフォルトの名無しさん mailto:sage [2018/08/09(木) 20:59:37.47 ID:N7zY56wf.net]
>>633
メモリ管理の問題ということは、特殊なことをやってたかではなくて、基本的なことが正しくできてないということだよ。
プログラム初心者ならメモリ管理やポインタに煩わされない他の言語の方が良いかと思うよ。

658 名前:デフォルトの名無しさん mailto:sage [2018/08/09(木) 21:08:18.06 ID:pNZUF6kv.net]
まずはgoかjavaでもやったらいいんじゃないかね。

659 名前:デフォルトの名無しさん mailto:sage [2018/08/09(木) 21:16:17.87 ID:8qUg7w5I.net]
(ひっそりアップロードするんや…)

660 名前:デフォルトの名無しさん mailto:sage [2018/08/09(木) 21:21:51.13 ID:2CPDzClL.net]
>>633
バグって自分が絶対に大丈夫なはずと思っている箇所に潜んでいる
しばらく放置してから見つけると、意外に簡単に見つかる

661 名前:デフォルトの名無しさん mailto:sage [2018/08/09(木) 21:47:57.57 ID:dPMfUDyX.net]
gimpel の PC-LINTお勧め

662 名前:デフォルトの名無しさん mailto:sage [2018/08/09(木) 21:58:35.34 ID:jXGj01kj.net]
共有メモリでBSTR型のデータを共有してるのだけど
これのデータサイズ取得する方法ある?
対象領域の先頭ポインタを基準にSysStringLen使ってデータサイズとれるかな?って思ったがとれなくて困ってる

663 名前:デフォルトの名無しさん mailto:sage [2018/08/09(木) 21:59:33.60 ID:oFkunHGA.net]
>>637
正解。慢心してた。
とおった!!俺のせいだった。ごめんなさい。
なんでスマポのインスタンス自動確保されると思い込んでたんやろ。ここだけ。
ごめんなさい。ごめんなさい。ごめんなさい。。。、

664 名前:デフォルトの名無しさん mailto:sage [2018/08/09(木) 22:30:56.92 ID:BtZU6oOJ.net]
慢心と呼ぶべきか、脳内キャッシュを利用した最適化と呼ぶべきか。
しばらく放置することで脳内キャッシュが解放され最新データの利用が可能になる、ありふれた光景。



665 名前: mailto:sage [2018/08/09(木) 22:34:40.62 ID:rS9AJYq6.net]
>>641
私の場合は、しばらく放置しただけではダメで、リリース(公開)することを契機に問題点が不思議と浮き彫りになる、という感覚を持っています

666 名前:デフォルトの名無しさん mailto:sage [2018/08/09(木) 22:39:20.96 ID:BtZU6oOJ.net]
>>642
リリース(公開)する時の質問の文章を書くことで、脳内のメモリ配置が変わり、脳内キャッシュが破棄されたのでしょう。

667 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 01:22:05.57 ID:W2ty1llG.net]
>>639
https://www.artonx.org/collabo/backyard/?BasicString
bstrはちょっと特殊

668 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 02:28:33.68 ID:p9jfuJcV.net]
https://dotup.org/uploda/dotup.org1607631.zip
ふー。皆さまのおかげで、最初のAIが階段に到達するまでできました。
とはいっても想像するよりよっぽどチープだけどね。
やっとまともにデバッグできるようになったら、色々仕様変更したい病発動してジレンマに陥ってる。
特にトラップクラスいらねーんじゃね?とか思い出して、根幹を揺るがせつつある・・・。
というわけで、皆様どうもありがとう。

ちなみにgithubにも公開してるけど、ライセンスはmitなので煮るなり焼くなりしていいよ。
そんな酔狂な人間がいるか知らんし、多分

669 名前:同じコンセプトで書き直したほうがいいカモだけど。
githubはソース置き場にしてるだけからgitの操作さっぱりわからん・・・。Orz
[]
[ここ壊れてます]

670 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 03:17:37.39 ID:rT8gQk9M.net]
>>644
URLサンクス
もしかしてサイズ取れないと言うことだろうか

671 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 03:47:22.54 ID:B+R4+INY.net]
左様そう考えて差し支えない
ID:rT8gQk9M は近隣住民の安全のために、BSTRをもたず、つくらず、もちこませずを堅持すること

672 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 03:49:46.96 ID:p9jfuJcV.net]
https://ideone.com/eDOvCH
これで、Next保存する方法ないですか?
ダイナミックキャストだけかな?
継承したら自分の型忘れるのホント面倒。

673 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 03:49:53.40 ID:beAAeNyA.net]
>>645


674 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 04:01:00.88 ID:B+R4+INY.net]
>>648
保存(シリアライズ)のインターフェースをBaseに持たせてNextでNextの保存処理を実装したらいいんじゃね



675 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 04:06:44.82 ID:p9jfuJcV.net]
>>650
ゴメン。ちょっと舌ったらずだった。
各クラスが持ってるTypeに自分の型を保存する方法ないですか?
継承して記憶喪失になっても復元できるようにしたいのです。
システム内でちょくちょく必要になるのは俺がタコだからなんだろけど。
もちろん、ユーザーコードには見せないようにしますよ。

676 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 04:18:39.10 ID:B+R4+INY.net]
型を知りたいというならdynamic castが一番可搬性が高いやり方だと思うが
型を知りたいだけ、なんてことがあるのかどうなのか

普通はダウンキャストしたいという要求とセットのはずで、
ダウンキャストはインターフェースをゼロから周到に設計すればポリモーフィズムで解決できる
再設計をゼロからやれないときだけがdynamic_castの出番、という印象

※ 個人の感想です

677 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 04:35:15.48 ID:p9jfuJcV.net]
static_cast<DeleteAster<decltype(p)>::OldType*>(p)->OldTypeMethod();
的なことをやりたいのですよ。
システム制作者が完全に意思疎通してて型がどうなってるか周知って前提なんだろうけど、
継承したものをごっちゃにコンテナに入れたら破綻するんだよなぁ。。。
anyもいいなぁと思ったけど、結局キャストする手間は変わらない。むしろキャスト必須。
なくても何とかなるけど、余計なコード書かないといけないからスマートな方法ないもんかなぁ、と。

678 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 04:38:40.37 ID:p9jfuJcV.net]
動的に型を保存する型がほしい。

679 名前:さまよえる蟻人間 mailto:sage [2018/08/10(金) 04:42:20.85 ID:KaDy9gZn.net]
スクリプトすればぁ〜?

680 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 04:45:12.86 ID:p9jfuJcV.net]
ですよねぇ。。。はう。

681 名前:さまよえる蟻人間 mailto:sage [2018/08/10(金) 04:50:41.18 ID:KaDy9gZn.net]
usingとかtypedefとかtype traitsとかautoとか使へば、何とかできる気もするが、
さういうコードをなかなか書けぬ人はスクリプト言語へ行くへし。

682 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 04:58:16.48 ID:p9jfuJcV.net]
rustがレールに乗ればなぁ。
そういえば、anyはtype_infoを返すメソッドがあるのでので動的にチェックができるみたいだねぇ。
ないよりましだけど、確率になっちゃう。ぐぬぬ。

>>657
そうそう、できそうな気はするんだよね。うーん。。。

683 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 05:13:40.93 ID:B+R4+INY.net]
>>657
ID:p9jfuJcVの悩みはコンパイル時に解決できないからusingとかtypedefとかtype traitsとかautoでは_ぽ
(Base* pを扱うコードのビルドでコンパイラが常に*pの型がNextであることを見抜いたり、Nextの詳細を見通せたりするわけではない

というわけでポリモーフィズムでしか解決できん
ID:p9jfuJcVは、クラスごとに異なるOldTypeMethod()を呼び出すインターフェースCallOldTypeMethod()を設けて
BaseやNextそれぞれ毎に、適切なOldTypeMethod()を呼び出す実装を与えなさい

※ 個人の感想です

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]
ただ元からタプルがある言語と比べたら劇的に汚い仕上がりだよね



785 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 21:43:01.79 ID:3hlPfGdJ.net]
itest.5ch.net/test/read.cgi/tech/1528382412


前スレのURL違うくね
これがただしいっしょ

786 名前:デフォルトの名無しさん [2018/08/14(火) 02:06:11.13 ID:41LFYoyc.net]
>>758
何と比べてる?

787 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 02:50:24.34 ID:oCVPQ4uM.net]
そんなに汚いかねえタプル

788 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 03:32:08.59 ID:+lmSJTba.net]
演算子オーバーロードっぽいものを珍重するのはやめた方がいいと思うけどね。

789 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 08:20:26.94 ID:8F/Sy9ZI.net]
autoでしか受けられないのがイマイチかなあ
メインの戻り値は期待する型を明示したいことがある
エラーの方が何のenumかは知ったこっちゃないからautoにしたかったりするからややこしい

790 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 09:31:57.53 ID:oMbBbcEB.net]
無名の共用体と似たようなもので
構造体のメンバをバラで貰えるってだけやん

791 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 09:44:39.80 ID:fJuFDfsp.net]
型推論のautoを見て嘔吐

792 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 12:12:14.83 ID:9UC8tUq9.net]
C++のメタプログラミングって実際にはどうすればあんな複雑に書けるの?
自分は出来ても階乗を求めると型の判別くらいしか出来ない

793 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 12:16:05.35 ID:aWfB90DT.net]
まずは脳内バッファを増やす訓練からだな

794 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 12:26:17.71 ID:8F/Sy9ZI.net]
関数型言語を勉強するといいよ



795 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 12:41:59.55 ID:9UC8tUq9.net]
>>767
脳内バッファがなぜ必要?
>>768
そうしてみる‥
Lisp読んで見る

796 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 13:29:44.46 ID:z3VJK4Uc.net]
>>766
メタプログラムは今ほとんどconstexprに置き換えれない?

797 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 14:16:24.99 ID:9UC8tUq9.net]
>>770
確かに置き換えられるんだけど、それじゃあ普通のプログラミングと変わらなくて面白みが無いと思って‥

798 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 14:39:49.94 ID:vEMT9LA3.net]
>>770
型でメタプログラミングするとき困らんか?

799 名前:デフォルトの名無しさん [2018/08/14(火) 14:41:24.25 ID:UlU0qat0.net]
>>772
もちろんtemplateも使う

800 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 16:24:16.29 ID:oKGdiTQg.net]
>>760
特に何とは言わないけど

return (123, "456");
とか
return 123, "456";

みたいに現行のc++ではできないタプル表現のほうがすっきりして見える (個人の感想です)

801 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 16:31:09.91 ID:fJuFDfsp.net]
123には副作用が無いから最適化でreturn "456";になるんじゃ…

802 名前:はちみつ餃子 mailto:sage [2018/08/14(火) 16:32:25.07 ID:EPC9iky2.net]
>>775
「できない」って話だから……

803 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 17:01:49.73 ID:zHCh+0V6.net]
vector<object*>* list;
Fuga fuga;
Hoge* hoge;
for(int i = 0; i < 5; ++i)
{
fuga.fugaMethod(hoge->hogeMethod(list->at[i]));
fuga.fugaMethod(hoge->hogeMethod((*list)[i])); // エラー
}

リストの要素に対して全部処理をするっていうよくあるプログラムなんです。
なんですが、上の書き方だと通るのに対して、下の書き方だと「式にはクラス型が必要です。」と出ます。
vectorの要素指定はa

804 名前:t(i)を使うか括弧で指定するかの2通り、違いは範囲チェックを行うかどうかだけという認識だったのですが……
何がまずいんでしょうか?
[]
[ここ壊れてます]



805 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 17:10:49.55 ID:oMbBbcEB.net]
list->at[i]はまずいだろ
typoか? それとも本当にそう書いているのか?

806 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 17:27:33.05 ID:8F/Sy9ZI.net]
typoじゃないとしたら、上は通ってるんだから
hogeMethodの引数がobjectかobject&なんだろうな

807 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 17:31:42.31 ID:zHCh+0V6.net]
えーっとtypoじゃないです。
何がまずいんでしょうか。ポインタだしアロー演算子で問題ないのでは。
それとhogeMethodの引数はobject*ですね。抜けてましたすいません。

808 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 17:49:25.24 ID:K29Njy0m.net]
listの前の*が邪魔?

809 名前: mailto:sage [2018/08/14(火) 18:00:20.07 ID:5K5qKv3G.net]
>>777
vector<string *>::iterator list;
なら理解できるのですが、
vector<string *> *list;
というのが、よくわからないのです
プログラム例では list にすでに値が入っているようですが、実際には
list をどのように初期化しているのでしょうか?

810 名前:782 mailto:sage [2018/08/14(火) 18:19:15.36 ID:5K5qKv3G.net]
>>777
(*list)[i]
(*list).at(i)
list->at(i)
は等価であることを確認しましたが
list->at[i]
というのは逆にダメっぽいです
https://ideone.com/ripLji

list->at[i]
がどういう文脈なのか?
コンパイラがなになのか情報をください

811 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 18:27:08.03 ID:oMbBbcEB.net]
>>780
何がまずいって
listはvector<object*>へのポインタ
list->atはvector<object*>::atでメンバ関数
ここまではいいが
at[i]は関数に添え字だろ

こうやってんのと同じだぜ
void func();
func[1];

812 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 18:32:33.03 ID:9UC8tUq9.net]
なんでメンバ関数を配列にしたいのかかが気になる

813 名前:デフォルトの名無しさん [2018/08/14(火) 18:35:36.38 ID:zHCh+0V6.net]
あ、すいません、確かにat(i)はtypoでしたね。
ごっちゃになってましたすいません

814 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 19:46:01.17 ID:TB9AjC50.net]
>>786
> 確かにat(i)はtypoでしたね。
なら普通に両方コンパイルはできるはず
エラーになる最小限のコードにしてどこかにアップして



815 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 20:00:34.01 ID:aWfB90DT.net]
そんでだいたい最小化してるうちに気づくんだよなw

816 名前:デフォルトの名無しさん [2018/08/14(火) 20:01:24.90 ID:UKq+CNIv.net]
関数テンプレートの部分特殊化ってC++17でもできないの?

817 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 20:08:30.24 ID:HhG+br3u.net]
>>788
まあ本人気づくのが一番いいから

818 名前:782 mailto:sage [2018/08/14(火) 20:18:07.26 ID:5K5qKv3G.net]
>>790
寛大ですね…

819 名前:デフォルトの名無しさん mailto:sage [2018/08/15(水) 13:34:49.18 ID:bAZUebux.net]
>>789
できない

# いらんだろ、多重定義で同じ目的を達成できるから

820 名前:デフォルトの名無しさん mailto:sage [2018/08/15(水) 15:58:12.56 ID:/VaqEwQY.net]
関数の多重定義もクラステンプレートの部分特殊化でstaticメソッドを特殊化したら代替できるからイラン

821 名前:デフォルトの名無しさん mailto:sage [2018/08/15(水) 17:45:56.30 ID:bAZUebux.net]
>>793
どゆこと?

たとえば
int abs(int);
double abs(double);
を、
クラステンプレートの部分特殊化でstaticメソッドを特殊化つーと
template <typename A, typename B>
struct num;
template <typename A>
struct num<int>
{
static int abs(int);
};
template <>
int num<int, int>::abs(int arg)
{
return arg < 0 ? -arg : arg;
}
みたいなことすんのか?

822 名前:デフォルトの名無しさん mailto:sage [2018/08/15(水) 18:07:46.14 ID:GkoLimxd.net]
普通は関数オブジェクトにするんじゃね?auto operator()(...);

823 名前:デフォルトの名無しさん mailto:sage [2018/08/15(水) 18:46:53.07 ID:GkoLimxd.net]
あ、余計なこと言った。
https://dotup.org/uploda/dotup.org1613077.zip

824 名前:デフォルトの名無しさん mailto:sage [2018/08/15(水) 18:48:12.11 ID:GkoLimxd.net]
うご、投稿してモータ。
例のローグのシステムが大分できたのでなんとなく投下してみた。
汎用AIってどうやって書けばいいんや?
しかも、まだバトルシステム作ってないし。



825 名前:デフォルトの名無しさん mailto:sage [2018/08/15(水) 19:02:43.98 ID:GkoLimxd.net]
ところで質問なんだけど、パスファインディングってサービスとして入れたほうがいいのかなぁ。。。

826 名前:デフォルトの名無しさん mailto:sage [2018/08/15(水) 22:40:01.74 ID:QxvGNpoJ.net]
>>766です
C++テンプレートメタプログラミングという本を買ってみたのですが、この本C++BoostのMPLの解説本です
C++17がある今、この本の価値ってあるんでしょうか?
一応全部読んでみようと思ってるのですが

827 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 07:25:03.80 ID:t6OwQxX1.net]
>>799
> 一応全部読んでみようと思ってるのですが
読んでみてから判断すれば?

828 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 08:19:40.35 ID:NceGg90N.net]
多分聞きたいのはこれ読んだらオラついていいですか?ってことだと思う。

829 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 08:50:47.25 ID:MDl/UAh8.net]
>>800
>>801
すみません
Boostを使わず、mplを使わないのでメタプログラミングするのが目的なので、それがこの本を読んで可能なのか?という質問の趣旨です

830 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 09:51:57.97 ID:t6OwQxX1.net]
>>802
> Boostを使わず、mplを使わないのでメタプログラミングするのが目的
そんな明確な目標あるのになんでこんな本買うかなぁ
ちょっとググればこんな意見が見つかるだろうに…

ちょっと文章が直訳っぽくてところどころ不自然だけど,丁寧にBoost.MPLの実装(と使い方)について解説してあってとても分かり易い!
d.hatena.ne.jp/eldesh/touch/20100412/1271090614

831 名前:はちみつ餃子 mailto:sage [2018/08/16(木) 10:25:53.58 ID:f3MTrlhW.net]
>>802
メタプログラミングを活用すればこういうことも出来得るという事例集として見れば無駄ではないと思うが、
それを読んでメタプログラミングが出来るようになるかというと否だと思う。

832 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 12:02:41.09 ID:MDl/UAh8.net]
>>803
この本を買ったのは高橋晶のC++11対応のテンプレートテクニックって本を読んで、巻末に本の紹介があって、メタプログラミングについて知りたいならこの本を読むべきって書かれてあって、読むことにした
そのブログはすでに読んである
>>804
メタプログラミング自体はどうすれば出来るだろうか?

833 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 12:37:43.15 ID:jOS7jxfN.net]
魔除けとして重宝している

834 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 12:41:22.12 ID:lxkNuozk.net]
> そのブログはすでに読んである
私はバカです
って言われても…



835 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 13:19:15.31 ID:MDl/UAh8.net]
>>806
売ることにします‥
>>807
もう日本人に頼るのは辞めました
そもそもWG21から情報を検索したほうが有意義かも
これからは日本語のプログラミング書籍は買わない方がいいって教訓になりました

836 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 13:24:07.84 ID:AI90/kCO.net]
捨てゼリフ来たね
そろそろご退場かな
総員塩の用意

837 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 13:27:57.29 ID:MDl/UAh8.net]
>>809
いやだって日本人でC++やってる人少ないじゃないですか(´・ω・`)

838 名前:はちみつ餃子 mailto:sage [2018/08/16(木) 13:47:10.99 ID:f3MTrlhW.net]
>>810
んなこたーない。

839 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 14:10:22.64 ID:yO9+GMaw.net]
「少ない」に比較がついてないから何とも言えない

840 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 14:34:47.46 ID:jOS7jxfN.net]
やっぱPerl人口が一番多いと思うのねん
その次がPHP

841 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 16:39:09.24 ID:TxXnQ6gb.net]
英語をスラスラ読めるなら「遅い・高い・分かりにくい」の
和訳版を買うことはないわな。
原書ならPDF版がタダでネット公開されてたりするし。

842 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 20:44:21.68 ID:JF8AnYsh.net]
>>799
前半とこどこBoost.MPLの設計理念とかどう実装されてるかとか書いてあるから、そこは参考になると思う
後半のTMP関連のテクニックはおそらく求めているものではないかと
ExpresionTemplateの実装にあまり踏み込まないけど、どのように誤用されているかは少し参考になった

843 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 11:29:50.85 ID:lqMuboYf.net]
https://wandbox.org/permlink/TC3VtzZ4Dd53Z1Y4
こういうコード書きました。
UIはとりあえず置いといて、Jsonの構造ってこんな感じでいいのでしょうか。
ご意見あったら教えてください。

844 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 11:54:52.92 ID:BEBC5Dle.net]
あの初歩的な質問で申し訳ないんですけど、クラスのメンバ関数のことです
例えばAってクラスがあって、hogehogeって関数があったとします
それでhogehogeは内部で関数を3つ呼び出す。ざっとこんなイメージです

A.h
class A
{
public:
void hogehoge();
}

A.cpp
void A::hogehoge()
{
x();
y();
z();
}

main.cpp
main()
{
A a;
a.hogehoge;
}

んでこの場合の関数x() y() z()なんですけどクラスAのメンバ関数にすべきなんでしょうか。
それとも単にA.cpp内に関数書くだけでいいんでしょうか。
x()y()z()はhogehoge以外から呼び出されることはありません。
自分は前者だと思うんですが、参考にしろと渡された前任者(今いない)のコードだとなんでもかんでもメンバ関数です。
よろしくおねがいします。



845 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 12:01:22.82 ID:BEBC5Dle.net]
あ、すいませんhogehogeではxyzを呼び出す以外にも処理を行うものとします
そうでないとxyzをメンバ関数にしてhogehogeなくせってことになるので

846 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 12:17:52.69 ID:TtX4VAeH.net]
> x()y()z()はhogehoge以外から呼び出されることはありません。

だったらラムダ式じゃね?
auto x = [this]{};
auto y = [this]{};
auto z = [this]{};

847 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 12:27:19.70 ID:6wrElEJt.net]
>>817
どっちでも良い
というか時と場合によってどっちにすべきかが違う

848 名前:デフォルトの名無しさん [2018/08/17(金) 12:29:57.76 ID:JC8oBFgD.net]
メイヤーズは独立できるならメンバにせずに関数にしろって言ってた

849 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 12:31:59.93 ID:PQea+QN+.net]
言語処理ってphythonとC++どっちが向いてる?

850 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 12:37:52.08 ID:lqMuboYf.net]
処理内容によると思う。
一応、自分は、protectedのメンバ関数にするかなぁ。

851 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 12:49:54.76 ID:UZUA85Xq.net]
>>822
漠然過ぎてどうとも
ゼロから書く気はないんだろうから試行錯誤するのも含めてPythonのほうを勧めるよ

852 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 13:08:34.93 ID:KaaDwp63.net]
>>817
関数にできるってことはメンバ変数の参照とか他のメソッド呼び出しがないんだよね
なら関数にした方が微妙に速度が稼げる(thisを渡さずに済むから)
各々一回しか呼ばないなら呼び出し箇所に展開しても良いような気がする

853 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 13:39:31.71 ID:BEBC5Dle.net]
参考になりました。皆様ありがとうございました。
effective C++のメイヤーズ先生に従い、通常の関数にすることにします。

……あれ、そうするとその関数群だけで使う共通の変数ってメンバ変数にすべきなのかcpp冒頭で宣言してグローバル変数にすべきなのか
いやぁ難しいですね

854 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 13:59:24.66 ID:IJ2e6Mcr.net]
データメンバーにしなさい
グローバル変数は悪である



855 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 14:21:39.44 ID:TtX4VAeH.net]
>>826
「共通の変数を使う関数群」をクラス化するんだよ
そのためにあるんだから

856 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 15:10:01.00 ID:ujK6h2XS.net]
>>826
> ……あれ、そうするとその関数群だけで使う共通の変数
いや、そんなもんがあるならメンバ変数にするか、それらを構造体とかにまとめて引数で渡すとかしなよ
ファイルスコープだとしても今時グローバル変数は無いわ

857 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 17:26:14.63 ID:xjFqJl5K.net]
いまどきグローバル変数を使うおとこの人って…

858 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 17:26:59.41 ID:PQea+QN+.net]
>>824
ゼロから書く気はある

859 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 17:32:51.82 ID:uIPUTYG+.net]
「すべての男はグローバル変数である」

860 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 17:33:46.61 ID:6wrElEJt.net]
わたし女だけど

861 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 17:41:55.00 ID:mGHQIGDT.net]
クラスのstaticメンバにすりゃええんちゃうのん?

862 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 17:52:51.84 ID:TtX4VAeH.net]
わざわざstaticにする強い理由があればそうするが
消極的な選択なら非staticのほうが何かと楽だぞ

863 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 17:54:48.35 ID:xjFqJl5K.net]
staticおじさん、再び

864 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 18:06:46.13 ID:H85EoLGL.net]
ちょうど気になる話題だから聞くけど
OpenCVで1つの画像データを複数の関数で扱う場合って、引数として渡すのとグローバル変数として定義するのってどっちが良いのかな?(速度とかの面で)

無限ループで毎フレーム毎にWebカメラから読み取った画像を(グローバル)変数に代入するからそこでの速度とかメモリ管理の差とかあるのかな?



865 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 18:08:23.37 ID:UZUA85Xq.net]
>>831
そこまでして再発明したいんなら言語なんて何でもいいんじゃね?
ちなみに素養はお持ちなの?
そういう研究してたとか

866 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 18:09:24.28 ID:ABziGu/h.net]
>>833
オカマはだまってろw

867 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 18:09:55.69 ID:UZUA85Xq.net]
>>831
あ、読み違えた
自然言語処理ではないんだね
何かのパーサーでも書きたいんですかね?

868 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 19:04:11.30 ID:/oSEwJ0G.net]
>>837
OpenCVのMatなら何も考えずにコピーすると浅いコピーになる
浅いコピーのコストが問題になるならグローバルなりメンバなりにする方がいいのでは

869 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 19:06:50.86 ID:6wrElEJt.net]
何で浅いコピーだよ
普通はポインタか参照だろ

870 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 19:10:12.86 ID:IJ2e6Mcr.net]
cv::Matがスマポみたいなもんだということを知らずにチャチャ入れてるなら黙ってたほうがいいよ

871 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 19:17:25.23 ID:6wrElEJt.net]
そんな事はしっている
目の前に浅いコピーって書いてあるし

浅いコピーよりも当然参照やポインタ渡しの方が速い
当たり前だ
sizeofでcv::Matのサイズを調べてみろ

構造体やクラスを渡すのに深い浅いに関わらず
コピーなんか使うなよ

872 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 19:28:06.57 ID:KaaDwp63.net]
>>837
> (速度とかの面で)

早すぎる最適化は諸悪の根源である

  ドナルド・トラン…
  じゃなくてクヌース

873 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 19:44:40.54 ID:0e7dWRcF.net]
今更になって>>825で言ってくれたことが理解できた
クラス内でメンバ変数使おうとするとメンバ関数じゃないとだめなのね。普通に分けたただの関数からじゃ呼べなかった
えーこういうもんなのか

874 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 19:55:12.57 ID:RgiGOjCt.net]
cv::Matとcv::Mat*のコピーコストの差を気にするくらいならデリファレンスのコストも気にしなきゃな。



875 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 20:02:22.24 ID:IJ2e6Mcr.net]
844はunique_ptrやshared_ptrも参照渡ししてそう

876 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 22:11:59.07 ID:6wrElEJt.net]
>>847
構造体やクラスだと
ポインタや参照がデフォなんだよ

とりあえずポインタ、参照で渡す事を考える
これでは困る時にはじめて他の方法を考える

わざわざ無駄に重くしなくて良い
コードサイズも実行時間も使用メモリも増える
悪いことしかない

877 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 22:28:22.24 ID:p6eculQx.net]
>>838
世の中の殆どは再発明の繰り返しではないか
そこから新しいものが生まれる
>>840
機械学習、音声言語処理に興味ある
生成や知識獲得とかも

878 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 22:33:47.04 ID:rVfGTX61.net]
とりあえず車輪からだな

あっそれロン。大車輪で役満です

879 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 23:28:39.10 ID:2sBNjScG.net]
ユーザーの実行コストを考えたらC++しかありえない

880 名前:さまよえる蟻人間 mailto:sage [2018/08/17(金) 23:29:57.49 ID:L+nRWRoK.net]
>>852
Rustを知りませんか?

881 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 23:48:03.15 ID:3F ]
[ここ壊れてます]

882 名前:you0AL.net mailto: >>848
間違って通常のポインタを引数に指定されないよう、共有ポインタの参照を引数にすることはあり得るでしょ。
[]
[ここ壊れてます]

883 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 23:49:26.53 ID:2sBNjScG.net]
RustはいつになったらC++を殺すんだ?

884 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 02:00:38.26 ID:/pVEXQTC.net]
https://github.com/rust-lang/rust/issues
エラーが4000件だから、しばらく無理。



885 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 10:32:16.38 ID:zXZq/jKJ.net]
Visual Studioのデバッグ実行ってクラッシュとかしてもコードのどこでクラッシュしたかを示してくれるのですごく便利なんですが、
ただでさえ重めだった実行が、2015から拍車がかかり、かなり使いにくくなってしまいました。
どうもvector等のSTLの範囲チェック等が重たいとのことで、たしかにSTLの使用割合が多いアプリほど重たい傾向にあります。
たしかに範囲チェックはありがたいのですが、多少デバッグ能力を妥協して動作を軽くできないでしょうか?

理想はデバッグ機能をカスタム実装してリリースモードで動作でしょうけど、
予想できないクラッシュ等に対応するのが難しいと思います。

ご助言、よろしくお願いします。

886 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 12:38:36.62 ID:C9f4IyR8.net]
>>857
IDEに頼るな
vimを使え

887 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 12:58:55.58 ID:qRHlEVCy.net]
理想は平均的な性能のPCを買うことかな

888 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 13:48:15.95 ID:9bYd+OzJ.net]
>>857
https://msdn.microsoft.com/ja-jp/library/hh697468.aspx

889 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 15:07:37.45 ID:T6klohyz.net]
質問ですが
class Foo {
public:
  int a[100];
  Foo();
};
というクラスにおいて、構築時にメンバa[]をゼロ初期化する簡単な書き方はありませんか

ちなみに
Foo::Foo() : a({ }) { }
とやったらエラーになりますた、

890 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 15:27:11.61 ID:/pVEXQTC.net]
https://ideone.com/BuNLLF
こう?

891 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 16:07:29.18 ID:cIuR0GWn.net]
普通に書いたらええがな。

Foo::Foo(){
for(int i=0; i<100; i++){
a[i] = 0;
}
}

892 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 16:21:12.10 ID:T6klohyz.net]
レスdクス、

>>862
申し遅れましたがやpっぱC++11では_ですかそうですか…

893 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 16:59:01.67 ID:/pVEXQTC.net]
初期化法自体はC言語からある方法だけど。
構文はC++だけどね。

894 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 17:03:27.71 ID:/pVEXQTC.net]
あー、そうなのね。あれって環境依存だったのか。ゴメン。

https://wandbox.org/permlink/ASJ3oCbkha0Ren8B



895 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 17:32:50.09 ID:dGIgNVTb.net]
>>859
平均的じゃ足りんだろ
VMwareとか使いまくるには
RAMとHDDがたんまりないと心許ない

896 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 17:34:51.43 ID:WtnFgJ11.net]
Foo::Foo() : a{ } { }
でええやん

897 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 17:36:04.82 ID:dGIgNVTb.net]
>>861
Foo::Foo() : a{ } { }

898 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 17:36:29.52 ID:/pVEXQTC.net]
>>868
そんなことできたのかぁー。うぼぁー。

899 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 17:36:36.32 ID:dGIgNVTb.net]
あ、被った
すまんこ

900 名前:さまよえる蟻人間 mailto:sage [2018/08/18(土) 17:36:58.77 ID:ONgNSdiS.net]
今時はSSDだろ。SSDにデータ移行しなよ。VS2017が数秒で起動するぜ。

901 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 18:54:50.29 ID:dGIgNVTb.net]
うんC:はSSD一択だね
できればSLCのやつ

902 名前: mailto:sage [2018/08/18(土) 19:32:14.99 ID:/9y7PjMS.net]
>>872
何もかもがめんどくさっくて、C ドライブになんでもたんまりと仕込むのが好きなんですが、
1TB くらいある SSD ってお高いんでしょう?

903 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 19:49:21.94 ID:Q0JvwYe1.net]
最近は途中にマウント出来るのよ

904 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 19:55:17.69 ID:gititOy1.net]
>>874
例えば、だが
Crucial SSD 1000GB MX500 内蔵2.5インチ 7mm ¥23,738



905 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 21:21:58.94 ID:F905Yoig.net]
理由はわかるが柔軟性が欲しい

class A{
};
class B: public A{
};
temaplate<typename T>
void test(T a, T b){
}

A a;
B b;

test(a, b);//Error.型が一致しない。
test<A>(a, b);//ok.明治すればok

906 名前:さまよえる蟻人間 mailto:sage [2018/08/18(土) 21:38:06.56 ID:hlXM+cNJ.net]
型を分けて、共通型を使えば?

907 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 23:59:13.75 ID:3zCcdQf6.net]
>>874
きみなら一時間とは言わないが、一日でそのくらい稼ぎ出すんやろ?

908 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 00:05:39.35 ID:RqnFNWUi.net]
>>878
こうすればokというのはわかるけども面倒
template<typename LT, typename RT>
void test(LT const& a, RT const& b){

}

909 名前:857 mailto:sage [2018/08/19(日) 01:30:39.96 ID:KCtnHGyc.net]
>>860
ありがとうございます!
これでやってみます!

>>858
vim、興味深いですが、慣れるまで時間がかかりそうですね^^;

910 名前:デフォルトの名無しさん [2018/08/19(日) 09:02:49.22 ID:qd68oMAq.net]
じゃあメモ帳で。

911 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 09:12:46.20 ID:qaYG8ur7.net]
notepad++かサクラエディタ

ttps://forest.watch.impress.co.jp/library/software/notepadplusp/
ttps://sakura-editor.github.io/download.html

912 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 09:25:18.62 ID:wM6XArJ0.net]
vim は、

迷ったら、Esc を押して、コマンド入力モードにする。
そこで、a を押せば、append 文字入力モードになる

:q! 保存せずに終了
:wq 保存して終了

913 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 09:26:24.72 ID:xXXJlhyc.net]
今は spacemacs 以外あり得ないよ

欠点が厳密にゼロ個な完全なチョイス

914 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 09:40:59.64 ID:0vPM1br5.net]
最近はVSCodeが使い物になってきたぞ
CMakeとの連携も賢い
補完がまだ遅いが



915 名前:857 mailto:sage [2018/08/19(日) 10:56:19.69 ID:KCtnHGyc.net]
自分はサクラエディタを10年以上愛用しています。
VisualStudioはコンパイラ兼デバッガとして利用してます。

916 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 14:03:03.06 ID:5+hPFDRj.net]
俺の main.cpp が 9万5千行 を超えた
ファイルサイズにして2.37MBある
クラス内でなら前方参照が可能なC++の盲点をついて
適当な struct でプログラム全体を丸ごと囲って
前方参照しまくり & ヘッダに全部書くスタイルで
一つのファイルに全部押し込めた
C++サイコー

917 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 14:03:58.10 ID:5+hPFDRj.net]
ちなみにコンパイルが遅くなるのと
コード補完が重くて使い物にならなくなるので
素人にはお勧めしない

918 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 14:13:18.08 ID:MSEMVqOe.net]
キモイコードだなぁ。メンテナーが泣くぞ。

919 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 14:20:44.33 ID:5+hPFDRj.net]
大丈夫
サンデープログラマーで俺一人だけしか書かないから
ソースコードも公開してないしな

920 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 14:22:38.72 ID:RqnFNWUi.net]
なんのプログラムを書いたらそうなるんだ・・・

921 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 14:58:05.30 ID:0c0A7VGq.net]
>>888
キモすぎやろ…

>>891
見してくれ

922 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 15:04:46.82 ID:5+hPFDRj.net]
こういうのは怖いもの見たさみたいなのもあると思うし
これだけでコンパイルして動くものでもないので一応ソースコード
あまりにもアレで、そっ閉じだろうけど
www.geocities.jp/notenop/tomato_player/main.cpp

コンパイル済みのソフトは
www.geocities.jp/notenop/tomato_player/index.html
からダウンロードできる

非同期処理に俺が思いついた横断的でトリッキーなアイデア
https://qiita.com/notenopg/items/40571e69986a58b888a0
↑が使われている
安全にキャンセル出来なきゃ await の意味ないでしょ!ってなもんで
でもなかなか理解されないんだよなぁ、すごいアイデアだと思うんだが

それからツリービューのアイテムのピン止めのアイデアは
お気に入りやタブの代わりになって画期的だと思うんだが
何故マイクロソフトがエクスプローラに実装しないのか謎
特許関係かね
あとはフォルダ階層をそのまま扱える木構造なプレイリストとか

そんなことやってたら9万行超えました
ちなみにUIはDirectXでちまちまフルスクラッチで手書き
その代わりその辺のソフトに負けない速度で、4K対応

923 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 15:07:41.51 ID:5+hPFDRj.net]
庶民には理解できなくても
プログラマであるあなたたちなら
ピン止めできるツリービューが如何に画期的か理解できると思うんだよね
タスクバーでも何でもピン止めの時代なのに
ツリービューもピン止めできて良いと思うのよね

924 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 15:09:21.21 ID:5+hPFDRj.net]
ああ、ツールバーとかスクロールバーとかのレベルで
全部フルスクラッチでDirectXで手書きだから



925 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 16:00:06.94 ID:RqnFNWUi.net]
庶民なる俺様にはピン留出来ることの利点がわからん

926 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 20:23:08.28 ID:qaYG8ur7.net]
サクラエディタが優秀だということは分かった

927 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 21:38:13.69 ID:Vpx5N+CG.net]
見て欲しくて我慢できなかったんだな

928 名前: mailto:sage [2018/08/19(日) 22:28:08.34 ID:bW/fB7v7.net]
>>711
https://www.amazon.co.jp/dp/4871481689/

929 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 08:03:46.47 ID:4c85aa3D.net]
>>900
Makeって何?

930 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 14:14:50.32 ID:PcIDGZDw.net]
>>901
来年にはSunOSにも移植される予定の超最新自動ビルドツールの紹介だよ!

931 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 15:49:07.20 ID:YVC1gYT/.net]
>>901
オライリーがおかしな実験をする本だよ

932 名前: mailto:sage [2018/08/20(月) 18:47:45.43 ID:VU5jvdn2.net]
>>901
昔から使われている原始的といってよいビルドツールです
makefile に依存関係を書いておいて、コマンドラインで「 make -j」と起動すると、記述した依存関係にしたがってコンパイル・リンクが行われます

933 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 18:59:55.06 ID:ftO9aq8g.net]
Linuxなんかで配布されたソースから実行ファイルを作成したいって時にお世話になります

934 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 20:29:15.33 ID:MlhHAxXO.net]
>>904
この本を読めばコンパイルについても分かるの?



935 名前: mailto:sage [2018/08/20(月) 20:46:46.88 ID:VU5jvdn2.net]
>>906
>>900 は make を C で記述するものであり、コンパイル自体について記述するものではありません

936 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 23:46:22.40 ID:qkN29+U3.net]
クラス生成に挫折したのかな?w

937 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 00:03:12.90 ID:Y1eCmHG/.net]
C++自体の本はたくさんあるのにビルドやプロジェクト構成について解説した本って全くないよな
コピペで受け継いできた秘伝のMakefileやconfigureが蔓延してるのなんとかしてくれ
売れないだろうがCMakeの解説本が一冊欲しい

938 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 00:06:59.04 ID:FygfW+En.net]
cmake はつい最近のVisual Studio 2017アップデートで標準インストール

939 名前:ウれるようになったから潜在需要あるかもね…。 []
[ここ壊れてます]

940 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 00:51:54.00 ID:zakr4cIe.net]
なんでビルドツールっていつも怪物化しちゃうんだろうな
makeがもう誰も手に負えない怪獣のくせにずっと定番に居座ってて、「Makefileを作るツール」が乱立してそれぞれ怪物化してるの勘弁してほしい

941 名前: mailto:sage [2018/08/21(火) 01:03:38.38 ID:Wpz7rvAB.net]
>>911
>makeがもう誰も手に負えない怪獣

make ですら怪獣になるのだったら、他の高機能ビルドツールはとっくに破綻している現状だったのか!と、ふと

942 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 01:35:58.44 ID:mIqstMqN.net]
makefileなんて複雑な事求めないなら手でかけるレベルだよ
これが複雑で手に負えないとなると、プログラミングも怪しくなる

943 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 01:36:31.95 ID:Y1eCmHG/.net]
ビルドについての教育がないがしろにされてるのが全ての元凶
ある程度以上の規模のプロジェクトを構成するベストプラクティスが示されているところを見たことがない
適当に好きなところから取ってきて動けばいいやくらいに改変して使ってるのが現状

944 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 07:06:57.27 ID:agJOmNk0.net]
丁寧に書いてるのはこれくらい。

ttp://aegis.sourceforge.net/auug97.pdf



945 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 11:19:53.91 ID:zakr4cIe.net]
複雑なことをしたいからビルドツールを使うわけでしてねぇ・・・

946 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 11:24:41.92 ID:mIqstMqN.net]
したいという意思があるなら、がんばって理解も出来るだろう
そこまでしなくても、最低限のルール覚えれば使える

947 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 11:53:12.22 ID:gERn4ySS.net]
>>915
goto有害説をもじってるんだなw

Makefileを書いていていつも思うのは
ソースファイルの依存関係はソースファイルの中に書いてあるのに
それをまた二度手間で書かねばならないのがイヤ
面倒くさいのはともかく間違えやすいから

948 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 12:20:54.13 ID:JvEAafEP.net]
>>918
automake とか gcc -MM とかの話?

949 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 12:38:18.13 ID:Dn6CvPAP.net]
rustとc++どっちも使ってる人いる?

950 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 12:59:21.72 ID:gERn4ySS.net]
>>919
gcc -MMか、いいこと聞いた
ありがとう

951 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 13:56:49.24 ID:Y1HyydAv.net]
>>919
詳しい解説サンクス
こんなのがあったのか

952 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 16:55:02.40 ID:59eaeAGG.net]
>>917
ここで根性論とはセンスあるわ
もちろんエンジニアでなく笑いの

953 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 17:26:56.17 ID:/1sxYxCd.net]
エンジニアでなく園児にゃ

954 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 19:40:42.98 ID:Y1eCmHG/.net]
WindowsでCMakeはfind_packageでだいたい詰む
vcpkgで対応できなければ結局自分で書くはめになり、面倒くさくなってmingw使うかVSのプロジェクトと同居することになる



955 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 16:26:31.16 ID:BT6ndhEb.net]
C++ とは直接関係ないけど make/Makefile は擬似ターゲットを使って
バッチ的な定型処理を1個のファイルでまとめて管理できるのが便利でね。

make find WORD=...
全ソースから WORD= で指定した単語を含む行を検索、みたいな。

自分で作った便利ターゲットの使い方を usage: に書いとくのを忘れるけど。

956 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 17:38:28.37 ID:ua+EoSC8.net]
>>926
perlでok

957 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 19:10:59.67 ID:lMaJ9TV4.net]
C言語のビルドシステムならC言語で書けるようにするべきだと思うのだがよく分からない専用の言語を使わされるのは何故
この手のスクリプト言語は可読性がデバッガもないから中身を探るのが難しすぎる

958 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 19:27:23.21 ID:J6lVaoNe.net]
君がそれを作って公開してみれば良いと思うんだが

959 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 20:50:10.20 ID:4/HlUcDP.net]
C++のビルドツールといえばboostでお馴染みのbjam
実質boost専用に作ってるだけなのにあんな聳え立つ糞の山になっちゃうんだからビルドツールって怖いね

960 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 22:31:38.77 ID:G7PvCZFg.net]
ソフト名がまだ決まっていないけどプログラム開発がスタートするって一般的だと思うんですが、
こういうときってコードネームを付けますよね?
このとき、VisualStudioのプロジェクト名もコードネームにしますよね?

アプリのウィンドウキャプションとかはアプリ名が決まり次第反映させられますけど、
プロジェクト名は途中で変えられないので、そのままになってしまいますが、しょうがないですよね?

要は社内の開発で問題なければOKで、
リリースしたときにコードネームがどこかに混じってしまわないように気を付ければいいだけですよね?

みなさんがどうされてるのか気になったのでお聞きしました。

961 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 23:03:51.57 ID:4/HlUcDP.net]
必要なら変えるよ
slnやvcxprojはただのxmlだから名前変えるだけならそんなに難しくない

962 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 00:06:20.88 ID:0/a4zf/K.net]
英国ポエムシリーズでしょう
bjam=ブージャムは言うまでも無く、パンジャンドラムすらも無論英国のポエムから採られた
他にも兵器界隈ではスナークとかが存在するのは周知の通り

日本だと仏教用語から採ればいいんじゃあないですかね

963 名前:931 mailto:sage [2018/08/23(木) 00:10:54.70 ID:U43QDDsh.net]
>>932
なるほど〜、プロジェクト関連ファイルを編集することで名前を変えることはできるんですね。
なら気兼ねなく最初はコードネームにしときます。
ありがとうございました^^

964 名前: mailto:sage [2018/08/23(木) 22:00:21.31 ID:NMfUyUL+.net]
std::ref() について教えてください

void f(:ostringstream &os) { ... }
int main() {
ostringstream s;
std::thread(f, std::ref(s));
...

とありましたが、なぜ呼び出し側で「おまじない」のstd::ref() が必要なのか理解できません
どんなときに呼び出し側で std::ref() が必要なのでしょうか?

テンプレート関係かと思いましたが
https://ideone.com/7fF53F
は問題なく、std::ref() が必要となるプログラム例を思いつくことができません

よろしくお願いいたします



965 名前:さまよえる蟻人間 mailto:sage [2018/08/23(木) 22:17:07.10 ID:Z2Fii0dD.net]
std::refの規格表とソースを見たか?
余計なコピーを抑制してるんだ。

966 名前:さまよえる蟻人間 mailto:sage [2018/08/23(木) 22:18:22.48 ID:Z2Fii0dD.net]
s/表/票/

967 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 22:33:14.61 ID:/6RK1Hlx.net]
非参照なテンプレートな引数に一時変数を作らずに参照を渡せる

968 名前: mailto:sage [2018/08/23(木) 22:52:37.79 ID:NMfUyUL+.net]
>>938
コメントありがとうございます
コピーコンストラクタが禁止されている std::cout をテンプレート引数にわたす場合で理解できました(かもしれません)
https://ideone.com/3eqEJY

一つ質問ですが、私なら、このプログラム例の y()
template<class T> void y((*f)(), T &os) { ... }
のように、テンプレートを書く時点で参照に書いてしまうのですが、
あえて非参照なテンプレート引数を書く「便利さ」みたいなものはありますでしょうか?

969 名前:デフォルトの名無しさん [2018/08/24(金) 02:37:15.13 ID:kcQyW4E+.net]
大阪はいたって平和
しょぼいにもホドがある

970 名前: mailto:sage [2018/08/24(金) 03:55:21.10 ID:A5L5xSI8.net]
>>939
>あえて非参照なテンプレート引数を書く「便利さ」みたいなもの
std::thread のコンストラクタを眺めていて気が付いたこと…これ、可変長テンプレートですね

971 名前: mailto:sage [2018/08/24(金) 04:17:14.78 ID:A5L5xSI8.net]
x86 の cmpxchg を使いたくて、gcc 拡張の __sync_val_compare_and_swap() を試していました
shinh.hatenablog.com/entry/20060817/1155781747
https://ideone.com/tpefmL

c++11 に std::atomic::compare_exchange_weak() を見つけましたが、これは適当に(任意に) new で確保したヒープにも適用できるものでしょうか?

972 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 07:59:06.64 ID:ZkSPfVdV.net]
何で出来ないと思うの?

973 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 08:53:09.59 ID:/11s7nnG.net]
template <typename T, typename... ARGS>
class nested_error : public std::nested_exception, public ARGS...
{
public:
nested_error(T const& t, ARGS const&... args) : T(t), nested_error(args...) //C3511
{
}
nested_error(T const& t) : T(t)
{
}
};
何かうまい手ない?

974 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 13:51:57.64 ID:rL3qzGy6.net]
そりゃまー、実体化した内部ではTは決定済みだろうから無理だろう。
Anyつかうとか・・・。



975 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 14:24:43.54 ID:rL3qzGy6.net]
あ、すまん。おかしなこと言った。
えーっと、変数が一個じゃ足りないな。
イニシャライザーリスト使うか、下位関数にキックするか。

976 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 15:05:48.05 ID:XmdDRLnv.net]
そもそもコンストラクタの委譲は再帰禁止だったと思うが
別のクラステンプレートのメンバ関数とか関数テンプレートで再帰するしかないと思う

977 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 15:57:42.66 ID:rL3qzGy6.net]
https://wandbox.org/permlink/KrUV4MTPdV0l4OoO
興味があったのでそれっぽいコード書いてみた。
これキャッチするの無理だろ。

978 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 16:53:35.24 ID:rL3qzGy6.net]
そういえば、例外の時にメモリ確保したらなんか弊害あるんだっけ?
昔、例外投げるときはメモリが足りなかったりとかクリティカルな状況だからやめろって言われたような気がする。
どうやったっけ?

979 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 18:24:33.46 ID:/11s7nnG.net]
>>948
なんか面白そうなのうpしてくれてありがとう
すまん、今かなり酔っ払ってる
素面に戻ってからじっくり読むから
ちょっと待ってて

980 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 18:56:26.92 ID:5ar3I1wr.net]
>>948
つ catch(A<B, C> E)

981 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 19:23:40.93 ID:r5O9PJUC.net]
>>949
> そういえば、例外の時にメモリ確保したらなんか弊害あるんだっけ?
メモリー不足による例外発生時だとその例外処理時のメモリー確保自体が失敗するから例外処理(例えばログ出力)ができなくなるってこと

982 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 20:44:16.72 ID:rL3qzGy6.net]
>>951
そらまー、引数がそれの時はできるけど、必ず把握はしてないでしょ。

>>952
あぁ、なるほど。ありがとう。

983 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 20:51:49.46 ID:cO/mJ1mq.net]
>>952
メイヤーズ本に簡単な回避テクが書いてある
希ガス

984 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 20:52:40.48 ID:cO/mJ1mq.net]
真にご法度なのはデストラクタの中での例外発生なんじゃ…



985 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 21:06:57.48 ID:tfF8aOe1.net]
>>953
951だけど、何したいのか分からない。
catch (decltype(X) E)
ならええの?

986 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 22:12:01.59 ID:rL3qzGy6.net]
https://wandbox.org/permlink/uEH5L9KBV9L1BdYn
うはー、気が向いたから、コンストラクタに推論させようと思ったら手間食った。あー疲れた。
しかし、理解が深まって良かったかな。うえー。

>>956
投げた本人ならできるけど別のところから飛んできたやつはつかめなくない?

987 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 22:26:38.94 ID:rL3qzGy6.net]
しかし、色々試したが結局うまくいかず、解説ページの死角にぽろっとあるのが最高にリアル。

988 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 23:19:11.18 ID:5ar3I1wr.net]
>>957
例えばA<B, C>とA<D>は全く別の型なのだから、どっちの型が飛んでくるかわからないのに両方catchするのは無理でしょ。
Base型で試そうとした痕跡があるけど、catchした先でA<B, C>またはA<D>の関数を呼び出そうとしているからそれもできない。

「別のところ」から飛んでくる例外の型はコンパイル時には確定しているのだから、メタプログラミングが通常やるように、「別のところ」のテンプレ引数でthrowする型を決定できるようにすればいいんじゃね?

989 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 23:23:12.69 ID:rL3qzGy6.net]
>>959
うん。多分それで困ると思う。>>944が!
メタプロやらないから可能性は感じるけど限界がわからない。
まぁ、俺は興味で書いただけだから、>>944がどうするかはシラネ・・・。

990 名前:デフォルトの名無しさん [2018/08/25(土) 23:24:09.84 ID:Efgla6YW.net]
>>939
>あえて非参照なテンプレート引数を書く「便利さ」みたいなものはありますでしょうか?
threadの場合デフォルトで参照だとdata raceを気づかないで起こす可能性が上がる。
設計としてスレッドの引数はコピーして渡すほうが安全性は高い。

一般論で言えば一時オブジェクトを受け取るならconst&になるけど、
これだとmoveできないので逆に性能が劣化する場合がある。

991 名前:デフォルトの名無しさん [2018/08/25(土) 23:32:37.06 ID:Efgla6YW.net]
最近の提案なんかではメモリ確保失敗は回復が難しく一般的な例外とは
区別して考えるのが合理的なんじゃないかって話が出てきてる。
んで新しく静的な例外を導入しようっていう話が上がってる。

992 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 23:39:53.83 ID:rL3qzGy6.net]
>>962
コンパイルタイムで例外わかるんだったら、普通にコンパイルエラーにしよ?

993 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 23:47:31.99 ID:cO/mJ1mq.net]
メメント・メモリ

994 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 02:56:15.82 ID:zhFpXu2e.net]
ヒープが無くなったら、HeapCreateで作れば良いのに。
by マリー・アンチョワネット



995 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 14:06:36.91 ID:Q8b2w7YQ.net]
メモリがどれくらい必要なのか簡単に静的解析できたらいいなあと思うけど
再帰関数のメモリ消費量とか計算難しそう

996 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 14:10:00.99 ID:BwlGzYMc.net]
mcc68kなんかは-Sでアセンブラ出力させると
コメントにスタック使用量を入れてくれてたな

997 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 19:26:38.30 ID:OiuVvKbz.net]
割り込みになるけどちょっと質問させてください
struct hoge {

  int a, b, c;

};

auto a = hoge{1, 2, 3};

auto b = int[]{1, 2, 3, 4};

aみたいに型を明示して中括弧でくくった一時オブジェクトは作れるけど、
bみたいに配列を明示して作ることって出来ないですかね?
単に文法上の質問なんで「やる必要あるのか」とか「std::array使え」とか「構造体でラップしろ」は無しでお願いします


998 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 19:31:13.94 ID:Ws2ZfrVi.net]
int[]は int * のシンタックスシュガー

999 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 19:34:14.95 ID:OiuVvKbz.net]
int[4]でもだめだったんですよね・・・・
というか今思いついて(int[4]){1, 2, 3, 4}でやったらいけました
お騒がしてすみませそ

1000 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 20:05:48.84 ID:qnZA5cjL.net]
auto b ={1, 2, 3, 4};

1001 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 20:12:01.81 ID:2rP1aXG6.net]
>>970
それはC99の複合リテラルになるけど、C++で使ってよかったっけ?

1002 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 20:19:57.43 ID:qnZA5cjL.net]
warning: pointer is initialized by a temporary array, which will be destroyed at the end of the full-expression [-Waddress-of-array-temporary]

1003 名前:デフォルトの名無しさん [2018/08/26(日) 20:21:33.00 ID:hANAm2gW.net]
https://ideone.com/A9Bccy
#include <stdio.h>

int main() {
  int* b1 = {1, 2, 3, 4};
  int b2[4] = {5, 6, 7, 8};
  int b3[] = {9, 10, 11, 12};
  fprintf(stdout, "b1:%u\n", sizeof(b1));
  fprintf(stdout, "b2:%u\n", sizeof(b2));
  fprintf(stdout, "b3:%u\n", sizeof(b3));
  return 0;
}

https://ideone.com/rJw9cK
#include <iostream>
using namespace std;

int main() {
//  int* b1 = {1, 2, 3, 4}; コンパイルエラー
  int b2[4] = {5, 6, 7, 8};
  int b3[] = {9, 10, 11, 12};
//  cout << "b1:" << sizeof(b1) << std::endl;
  cout << "b2:" << sizeof(b2) << std::endl;
  cout << "b3:" << sizeof(b3) << std::endl;
  return 0;
}


1004 名前:デフォルトの名無しさん [2018/08/26(日) 20:22:49.21 ID:hANAm2gW.net]
c
b1:8
b2:16
b3:16

c++
b2:16
b3:16



1005 名前:デフォルトの名無しさん [2018/08/26(日) 20:27:01.66 ID:hANAm2gW.net]
うん
やっぱり
このスレにもアホしかいない

1006 名前:さまよえる蟻人間 mailto:sage [2018/08/26(日) 20:28:44.90 ID:Vxoswi+g.net]
>>976
自分が天才だと思っているなら、こんなところで遊んでないで、なんか凄いソフトを作ってくれよ。

1007 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 20:31:31.48 ID:BwlGzYMc.net]
レス番が飛んでるなあ

1008 名前:デフォルトの名無しさん [2018/08/26(日) 20:31:32.32 ID:hANAm2gW.net]
オレは自分を天才とか思ってない
オレは天才じゃないが普通の人間だ

この板にいる低学歴知恵遅れが
まともじゃないのがヤバイといってるワケ

教育の程度や知能に大きな問題があるといってるわけ
しかもその自覚がない
まずまともな人間になるところから

1009 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 20:44:37.30 ID:qnZA5cjL.net]
誤解したまま帰った?

auto a=(int[4]){1,2,3,4};

for(int i=0;i<4;i++)

{

  printf("%d \n",a[i]);

}

出力
0
0
0
0


1010 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 21:13:55.49 ID:OiuVvKbz.net]
あー、すみませんautoって書いたのがまずかったですね
試してみたんですが、実際にはコンストラクタに渡すので大丈夫でした

autoだと配列の一時オブジェクトへのポインタになるからまずいですね

1011 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 21:54:34.00 ID:7VGl0ROF.net]
>>981
autoでなくても不味いよ

1012 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 22:13:43.13 ID:zpiwFHmU.net]
>>977
ほんこれ

1013 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 22:53:29.24 ID:OiuVvKbz.net]
>>982
なにがどうまずいですかね?

1014 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 08:18:57.12 ID:YiUsgylF.net]
まったりとしてコクが無く、魚介類の生臭さを濃縮したような
スープと同じぐらい不味い



1015 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 13:42:16.09 ID:QRiCvp9j.net]
きも

1016 名前:944 mailto:sage [2018/08/27(月) 13:55:56.63 ID:vY3QDx2y.net]
>>948
お待たせ

俺っちの質問はnested_exceptionを使うケースなので、
948のコードでいうとBaseを多相的クラスにしといて
catch(Base&)で捕獲し、dynamic_castでBやCへの
アクセスを試みるというようなことだ

ところで
template<class... Ts> overloaded(Ts...)->overloaded<Ts...>;
これが読めん、何やってるのか教えてくれんか

1017 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 14:09:13.11 ID:vY3QDx2y.net]
>>955
std::uncaught_exceptionというのがあるね

1018 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 14:23:40.86 ID:QRiCvp9j.net]
>>987
クラステンプレートの引数の推論補助(deduction guide

1019 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 14:26:19.85 ID:vY3QDx2y.net]
>>989
deduction guideね、thx

1020 名前:さまよえる蟻人間 mailto:sage [2018/08/27(月) 15:42:34.96 ID:JbKLTkj/.net]
次スレ頼む

1021 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 16:02:51.38 ID:r/wp9j7z.net]
わたくしがC++で書き上げた超高性能次スレ立てマシーンなら次スレなんて一発ですよ

1022 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 16:03:14.62 ID:vY3QDx2y.net]
立てたよ
https://mevius.5ch.net/test/read.cgi/tech/1535353320

1023 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 01:49:58.08 ID:rjIDuLFn.net]
スレ番インクリメント機能はC++でも実装不可能なまでに困難な作業だったか

1024 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 06:13:26.80 ID:UQgP5OTn.net]
スレ立てが競合した時の排他制御を実装してくれ



1025 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 06:22:11.76 ID:XE/KW9kf.net]

板復帰(OK!:Gather .dat file OK:moving DAT 703 -> 686:Get subject.txt OK:Check subject.txt 703 -> 690:Overwrite OK)0.84, 0.77, 0.74
age subject:690 dat:686 rebuild OK!

1026 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 20:40:17.99 ID:fGjEV9Ei.net]
997

1027 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 20:40:50.96 ID:fGjEV9Ei.net]
998

1028 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 20:41:19.69 ID:fGjEV9Ei.net]
999

1029 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 20:41:56.22 ID:fGjEV9Ei.net]
1000

1030 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 45日 2時間 48分 54秒

1031 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






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

前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