- 1 名前:デフォルトの名無しさん mailto:sage [2016/08/13(土) 11:24:45.65 ID:NPYsKJkE.net]
- 次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512 C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレに お願いします。 前スレ C++相談室 part125 echo.2ch.net/test/read.cgi/tech/1463761261/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.99【環境依存OK】 echo.2ch.net/test/read.cgi/tech/1469177649/ ■長いソースを貼るときはここへ。■ codepad.org/ ideone.com/ [C++ FAQ] https://isocpp.org/wiki/faq/ www.bohyoh.com/CandCPP/FAQ/ (日本語)
- 705 名前:デフォルトの名無しさん mailto:sage [2016/09/11(日) 22:46:59.51 ID:m0F7Ld2f.net]
- >>695
>>688は「intの最大」でなく「outputの最大」と言っているのだが
- 706 名前:デフォルトの名無しさん mailto:sage [2016/09/11(日) 22:48:58.46 ID:2EFm3ZKd.net]
- >>686の頭にはなんか特殊用途でもよぎったんじゃね?
俺が懇意すぎたかな・・・。Orz
- 707 名前:デフォルトの名無しさん mailto:sage [2016/09/11(日) 22:51:16.46 ID:m0F7Ld2f.net]
- 深い意味はない
単に>>674を見て並んでいた単語に連想した自分の知識を反射的に書き込んだだけ
- 708 名前:デフォルトの名無しさん mailto:sage [2016/09/11(日) 22:54:31.75 ID:2EFm3ZKd.net]
- 俺は>>686ではない。それはそうかもな。
俺はC++ではstd::まで書くStl派なので、このところ生配列は使ったことがない。 というか、オーバーフロー怖くて使いたくない。
- 709 名前:デフォルトの名無しさん mailto:sage [2016/09/11(日) 23:01:21.72 ID:67F7MmNh.net]
- 生配列を使ったことないってことはないだろ
インターフェースにstlのコンテナとかを露出したらコンパイラ依存になっちゃうじゃん てか高速に処理したくてスタックに配列を積みたいときとかどうするわけ?
- 710 名前:デフォルトの名無しさん mailto:sage [2016/09/11(日) 23:04:52.03 ID:2EFm3ZKd.net]
- 競プロ解いてるだけだから問題にならん。
まぁ、しばらく黙るわ。
- 711 名前:デフォルトの名無しさん [2016/09/11(日) 23:09:47.79 ID:OIs9p1U8.net]
- 俺が言いたかったのはだね、
void func( char *output, int max_buffer ) のようにchar *outputを渡すような時は、 バッファオーバーフローを防ぐために一緒にサイズも渡すってのが、 C言語での使い方では常識化してるって事だ。
- 712 名前:デフォルトの名無しさん mailto:sage [2016/09/11(日) 23:12:11.14 ID:m0F7Ld2f.net]
- わざわざ補足しなくても
そんなことはみんな知ってるから
- 713 名前:デフォルトの名無しさん [2016/09/11(日) 23:14:19.23 ID:OIs9p1U8.net]
- >>674 が変な事言ってたからだ
- 714 名前:デフォルトの名無しさん mailto:sage [2016/09/11(日) 23:17:06.20 ID:67F7MmNh.net]
- 競プロでSTLコンテナなんて使うか??
アルゴリズムとかはそのまま使えるけどコンテナは普通生配列か必要に応じて自前の使うだろ?
- 715 名前:デフォルトの名無しさん mailto:sage [2016/09/11(日) 23:19:39.01 ID:2EFm3ZKd.net]
- ガチ勢じゃないからね。
最近ではリングバッファほしい位で満足してるよ。 STLコンテナで解けないなら、アルゴリズムが悪い事が多い。
- 716 名前:デフォルトの名無しさん mailto:sage [2016/09/11(日) 23:20:05.58 ID:m0F7Ld2f.net]
- >>704
>674の懸念は別に変じゃないぞ 変なのは>>674を理解できなかったお前だ
- 717 名前:デフォルトの名無しさん mailto:sage [2016/09/11(日) 23:20:10.89 ID:T7xxiiqM.net]
- >>700
規格準拠度が低いクソみたいなコンパイラを使わない
- 718 名前:デフォルトの名無しさん mailto:sage [2016/09/11(日) 23:22:00.72 ID:m0F7Ld2f.net]
- どうしたいきなり
>>700も関係無いことを言いだして
- 719 名前:デフォルトの名無しさん mailto:sage [2016/09/11(日) 23:22:32.77 ID:m0F7Ld2f.net]
- 誤 700も
正 700と
- 720 名前:デフォルトの名無しさん [2016/09/11(日) 23:23:32.91 ID:OIs9p1U8.net]
- >>707
いやいや、おかしいよ。 void func( char *output, int max_buffer ) を使うのにバッファを意識しないプログラムとかありえないだろ バッファがどのくらいか分からんのに void func( char *output, int max_buffer ) とか間違ってるだろ。 これCの使い方だぞ
- 721 名前:デフォルトの名無しさん mailto:sage [2016/09/11(日) 23:28:22.83 ID:T7xxiiqM.net]
- >>705
競プロなんていうマイナー分野の話なんかしてないし 実行時間のほとんどはアルゴリズム依存なんだから1%未満のオーバーヘッドが影響するわけが無い 固定長配列はarrayを使うべきだし、動的にサイズを変えないといけない場合vectorでまとめて確保して普通のnewした配列として使えばいい 他人の競プロのコード見たら使いまくってるしな
- 722 名前:デフォルトの名無しさん mailto:sage [2016/09/11(日) 23:39:10.29 ID:m0F7Ld2f.net]
- >>711
よくわかった >>674の『バッファサイズをどのぐらい用意すれば良いんだ?という問題が出る』 を単語レベルに近い連想で文を捉えるから珍妙な解釈になる レスを100回読み直せ
- 723 名前:デフォルトの名無しさん mailto:sage [2016/09/11(日) 23:46:15.15 ID:M5lO5IQC.net]
- ID:2EFm3ZKdの背伸びが痛々しい。
このスレで一番出来ない子が何をいっちょまえにレスしてんだか…。 なぁーにが「競プロ解いてるだけ」だよド素人が。
- 724 名前:デフォルトの名無しさん [2016/09/11(日) 23:48:48.59 ID:OIs9p1U8.net]
- >>713
だからよ、 >バッファサイズをどのぐらい用意すれば良いんだ?という問題が出る って言うような疑問がおかしいんであって、 void func( char *output, int max_buffer) はサイズを指定して使うもんだ。それ以外にあるかよ。 パターンもパターンやんけ。 バッファサイズがわからん状態で、、 void func( char *output, int max_buffer)ってのはあり得ないんだよ
- 725 名前:デフォルトの名無しさん mailto:sage [2016/09/11(日) 23:49:06.36 ID:2EFm3ZKd.net]
- >>714
はっはー。おだいじんさまぁ〜。
- 726 名前:デフォルトの名無しさん [2016/09/11(日) 23:54:09.86 ID:IuKZJB78.net]
- >>715
別の関数で必要なサイズを返すのか? 変更が別スレッドだったら、さらにロック、アンロックの関数がそれぞれ必要になるな。
- 727 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 00:00:05.72 ID:JmiC7f4k.net]
- じゃー背伸びついでに言っとくわ。
その関数voidだから失敗したかどうかわからんから、バッファ入力サイズを推定できない。
- 728 名前:
ドキュメント読め。 [] - [ここ壊れてます]
- 729 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 00:03:56.69 ID:JmiC7f4k.net]
- チッ間に合わなかった。
- 730 名前:デフォルトの名無しさん [2016/09/12(月) 00:04:01.94 ID:GwVwE6OL.net]
- いやいや、
void func( char *output, int max_buffer) ってのは char *output に結果を返すんだよ。 そんなのもわからんのか。 max_bufferはオーバーフローを防ぐための物だ。 何を言ってんだ一体
- 731 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 00:04:29.54 ID:hz43BbCS.net]
- 例外使わないのか
初心者なのかレガシープログラマなのか
- 732 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 00:04:37.05 ID:Tu0jZEI4.net]
- >>715
その部分の日本語の理解が間違っているとわざわざ教えてやっているのに 他にどういう理解があり得るのかも考えずゴミレスを繰り返すとは アスペなだけでなくて荒らしのつもりなのか?
- 733 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 00:05:58.76 ID:JmiC7f4k.net]
- ");
//]]>-->
- 734 名前:20" rel="noopener noreferrer" target="_blank">>>720
そんなちゃんぽん仕様にしなくても戻り値一個設定すれば済む話じゃないか。 汚いと思う。 []- [ここ壊れてます]
- 735 名前:デフォルトの名無しさん [2016/09/12(月) 00:07:03.07 ID:GwVwE6OL.net]
- Cやってたらvoid func(char *output, int max_buffer)なんてパターンだろ。
基本中の基本だろ。
- 736 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 00:08:06.86 ID:JmiC7f4k.net]
- 染まってるのか。
まぁいいや。 黙るって言ったから黙る。
- 737 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 00:08:07.10 ID:WISOHly2.net]
- 723 : デフォルトの名無しさん 2016/09/12(月) 00:05:58.76 ID:JmiC7f4k
>>720 そんなちゃんぽん仕様にしなくても戻り値一個設定すれば済む話じゃないか。 汚いと思う。
- 738 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 00:09:36.24 ID:Tu0jZEI4.net]
- バッファサイズ指定の関数で溢れた時に例外をスローするのは珍しいな
Visual C++の_s関数の配列オーバーロードはそんな仕様だった気もするが
- 739 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 00:09:38.22 ID:WIrRwO5G.net]
- >>715
https://msdn.microsoft.com/ja-jp/library/cc429127.aspx バッファサイズを指定できても、結果を正しく格納するのに必要なバッファサイズはわからない ってことはあるんだよ。
- 740 名前:デフォルトの名無しさん [2016/09/12(月) 00:11:17.09 ID:GwVwE6OL.net]
- void func( char *output, int max_buffer)
これはさ、max_buffer以内で絶対に納めるって前提があるんだよ。 その為のmax_bufferだぞ。 max_bufferの指定が間違ったらエラーなんだよ。 他にどういう使い方あるんだよ
- 741 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 00:11:25.69 ID:XcxNhSoL.net]
- >>728
マクロでパスの最大規定されてる
- 742 名前:デフォルトの名無しさん [2016/09/12(月) 00:13:42.09 ID:GwVwE6OL.net]
- 結果を正しく格納するのに必要なバッファサイズが、max_bufferだろ。
char *outputのサイズがmax_buffeなんだよ char *outputがオーバーフローしないように、max_bufferを上限に処理をして、 char *outputで返せばオーバーフローしないって仕組みなんだよ。
- 743 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 00:14:04.49 ID:Tu0jZEI4.net]
- まさか>>728のやさしいレスを見てもまだ世迷い言が続くとは
これはホンモノだ
- 744 名前:デフォルトの名無しさん [2016/09/12(月) 00:18:26.76 ID:GwVwE6OL.net]
- おまえなにもわかってないだろ。
何ひとつ自分で説明してないだろ。
- 745 名前:デフォルトの名無しさん [2016/09/12(月) 00:21:57.49 ID:U6Ajls88.net]
- >>732
老害プログラマによくいる切り捨てられても気にしない、切り捨てによって発生したバグが確認されて初めてバッファーサイズをプログラム内の定数値で変更する人なんでしょ。 C++使ってるなら正しく処理する為には多大な面倒が発生する手法なんて使うなって事なんだけど老害にはそれが理解出来ないらしい。
- 746 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 00:22:27.92 ID:/3fOrQXc.net]
- max_bufferがあるからバッファオーバーフローを防ぐことが出来る
逆にmax_bufferが効果を発揮する状況というのは 結果を正しく格納するのに必要なバッファサイズがmax_bufferを越える時だ 従って>>731の最初の行は間違っている
- 747 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 00:23:39.94 ID:XcxNhSoL.net]
- 最大値をどうすればいいのかって話でしょ
728の例だと別の場所で最大値は決まってる でもバッファサイズ3とか小さすぎると欲しい情報は帰ってこない 当然オーバーフローはしないけど
- 748 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 00:27:04.07 ID:feiUf+9B.net]
- バッファっていう概念がちょっとズレてんのかもな
Cやってる人はコップでプールの水をすくうとき コップがバッファだ コップの大きさで回数を重ねてすくう コップを最大まで大きくしなきゃいけないとか 必要なコップサイズは、などとは考えない それがバッファ
- 749 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 00:28:34.40 ID:Tu0jZEI4.net]
- >>730
文脈を理解できない低能は去れ >>733 健常者なら『レスを100回読み直せ』で理解できると思ったので敢えて説明しなかった失礼 では説明してやろう <呼び出し側> vector<char> result(★); func ( &result[0], result.size() ); >>674はこの★をどう決定するかが 呼び出し側コードを書く者の負担になると言っている
- 750 名前:デフォルトの名無しさん [2016/09/12(月) 00:28:41.75 ID:GwVwE6OL.net]
- だからよ、C++の使い方で
void func( char *output, int max_buffer) を使おうとすれば、Cのバッファを意識する使い方以外に無いだろ。 それをストリングクラスの代わりに void func( char *output, int max_buffer) を使う手ももあるが、 バッファのサイズをどうするかが問題、とか言ってるから、 そういう使い方はしないし間違ってるって言ってんだろがよ
- 751 名前:デフォルトの名無しさん [2016/09/12(月) 00:30:38.58 ID:GwVwE6OL.net]
- void func( char *output, int max_buffer)
これはよ、char *outputのサイズを意識しない限り、動かせないプログラムだよ このサイズが分からない時に、 void func( char *output, int max_buffer) を使うってのは無いんだよ それをあるって言うから、無いって言ってんだよ 👀 Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
- 752 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 00:35:45.75 ID:XBLhc0H+.net]
- >>740
一旦これだけは言っておくが おまいの言っていることは正常でしかもごくあたりまえのこと おそらくその点を繰り返す必要はもうないし そのことはみんな分かってる 読み込む前にサイズ分からないものがあるよね? そのときは固定サイズじゃ読み込めないよね、 的なことをおまいの相手は繰り返し言ってるんじゃないか? 配列に対するベクタの利点みたいな部分を言いたがってる気がする
- 753 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 00:40:53.14 ID:XcxNhSoL.net]
- 最大値がどっかで決まってるか、outputにヌルいれると必要なサイズ返るとかが普通じゃね
その関数だけじゃ必要なサイズがわからんというお話 パスが欲しいのにバッファ小さすぎてドライブレターだけ返ってきても意味無いわけで
- 754 名前:デフォルトの名無しさん [2016/09/12(月) 00:43:58.37 ID:GwVwE6OL.net]
- void func( char *output, int max_buffer)
を使う前にはサイズを把握してないと駄目ってだけだよ。 それが把握できんのにこういうCライクな使い方は間違ってるって俺は言ってるだけだよ
- 755 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 00:47:09.50 ID:hz43BbCS.net]
- C言語的なインターフェイスは不便だからC++らしく書きましょう
- 756 名前:デフォルトの名無しさん [2016/09/12(月) 00:47:23.61 ID:U6Ajls88.net]
- >>743
格納サイズを把握してたらmax_bufferなんて要らなくね?
- 757 名前:デフォルトの名無しさん [2016/09/12(月) 00:51:26.47 ID:GwVwE6OL.net]
- >>745
いやオーバーフロー対策の最大値だから 引数で明示的にサイズを渡しましょうって取り決めだ
- 758 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 01:02:10.22 ID:Tu0jZEI4.net]
- >>743の達した結論が
>>674とほぼ同じに思えてならない
- 759 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 01:10:30.26 ID:hz43BbCS.net]
- いまさらそんな40年前からある常識を言われも困る
- 760 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 01:13:36.21 ID:WIrRwO5G.net]
- >>730
>728 で挙げた MSDN のページにそんな規定は見当たらないんだけど、どこ見て言ってるの? MAX_PATH の類のことを言ってるなら、よくある勘違いだろうと思うんだ。 https://www.google.com/search?q=GetModuleFileName+MAX_PATH d.hatena.ne.jp/satosystems/20100807/1281152224
- 761 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 06:52:52.36 ID:y21Asc3i.net]
- MAXPATH があてにならんのは確かだが
サイズ取得せずにリトライするのもダメ臭が
- 762 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 08:08:53.69 ID:46mLPt5D.net]
- 書き込んだサイズを返すくせに必要なサイズを
調べる機能が規格に無いstd::mbstowcsはクソ
- 763 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 09:10:27.05 ID:HZgwCDH3.net]
- プログラミングのコードを書く時のタブvsスペース戦争がついに決着
www.gizmodo.jp/2016/09/tab-vs-space.html www.gizmodo.jp/images/2016/09/160901coding2.jpg www.gizmodo.jp/images/2016/09/160901coding3.jpg
- 764 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 09:38:06.48 ID:y21Asc3i.net]
- 優れたデータから生まれるクソ同然な解説
- 765 名前:デフォルトの名無しさん [2016/09/12(月) 10:27:38.72 ID:CKtP/5ek.net]
- おまえTAB派かw
- 766 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 11:33:25.20 ID:+YsVO5lS.net]
- タブスペース混在で起きる問題とは?
- 767 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 12:31:33.38 ID:ZblQazo2.net]
- タブ幅が決まってないのが一番の問題だな。2,3,4,8みんなバラバラ。
- 768 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 13:20:51.17 ID:s5J5+4ba.net]
- pythonが致命傷を負う
- 769 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 13:57:05.61 ID:x7GAwvaf.net]
- >outputにヌルいれると必要なサイズ返るとかが普通じゃね
必ずしもそれが有効かどうかわからないから困る 必要なバッファサイズを取得してから実際に文字列を取得するまで 関数を二回呼び出す必要があり
- 770 名前:Aここに時間差があるのが問題
マルチスレッドで問題になる 取得したバッファサイズは既に古い情報になっている可能性がある これを解決するにはLockするしかない obj->lock(); size_t buffer_size = obj->func( nullptr, 0 ); std::vector<char> output( buffer_size ); obj->func( outputr.data(), output.size() ); obj->unlock(); こんなコードはまさに糞であるということ しかも、lock、unlockをし忘れても、たまたまのタイミングの物で、そこそこ動きそうというのが怖い つまり、ほんの短い期間の間に、文字列が更新されて取得したバッファサイズが無効になるほうが珍しいだろう しかし、ありえないことではない 1000回に1回だけ失敗するというのが一番怖い これに比べれば、関数内でnew char[]して返すほうが、まだいくらかマシに思えるぐらい しかしこれをやると、帰ってきた文字列は自分で開放しなければならないのか あるいは開放してはダメなのか、解放関数はdelete[]なのかfreeなのかあるいは別の専用関数なのか ということが関数ごとにマチマチになり、非常に煩雑になる std::string output = obj->func(); のほうが断然良い、誰の目にも明らか、短い、シンプル lock、unlockを呼び出し元が保証しなければならないのは良くない 必要な処理が一発の関数呼び出しでキマるように設計すれば、同期処理はobj内に隠蔽できる こちらのほうが良い 単に文字列取得するだけでlock、unlockが必要というのは狂気の沙汰 >>700のような特殊な場合を除いては、ね [] - [ここ壊れてます]
- 771 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 15:42:12.58 ID:tjH2oYJX.net]
- ってか
void func( char *output, int max_buffer) なんてI/Fを書いちゃってることが問題なんじゃねーの? これでなんとかしようって考えたって生産性ないし
- 772 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 16:16:50.47 ID:ZblQazo2.net]
- cのIFだから古臭いのはしょうがない。
効率悪くなってもstd::string吐くようにラップして二度と触らないのが吉。
- 773 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 16:45:03.11 ID:+C5a7cGR.net]
- void func( char *output, int max_buffer)
これ、ニワカが作ったダメな見本 普通 size_t func( char *output, size_t max_buffer)
- 774 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 17:01:45.51 ID:2Vwoh4uN.net]
- ゴミが得意気に難癖つけてて笑える
- 775 名前:デフォルトの名無しさん [2016/09/12(月) 17:58:57.32 ID:KCLSxXC3.net]
- 同じ意味じゃんw
- 776 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 18:06:15.51 ID:5/ctHFsj.net]
- マルチスレッドのリテラシーも無いのにクソみたいな長文をドヤ顔で貼り付ける>>758が哀れで仕方ない
2回のfnucの呼び出しの間にバッファーが変更される状況では単独の呼び出しすら破綻していることが理解できないらしい
- 777 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 18:13:03.76 ID:Brz5tLm8.net]
- 彼に限らず何らかの問題意識を訴える子が
なぜか突然マルチスレッドを絡めてくるのはもはや伝統芸 そして一通り話を聞いてみると 「そうだね、排他だね」としか言いようがないことも毎度
- 778 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 18:27:11.87 ID:x7GAwvaf.net]
- std::string output = obj->func();
の場合、funcの中で排他処理をしていれば、呼び出し元は排他処理について気にしなくてよい アトミックな操作ということになる 文字列の取得にかかわらず、アトミックが期待される処理は 分解せずに一つの関数で実現すべきである personオブジェクトの取得なら、person = obj->get_person(); とすべきであり person.set_name( obj->get_persion_name() ); person.set_age( obj->get_persion_age() ); のように分解してしまうとアトミックでなくなるから、やはりロックが必要になる 外からオブジェクトをロックする、そういうI/Fをobjに用意するということは 何時でも何処でも好き勝手にロックできるというわけで 使い方を誤るとデッドロックを引き起こす可能性がある ロックの順番はクラス設計者が明確に管理し、隠蔽すべき さて、文字列取得を二つの関数に分けて行うとアトミックな操作でなくなるから 呼び出し元で排他処理をしなければならなくなる obj->lock(); size_t buffer_size = obj->func( nullptr, 0 ); std::vector<char> output( buffer_size ); obj->func( output.data(), output.size() ); obj->unlock(); これは非常に面倒なので君らは直ぐにでもstd::stringを返すラッパーを書く そうすれば結局同じことになるので、初めからstd::stringを返せばよい もとより文字列の取得はアトミックであることが期待されるわけだから 一回の関数呼び出しで行うのが筋である
- 779 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 18:43:38.31 ID:5/ctHFsj.net]
- 一生懸命考えた結果がコレか?
呼び出し側が自らコンカレントな使い方する前提でロック必須と言われてもねぇ その内vectorのremove&eraseイディオムにも排他が必要で狂気の沙汰とか言い出しそうだな
- 780 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 18:44:31.77 ID:x7GAwvaf.net]
- どれだけの処理を一つの関数で行うべきかは
どこまでの処理がアトミックと期待されるか、による 文字列の取得はアトミックであることが期待されるので 一つの関数でアトミックに実行すべき、となる 場合によればアトミックの範囲がもっと広がることもある 例えばpersonの情報が欲しいとき、名前と年齢を別々に取得するのはよくない 名前の取得と年齢の取得のそれぞれが独立して排他処理してあって正しく動いたとしても 全体として名前と年齢のペアが一致しなくなる可能性があるから だからこの場合、personの情報は一つの関数呼び出しで行い、アトミックである必要がある なので、一つの関数で実行すべきこと、アトミックに実行すべきこと、は 文字列の取得なんかよりは大きな範囲、粒度になることはある 大きくなることはあり得るということ が、間違っても、文字列の取得などというプリミティブな処理を バッファサイズの取得と文字の取得の二つに分割したほうが良い とはならない
- 781 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 18:50:01.82 ID:x7GAwvaf.net]
- >>767
>必ずしもそれが有効かどうかわからないから困る と書いた通り、すべての場合とは言っていない 困る場合があるといっている そして、困る場合での話である
- 782 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 19:40:26.75 ID:5/ctHFsj.net]
- なるほどつまりは>>765だな
この論法は非constメンバー関数を使ったイディオムに広く使えそうだ 「〜って普通だろ?」 ↓ 「必ずしもそれが有効かどうかわからないから困る(長文略)」
- 783 名前:デフォルトの名無しさん [2016/09/12(月) 21:04:54.81 ID:U6Ajls88.net]
- >>767
呼び出し側だけとは限らんでしょ。 非同期でデータメンバーを更新しつつ、更新通知をだすクラスとか
- 784 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 22:29:31.42 ID:2Vwoh4uN.net]
- 一発でstringやらvectorで返すなら常識的に言ってロックは必要ないわな
何話してるのか分かってない奴が力んでるな
- 785 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 23:29:00.60 ID:3LkOVCr7.net]
- タブ幅は8である。但し、一度タブキーを叩くと4つのスペースが入る
但しそれで8つのスペースとなるときはそれを一つのタブに換える
- 786 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 00:03:18.93 ID:ZWXE0Cz9.net]
- いやタブとスペース混ぜるのは論外でしょ
- 787 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 00:39:27.54 ID:UjtLBJZw.net]
- 混ぜると誰かがコード整形したときに全部差分に出るから邪魔
- 788 名前:デフォルトの名無しさん [2016/09/13(火) 00:51:46.06 ID:nTkG/AQ9.net]
- >>772
そんな事でロックが必要かどうか決まらないと思うが何を言ってるんだ?
- 789 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 01:06:54.89 ID:TGJSQl0M.net]
- VZエディターとか混ぜてたな
- 790 名前:デフォルトの名無しさん [2016/09/13(火) 01:20:10.44 ID:7Uxx8QPD.net]
- 基本的にインデントが何段階も必要な入れ子はよくない
許容範囲は2つまでだな
- 791 名前:デフォルトの名無しさん [2016/09/13(火) 02:29:06.46 ID:qRIDBJHy.net]
- 論点がずれてんじゃんw
- 792 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 04:10:18.62 ID:ifCWTkZq.net]
- >>775
差分取るときホワイトスペース無視すればいいだろ
- 793 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 05:08:48.43 ID:E9px3zRx.net]
- std::get_temporary_buffer ってなんであんなクソ仕様で作ったの
- 794 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 05:14:57.49 ID:ifCWTkZq.net]
- それ知らんかったけどクソだからC++17でdeprecatedになるのか
- 795 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 07:08:31.21 ID:fa0Yw14i.net]
- 引数の異なる関数を関数テーブルにまとめる方法ヘルプミー
- 796 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 07:11:36.75 ID:jvr3tDVu.net]
- 型が違うから難しくね?同名でオーバーロードするんじゃだめなんかい。
- 797 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 07:21:28.20 ID:6YUjJJm0.net]
- テーブルの別の要素で引数と返り値の型を記憶しておき、任意の関数ポインタ型にreinterpretして保存
呼び出し時は記憶した引数と返り値のの型に対応する関数ポインタ型にreinterpretしてから呼び出す。
- 798 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 07:56:45.02 ID:BC6G6r/f.net]
- >>783
それどうやって使うつもりなの?
- 799 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 08:09:28.64 ID:LgTr6ZxA.net]
- >>785
やはり別物で統一して記憶させるしかないか… 要は入れてから後にキャストだよね >>786 関数群30ぐらいあるからそれを管理しやすくしたい 別にenumで関数名入れておくのと 関数名に対応したインデックス拾ってくる関数を用意しておいて 後に使いやすく
- 800 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 08:11:50.46 ID:jvr3tDVu.net]
- 酷い設計って言っていい?
- 801 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 08:20:36.44 ID:BC6G6r/f.net]
- >>787
> 後に使いやすく ごめん、全然使いやすくなるイメージがないんだが... 単にまとめときたいだけならクラス作って静的メンバ関数でいいような気がするし
- 802 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 08:29:56.17 ID:LgTr6ZxA.net]
- >>789
関数名を別ファイルから取り出して動的に動かすためにはこれしかなかった まとめておいてプログラム内で処理ならそれで良いけど 今のところそうなってるからそれに会わせるしかないんだ
- 803 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 08:32:38.69 ID:jvr3tDVu.net]
- 可変長引数取る関数内でスイッチするのと大差なさそう。
- 804 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 08:33:59.57 ID:Dh1MHapU.net]
- >>791
はぁ??
- 805 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 08:39:26.37 ID:LgTr6ZxA.net]
- >>791
結局どこかで分岐処理によるキャストするからほぼ変わらん気もする これに関連する話だけど int (*func)(void*)みたいな関数ポインタがあって 引数二つにするにはどうやってキャストしたら良いんだろうか
- 806 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 08:43:25.81 ID:kwiFGb/T.net]
- まず関数の型をtypedefしようぜ。
- 807 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 08:47:38.13 ID:GD/RUd4Y.net]
- windows のマクロまみれのメッセージディスパッチと同じようなことじゃろ
- 808 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 08:57:44.86 ID:jvr3tDVu.net]
- ideone.com/BWJoEi
こういう感じのこと思いついたけど、できんかった。テヘペロ。 関数複製するんだから通ってほしいなぁ。 なんかテンプレマジックで通らんかなぁ。
- 809 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 09:02:38.95 ID:jvr3tDVu.net]
- これができたら、ファクトリーメソッドがパラダイス。
- 810 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 09:51:20.93 ID:jvr3tDVu.net]
- 特定の型のパラメータパックってできなかったっけ?
Anyのパラメータパック食わせれば解決するんだけどなぁ・・・。
- 811 名前:デフォルトの名無しさん [2016/09/13(火) 11:14:43.16 ID:nTkG/AQ9.net]
- やりたいことにたいして少し大仰だが、Boost.Pythonのようなものでインタプリタからどうやって型安全に関数を実行してるか見たら少しは参考になるんじゃない?
- 812 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 12:49:03.21 ID:BC6G6r/f.net]
- >>790
> 関数名を別ファイルから取り出して動的に動かす なら初めからそう書いてよ 使いやすさ云々じゃないじゃん 関数名を特定するのはいいけど引数は関数毎にバラバラなんでしょ? 結局どこかで分岐が必要な気がする それとも引数は Variant みたいななんでも入れられる変数の配列にしてしまうとか
- 813 名前:デフォルトの名無しさん [2016/09/13(火) 17:00:07.27 ID:dUelqKgA.net]
- >>783
#include <functional> double foo(double x) { return x; } int bar(int x) { return x; } int main() { std::function<double(double)> table[2]; table[0] = foo; table[1] = bar; }
- 814 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 18:18:50.00 ID:LmZnag12.net]
- >>801
コードサンクス ただこれはintとdouble型に対してだからできるんじゃないのだろうか >>800 そういうことだね だからどこかでキャストし直す必要がある…はず あらかじめどこかにパターンを定義しておいてそれはもうスイッチ文に頼るしかないかなって考えてる
- 815 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 18:20:35.88 ID:LmZnag12.net]
- >>797
俺もパラダイスを目指している Cならエラー出ずにできるみたいなんだよね C++でxmlをjsonにパースしたり jsonを簡単に読み込む方法ってあったっけ? ないならC#も考えないとな…
- 816 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 19:01:39.86 ID:bDDPvjQm.net]
- 実行時に文字列を比較して分岐することのどこにパラダイスを見いだせるんだよ
- 817 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 20:22:41.37 ID:BC6G6r/f.net]
- >>803
調べてないけどライブラリぐらいあるんじゃね?
- 818 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/09/13(火) 21:57:21.43 ID:7T7m5n2i.net]
- 質問です。
placement newの関数の宣言と定義はどこに書くのが正解ですか? よろしくお願いします。
- 819 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 22:04:54.99 ID:6F1+hrdF.net]
- >>805
picojsonとやらを使ってみた 便利なんだけど配列二つあると積む現象が起きてしまった…
- 820 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 22:23:58.73 ID:eOd6ZBDo.net]
- jscriptで読めるから
WSHでアプリで実行
- 821 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/09/13(火) 22:34:06.63 ID:7T7m5n2i.net]
- ReactOSというOSの開発をしています。
ヘッダー<new>と<crtdbg.h>のnewの宣言が衝突していて、<new>が使えません。 どうしたら正しく配置newが使えますか?
- 822 名前:デフォルトの名無しさん [2016/09/13(火) 22:52:09.89 ID:7Uxx8QPD.net]
- 自分のソフトの販売権がカシオが取得とかねつ造してたやつだ
- 823 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/09/13(火) 22:59:05.82 ID:7T7m5n2i.net]
- わかりました。ReactOSのSTLかCRTのコードが間違っているということですね。
配置newは<new>をインクルードしたら使えなければおかしい。
- 824 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 23:06:52.68 ID:7T7m5n2i.net]
- 自分の商品の販売権をどう決めようが勝手でしょう。会社名を出したのは悪かったが。
- 825 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 23:08:15.35 ID:jz2gr8q/.net]
- ライバル会社かなにか?
- 826 名前:デフォルトの名無しさん [2016/09/13(火) 23:15:36.33 ID:7Uxx8QPD.net]
- >>812
おまえカシオが権利を所有とか書いてたんだろ カシオと専売契約交わしたみたいに書いてたろ カシオが知らんと思うてか
- 827 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 23:21:08.73 ID:7T7m5n2i.net]
- >>814
誤解です。メールで交渉中でした。
- 828 名前:デフォルトの名無しさん [2016/09/13(火) 23:29:04.40 ID:7Uxx8QPD.net]
- >>815
うそつけこら。おまえがメール送ってただけやろが。 往生際が悪い。全部バレとんねん 狭い業界でごまかせるとおもうなよ
- 829 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 23:33:01.44 ID:7T7m5n2i.net]
- すみません
- 830 名前:デフォルトの名無しさん mailto:sage [2016/09/14(水) 00:03:18.61 ID:3NkcLiKm.net]
- 反省してます
- 831 名前:デフォルトの名無しさん mailto:sage [2016/09/14(水) 01:01:49.61 ID:QlIAHX1m.net]
- なんやなんや
- 832 名前:デフォルトの名無しさん mailto:sage [2016/09/14(水) 02:49:36.41 ID:Xhtlj9Sh.net]
- マトラボスレ勢いなさすぎ。
誰かイコライザのコーディング教えてくれや
- 833 名前:デフォルトの名無しさん mailto:sage [2016/09/14(水) 03:15:05.48 ID:Pl2/S2ti.net]
- イコライザってなに?
- 834 名前:デフォルトの名無しさん mailto:sage [2016/09/14(水) 03:18:25.05 ID:EjX8GKMV.net]
- 信号処理
- 835 名前:デフォルトの名無しさん mailto:sage [2016/09/14(水) 03:53:21.14 ID:qczVS6OA.net]
- FFTか。言葉しかしらん。
- 836 名前:デフォルトの名無しさん mailto:sage [2016/09/14(水) 04:57:26.35 ID:8Y7m8SBN.net]
- 高速フーリエ変換か
- 837 名前:デフォルトの名無しさん mailto:sage [2016/09/14(水) 08:16:10.34 ID:58JMlqKS.net]
- placement newの関数を自分で書く素振りを見せながら
newをインクルードとか、何言ってんだか。 標準ヘッダーが衝突するなら処理系作った奴に聞け
- 838 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/09/14(水) 11:33:48.49 ID:3NkcLiKm.net]
- >>825
ありがとうございます。
- 839 名前:デフォルトの名無しさん mailto:sage [2016/09/14(水) 18:34:08.81 ID:O92aoqkR.net]
- CppUnitによるテストって登録件数が多くなった場合…なんとかならんもんかね
1000を越えるとかマジで嫌なんだが
- 840 名前:デフォルトの名無しさん mailto:sage [2016/09/14(水) 18:59:00.04 ID:EjX8GKMV.net]
- 何が嫌なんだ
時間がかかるってことなら分割したらいいじゃないか
- 841 名前:デフォルトの名無しさん mailto:sage [2016/09/14(水) 19:15:10.96 ID:O92aoqkR.net]
- >>828
コードがめっっっちゃ汚くならね? 1000個テストするなら1000行似たこと連続で書くんでしょ?
- 842 名前:デフォルトの名無しさん mailto:sage [2016/09/14(水) 19:27:01.68 ID:EjX8GKMV.net]
- >>829
テストコードも名前を付けてモジュール化すればすれなりに見やすくはなるんじゃないか どこで何のテストをしているか見つけやすくなるし
- 843 名前:デフォルトの名無しさん mailto:sage [2016/09/14(水) 19:57:41.83 ID:C1VR7bWr.net]
- >>830
ファイル分割するってことだろうか?
- 844 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 00:14:31.25 ID:SldeaLfO.net]
- 別にそれCppUnit 固有の問題じゃねーじゃん。
お前のテストコード作成全般の問題だろ。
- 845 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 01:28:50.14 ID:NSWALpAD.net]
- >>829
「似たこと連続で」ならマクロでも何でも使ってまとめりゃいいだろ。
- 846 名前:デフォルトの名無しさん [2016/09/15(木) 06:31:33.82 ID:eCorjc8D.net]
- ideone.com/VtKz07
nonbiri-tereka.hatenablog.com/entry/2014/06/25/093327を見て勉強中なのだが、 なぜ、test_addでaddをラップしてるのかがわからない addに引数を持たすことが出来ないのか。 また、addの足し算が引数をaが1-100だった場合、今の俺では100個記述することになる マクロを使用とかすれば解決できそうだけど、適切に使う方法が思いつかないんだ… 外部ファイルとかからの読み込みでも良いので何かしらヘルプ・・・・ void FunctionTest::test_add(){ CPPUNIT_ASSERT_EQUAL(3+2,func->add(3,2)); } この部分を何個も書いて CPPUNIT_TEST(test_add);//メンバ関数の登録ってのを CPPUNIT_TEST(test_add);//メンバ関数の登録 CPPUNIT_TEST(test_add1);//メンバ関数の登録 CPPUNIT_TEST(test_add2);//メンバ関数の登録 .....となってしまう
- 847 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 08:43:36.54 ID:wjxOqoMl.net]
- コンパイル時と実行時の違いがあるから直接指定はできないよ。
lambdaとかbindでいけんじゃね?試してないけど。
- 848 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 09:20:50.32 ID:Dfv6m4lx.net]
- 凝ったことをした挙句テスター自体にバグ仕込んでテスト無効とか馬鹿らしいから
1回きりと割りきってシンプルに書くという考えもある
- 849 名前:デフォルトの名無しさん [2016/09/15(木) 10:13:14.67 ID:dJJn2WBE.net]
- template<typename...Args> void hoge(Args...args){}
hoge({1,2,3}); としたら hoge(std::initializer_list<int>) のように推論して欲しいのですが何故できないのですか
- 850 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 10:40:36.62 ID:krf6YZ+h.net]
- ideone.com/zJhotB
- 851 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 10:41:24.48 ID:krf6YZ+h.net]
- 投稿を暴発してしまった。
自動では推論してくれないみたいだねぇ。なんでだろう・・・。
- 852 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 14:05:17.34 ID:OOrl8bCH.net]
- 勝手に変換されても困るべ
- 853 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 16:06:02.66 ID:qnepHcI/.net]
- C++PRIMER 5TH KINDLE版でシコシコするのはどう思いますか。
尼ではさっぱり人気がないようですが。
- 854 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 16:40:29.83 ID:gyul79OX.net]
- あの手の本は意味がないよ
どんだけ、言語の仕様に詳しくなっても何の得にもならんからな
- 855 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 19:22:13.92 ID:BBoNUH+R.net]
- 熱い江添批判
- 856 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 20:07:08.11 ID:95/CUQAP4]
- おっと江添の悪口はそこまでだ
- 857 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 20:07:39.04 ID:axqGMSjf.net]
- おっと江添の悪口はそこまでだ
- 858 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 20:59:53.90 ID:XkA1sBZN.net]
- 少なくとも言語仕様を把握してない奴にライブラリは作って欲しくない
- 859 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 21:49:37.24 ID:7lTxlp13.net]
- つまりハゲはライブラリ作るな
- 860 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 21:50:15.59 ID:umQizf+V.net]
- 言語仕様が
げんこつ塩ラーメン に見えた ちょっと夜食食ってくる
- 861 名前:デフォルトの名無しさん mailto:sage [2016/09/16(金) 06:27:51.21 ID:nhdK38ZD.net]
- 「言語仕様」→「げんごしよー」→「げんこつしおらーめん」
漢字の視覚情報として入力されたパターンを、 脳内でいったん音声情報に変換してから似た言葉に錯誤したのね。 俺の認識手順と違うみたいなので理解するのに手間取った。
- 862 名前:デフォルトの名無しさん mailto:sage [2016/09/16(金) 07:23:14.79 ID:1ml378Vd.net]
- >>849
言語仕様の後にライブラリのラだけ見えたからさらに連想を促進した
- 863 名前:デフォルトの名無しさん mailto:sage [2016/09/16(金) 09:43:39.74 ID:wscqtQV8.net]
- おまえらハゲを敬え
- 864 名前:デフォルトの名無しさん [2016/09/16(金) 10:02:58.29 ID:q1C1+fLl.net]
- dnaimg.com/2011/06/07/personal-rocket/img_001.jpg
- 865 名前:デフォルトの名無しさん [2016/09/17(土) 19:36:33.08 ID:/lrAuukn.net]
- ハゲ(笑)
- 866 名前:デフォルトの名無しさん mailto:sage [2016/09/17(土) 20:17:46.81 ID:n9MPs/HW.net]
- ハゲが世界の技術を支えてる
- 867 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 00:04:19.65 ID:5e40+2Z7.net]
- VSのリードプログラマもハゲだな
- 868 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 00:05:00.62 ID:+iC0HZAY.net]
- ハゲが好きだなお前ら
- 869 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 00:23:27.97 ID:+IdphFbB.net]
- ハゲは絶倫!
- 870 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 00:45:36.25 ID:5e40+2Z7.net]
- 質問なんだけどnewするとき例外処理する人はvectorとかでpush_backする時も毎回tryしてんの?
- 871 名前:デフォルトの名無しさん [2016/09/18(日) 02:44:35.25 ID:9+5kS6ok.net]
- してると言えばしてるけど、多分君の思ってる感じではしてない。
- 872 名前:デフォルトの名無しさん [2016/09/18(日) 02:48:48.02 ID:9+5kS6ok.net]
- 例外は例外的にしか発生しないので、層の上の方の集約するポイントでcatchしてる。
あんまり細かくやっても意味ないしハゲる。
- 873 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 03:18:08.82 ID:+iC0HZAY.net]
- つーか、例外発生する可能性のある箇所でcatchしないとかないでしょ
- 874 名前:デフォルトの名無しさん [2016/09/18(日) 03:29:47.07 ID:L03d0R0a.net]
- あまり細かい事気にしてるとハゲるよw
- 875 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 03:43:50.19 ID:1yHXSEjx.net]
- 問い1「newするとき毎回try catchするバカはvectorのpush_backもtry catchするのか?」
答え「している可能性あり」 問い2「newするとき毎回try catchするバカは非noexcept関数の呼び出しも毎回try catchするのか?」 答え「バカの行動は一貫性が無いのでしていないだろう」
- 876 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 04:12:03.01 ID:CEGgaeCy.net]
- // Aをnewしてveにpush_back
// push_backは落ちないようcatchのおまじない必須 try { ve . push_back( new A( new R(), new S() ) ); } catch ( ... ) {}
- 877 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 04:50:42.33 ID:EIh/dcA1.net]
- そんな基本的なコンテナのエラーを、catchしても、
プログラマーが回復させることは出来ない 強制終了されるままにしておいた方がいい 下手すれば、エラーログに書き込む際、さらにエラーが起きるかも
- 878 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 05:42:12.02 ID:+IdphFbB.net]
- クラスの型が一致しなくてcatch出来なかった例外は一体何処へ吹っ飛んでいくのだろうか…
- 879 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 06:02:09.25 ID:+jQZdVYD.net]
- NULLチェックしろよとチェックツール使った品質チームが指摘してくるんだが、そもそもnew失敗したら例外になるからNULLチェックまで来ねーだろ、お前のチェックチーム馬鹿すぎだろって突っ込みを誰もしないで数年
- 880 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 06:29:33.73 ID:CQAObZ4Q.net]
- バカってなんでnewしたがるんだろう
- 881 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 06:44:28.23 ID:xYSNtktv.net]
- >>867
チェックツールが古い仕様向けに作られているのだろうか。 newが失敗した場合はNULLが返る、だからnewの後は常にNULL(ポ)を確認せよ。 指摘を聞き流すだけでなく、チェックする部署の人に ツールのバージョンだか設定だかを現状に合うように改めてもらったら?
- 882 名前:デフォルトの名無しさん [2016/09/18(日) 08:41:57.71 ID:TydQpzdL.net]
- pimpl = new impl;
if(pimpl == nullptr) []()[[maybe_unused]]{throw std::bad_alloc();}();
- 883 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 08:48:34.25 ID:2blUzsBI.net]
- c++ は最新仕様だけ覚えていればいいってもんではない。
- 884 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 09:21:00.65 ID:/1FlYzFJ.net]
- >>868
make_uniqueはコンストラクター引数の補完が働かないので使いづらい
- 885 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 09:22:05.47 ID:6SQSBv8I.net]
- 仕様だけは詳しいが、実務は全くできない奴いるなw
正直最新の仕様なんかについてうんちく垂れるより、古い仕様でもきちんと動くほうがいい。 中には、よくわからずに使って、はまって納期遅れさせるバカもいるwwww
- 886 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 09:33:08.57 ID:1yHXSEjx.net]
- 日本語が理解できずに話をすり替えてしまう>>871みたいな低能や
例外処理の基本も理解できていない>>865みたいな低能が その品質チームとやらにいるんだろう
- 887 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 10:19:05.24 ID:EIh/dcA1.net]
- new にも、NULLを返すバージョンと、例外にするバージョンなど、色々あるんじゃね?
- 888 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 11:18:56.17 ID:WPlu++Kc.net]
- 例外処理って目的によって異なる
素直にシステムがエラー吐いて終了で問題ない場合 特定のエラーを検出して改善の為のログを残したい場合 止まると困るシステムの場合十分なリカバリー手段を用意して例外検出と復旧処理を行う 通常のアプリケーションにnew なんて使わないって書いてあったけど プログラムの目的とエラーに対する必要な強度を仕分けして 全体としてどの様に例外処理を組み込むかって事だよね
- 889 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 14:08:31.95 ID:5e40+2Z7.net]
- やっぱりC++って集団で使うのには向いてないんだよね
どのC++の話してるか分からないか
- 890 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 14:09:15.23 ID:EIh/dcA1.net]
- ゲームエンジンの本には、自分でメモリプールを作っている例が、よく載っている
newをその都度呼ぶと遅いから、まとめて何十個分のメモリを確保する。 そしてその中から、今使う分だけを使う でも、それぐらいの機能、既に誰かが、ライブラリを作っていそうなもんだが
- 891 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 14:14:46.13 ID:/A9gXhFE.net]
- boost.pool
- 892 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 14:42:48.66 ID:5e40+2Z7.net]
- もちろんメモリプールなんてたくさん出回ってるし今度標準にも入る
でもそれらの性能が十分とは限らない
- 893 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 14:43:41.47 ID:Qq7O8IvU.net]
- 昔、lokiとかあったやん?
使ったこと無いからしらんけど あれにもメモリプールなかったっけ
- 894 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 15:03:20.15 ID:vvzKkhQt.net]
- >>869
えええええええ いつからそんなクソ仕様になったん… 例外じゃないのか
- 895 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 15:26:11.91 ID:vvzKkhQt.net]
- と思ったけどC++て全部チェック例外だっけ
newのたびにtryさせられるよりsegmentation faultのほうがマシだな
- 896 名前:868 mailto:sage [2016/09/18(日) 16:16:16.34 ID:xYSNtktv.net]
- >>882
勘違いさせたならすまん。>>869 で書いた 「newが失敗した場合はNULLが返る、だからnewの後は常にNULL(ポ)を確認せよ」 っていう方が古いC++でのnewの動作ね。 古いチェックツールがそんなエラーを返してるんじゃないの? という意図。 現在はnewの失敗は例外が返るのがデフォルト動作だよな。 nothrowで例外を出さないように指示したら今でもnullptrが返るけど。
- 897 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 16:24:41.60 ID:ygUqx6Ix.net]
- >>883
C++は全てjavaでいう非チェック例外じゃないの?
- 898 名前:デフォルトの名無しさん [2016/09/18(日) 16:45:14.01 ID:/VzCUPpk.net]
- お前らの例外話は何故いつもnewなのか
- 899 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 17:36:57.68 ID:5e40+2Z7.net]
- newにおける例外の扱いのベストプラクティスが示されていないから
- 900 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 17:37:48.57 ID:+iC0HZAY.net]
- ないものは自分で見つけんだよ
- 901 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 18:15:15.56 ID:sUrpOA8l.net]
- ひょえー
- 902 名前:デフォルトの名無しさん [2016/09/18(日) 18:28:35.89 ID:L03d0R0a.net]
- うはー
- 903 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 19:43:10.68 ID:1yHXSEjx.net]
- >>886
newを見るとすぐtry catchで囲わないといけないと妄想してる882みたいな低能が多いからでは? catchを見ると「近くにnewが有るはず」と脊髄反射したに相違ない
- 904 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 19:45:44.60 ID:XW30Cfu8.net]
- それよりもnullチェックってどうやるのがスマートなんだ?
使ってるvector全部をif文にぶち込んでるコード見かけて驚愕したんだが
- 905 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 20:00:16.67 ID:aEHfUxVO.net]
- vectorに挿入する前にチェックすればいい
- 906 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 20:06:12.23 ID:5e40+2Z7.net]
- 一部の用途を除いてnewが失敗する可能性は考えなくていい
- 907 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 21:15:21.06 ID:sUrpOA8l.net]
- 説明願います
- 908 名前:デフォルトの名無しさん mailto:sage [2016/09/18(日) 21:23:31.21 ID:ORSLx8xU.net]
- VBのCSV出力が遅いんだけど
Cで書いたら速くなんの?
- 909 名前:デフォルトの名無しさん mailto:sage [2016/09/19(月) 01:02:18.86 ID:aveOgqLD.net]
- むしろその手の処理はVBの方が速い
- 910 名前:デフォルトの名無しさん mailto:sage [2016/09/19(月) 01:04:42.68 ID:aveOgqLD.net]
- >>885
んなこたーない []- [ここ壊れてます]
- 912 名前:デフォルトの名無しさん mailto:sage [2016/09/19(月) 12:39:37.38 ID:d/dsjAXw.net]
- >>896
文字列連結を馬鹿みたいに繰り返して遅くなってるんじゃないの
- 913 名前:デフォルトの名無しさん mailto:sage [2016/09/19(月) 12:39:37.43 ID:d/dsjAXw.net]
- >>896
文字列連結を馬鹿みたいに繰り返して遅くなってるんじゃないの
- 914 名前:デフォルトの名無しさん mailto:sage [2016/09/19(月) 12:51:32.58 ID:0BKQBe6K.net]
- かなり大事な事ですねw
VBとかC#で遅いからといってCやC++にしたところで劇的に速くなる保証なんかないのにな 何の言語にしようがどうしようもないか自分の組み方がおかしいかどちらか
- 915 名前:デフォルトの名無しさん mailto:sage [2016/09/19(月) 13:10:11.98 ID:fA1B/38Y.net]
- >>896
ファイル出力が遅いのかテキストの組み立てが遅いのか
- 916 名前:デフォルトの名無しさん mailto:sage [2016/09/19(月) 13:15:05.33 ID:3VQNeREi.net]
- VBのCSVライブラリ使ってるなら、
規格(?)に準拠するようにいろんな処理してるから かなり遅いっぽいぞ エスケープが要らないとかダブルクォーテーションが要らないとか 条件を限定できるなら高速化の余地もあるんでないかい
- 917 名前:デフォルトの名無しさん mailto:sage [2016/09/19(月) 13:17:08.06 ID:MZBT2IFS.net]
- >>899>>902>>903
おまえらこのスレで面倒見るつもりなのw?
- 918 名前:デフォルトの名無しさん mailto:sage [2016/09/19(月) 19:50:10.96 ID:urF+pqo3.net]
- むしろ同じロジックでコードを書いて比較してほしい。
- 919 名前:デフォルトの名無しさん mailto:sage [2016/09/19(月) 19:55:07.34 ID:80/BHnqI.net]
- アルゴリズムの選択を誤ればJavaにすら負ける
大事なのはアルゴリズム
- 920 名前:デフォルトの名無しさん [2016/09/19(月) 20:12:40.99 ID:sZXP+7ot.net]
- Javaで適切なアルゴリズムを使うPGと同一人物が
C++で不適切なアルゴリズムをわざわざやるかよ 同一人物が使ってどっちが優れた結果を出せるかだろ
- 921 名前:デフォルトの名無しさん mailto:sage [2016/09/19(月) 21:10:21.81 ID:urF+pqo3.net]
- ここではアルゴリズムってよりライブラリ依存だな。
CSVのパースは真面目にROC準拠でやろうとすると頭が禿げるぐらい面倒くさい。 現実に扱うCSVはもっと前提条件を少なくできるだろうから、 自分で簡易版のパーサーを実装した方がいいかも。
- 922 名前:デフォルトの名無しさん mailto:sage [2016/09/19(月) 22:22:17.19 ID:aveOgqLD.net]
- ROCってのが何なのかわからんが
RFC 4180なら所詮ワンパスなのでそんなに難しくない。 C#で自作したものをブビライブラリと比較したら10倍程度の速さだった。 どうせTextFieldParser使ったんだろ
- 923 名前:デフォルトの名無しさん [2016/09/19(月) 22:40:37.56 ID:Kz778z8P.net]
- CSVなんかただの記号区切りのテキストファイルだろ。
区切ってテキスト出力すりゃええだけじゃろ
- 924 名前:デフォルトの名無しさん mailto:sage [2016/09/19(月) 22:50:33.73 ID:w3ljrVli.net]
- 質問者は出力について悩んでいる人に
パーサーの自作をすすめる これがクソスレのクオリティ
- 925 名前:デフォルトの名無しさん mailto:sage [2016/09/19(月) 23:03:23.99 ID:eTcqfU0K.net]
- パーサー次第で出力に差が出るだろう、そんなことも分からんのか???
- 926 名前:デフォルトの名無しさん mailto:sage [2016/09/19(月) 23:41:33.03 ID:byZSyyWN.net]
- テキトーな仕様のオレオレCSVの自作を勧める奴がいまだに存在するとは。
- 927 名前:デフォルトの名無しさん mailto:sage [2016/09/19(月) 23:45:11.41 ID:r/G6SK9c.net]
- 1行ずつ読んでいくんじゃないのか
- 928 名前:デフォルトの名無しさん mailto:sage [2016/09/19(月) 23:47:22.25 ID:pyTHmoe6.net]
- オレオレ仕様のcsvが氾濫してるから今更どうしようもない
それが問題になるようなら保存形式にcsvを用いる事自体が間違い
- 929 名前:デフォルトの名無しさん mailto:sage [2016/09/19(月) 23:49:18.87 ID:r/G6SK9c.net]
- csvってカンマ区切りということ以外の仕様ってあるのか?
- 930 名前:デフォルトの名無しさん mailto:sage [2016/09/20(火) 00:09:05.24 ID:Em9B638f.net]
- 無い
オレオレの中でもメジャーなのに後付けでRFCが出来ただけ
- 931 名前:デフォルトの名無しさん [2016/09/20(火) 00:30:40.31 ID:o1tJ3Pdk.net]
- >>907
普通に見たことあるけど vectorじゃなくlist使って遅いとか >>911 質問読めてない糞民が何言ってんだか
- 932 名前:デフォルトの名無しさん [2016/09/20(火) 02:23:46.55 ID:E+J9y3sP.net]
- ポインタの無いC++を誰か作ってくれないかな…。
- 933 名前:デフォルトの名無しさん mailto:sage [2016/09/20(火) 03:38:57.96 ID:MJf3DPDB.net]
- >>919
C++なら、あんまりポインタ意識しなくてもできるでしょ。 ライブラリが吸収してくれるんだし。
- 934 名前:デフォルトの名無しさん [2016/09/20(火) 06:57:10.89 ID:83nQEiQC.net]
- > vectorじゃなくlist使って遅いとか
Javaしか使えないやつの付け焼き刃か
- 935 名前:デフォルトの名無しさん mailto:sage [2016/09/20(火) 07:29:03.31 ID:l/rjpK7G.net]
- >>916
区切り文字(カンマと改行)をデータとして含む場合にどうするかについての仕様がある。 それが面倒くさいなら最初からタブ区切りテキストにしておけと思うが。
- 936 名前:デフォルトの名無しさん mailto:sage [2016/09/20(火) 07:41:11.11 ID:h/QlA5En.net]
- ここで休んでいくか
o.8ch.net/fg0j.png
- 937 名前:デフォルトの名無しさん mailto:sage [2016/09/20(火) 08:17:39.33 ID:yT+pR0RD.net]
- CSVは汎用性とか規格準拠とか考え始めると面倒らしいね。
カーニハンとパイクの有名な『プログラミング作法』第4章でも 素朴なプロトタイプから汎用ライブラリに磨き上げていくネタに使われてる。 引用符でくくられた文字列フィールドに含まれるカンマを読み飛ばすとか、 文字列に引用符文字を含ませる場合のエスケープ処理、 フィールド先頭以外にいきなり出てきた引用符文字はどう扱うべきか、 そういった問題。 結局、仕様のあいまいな部分は、データをExcelに処理させて どう解釈するかを観察し、それに動作を合わせるという妥協策とか。 面白いけど奥深い(面倒くさい)話が載ってる。
- 938 名前:デフォルトの名無しさん mailto:sage [2016/09/20(火) 08:23:33.04 ID:pi/Zyw6M.net]
- 面倒くさがりの俺はカンマのあとのスペースの扱いをどうするか考えるのをやめた
- 939 名前:デフォルトの名無しさん mailto:sage [2016/09/20(火) 08:30:50.00 ID:nnGYYj6O.net]
- 実際問題、業務で扱うCSVがRFCにそってた試しがない
データ中に,とダブルクォーテーションがないこと前提で全フィールド囲みなしとか データの改行かどうかはフィールド数から判断しろとか
- 940 名前:デフォルトの名無しさん mailto:sage [2016/09/20(火) 08:34:47.14 ID:9l0NUqqb.net]
- 空白は有効な値として取り込みマズければ前処理でなんとかしてくれというのがかんたん
- 941 名前:デフォルトの名無しさん mailto:sage [2016/09/20(火) 08:49:26.68 ID:pi/Zyw6M.net]
- >>927
空白のあとの引用符出現とか考えると面倒
- 942 名前:デフォルトの名無しさん mailto:sage [2016/09/20(火) 15:15:36.96 ID:sn1HJBVo.net]
- 裏でExcel立ち上げてそいつにCSV読み込ませる
ってのがスマートなやり方かもしれん。
- 943 名前:デフォルトの名無しさん [2016/09/20(火) 16:11:59.45 ID:83nQEiQC.net]
- 手作業でか? COM使えよ
- 944 名前:デフォルトの名無しさん [2016/09/20(火) 16:34:35.12 ID:83nQEiQC.net]
- ところでさ
bitsetって複数ビットへのアクセスってできたっけか? 00001111 から 0001 のprvalueを得たり、 00000000 を 00011100 にするのに bs(4,2) = 0b111; みたいなこと
- 945 名前:デフォルトの名無しさん mailto:sage [2016/09/20(火) 18:42:56.25 ID:yRlSWmtK.net]
- 今すぐN4606をダウンロードして20.9を読め
- 946 名前:デフォルトの名無しさん mailto:sage [2016/09/20(火) 19:03:07.64 ID:ChLW8Xs7.net]
- C++標準についてですが
よく言われる「ゼロオーバーヘッド原則」はどのように守られているのでしょうか? たとえば委員会はこの原則を明文化して守っていますか? または原則が委員の思想や感情だけによって守られていますか? 今後のアップデートにより破られることはありますか? D&Eには「思想も進化する」というような文が見られますが設計思想の変更プロセスはマニュアル化されているのでしょうか?
- 947 名前:デフォルトの名無しさん mailto:sage [2016/09/20(火) 20:52:23.19 ID:DFwXwRkO.net]
- ゼロオーバーヘッドの意味するところはなんなのか知らんが、
仮想関数使った時点で間接参照になって現代のキャッシュマシンには厳しいオーバーヘッドになっていると思いますけどね。
- 948 名前:デフォルトの名無しさん mailto:sage [2016/09/20(火) 20:54:50.75 ID:ChLW8Xs7.net]
- たぶんあなたは「ゼロオーバーヘッド原則」を何かわかっていないですね。
とにかく標準規格の委員会の設計方針のルールをしりたいのです
- 949 名前:デフォルトの名無しさん [2016/09/20(火) 20:58:56.89 ID:k+TyjvZt.net]
- キタ━━━━(゚∀゚)━━━━!!
- 950 名前:デフォルトの名無しさん [2016/09/20(火) 21:04:19.73 ID:obZzfy4A.net]
- そりゃ原則なんだから、原則守られるだろう。
原則Goto文が使われる事は絶対無いのと同じだ。
- 951 名前:デフォルトの名無しさん mailto:sage [2016/09/20(火) 21:10:11.42 ID:3ENBAG3F.net]
- てかここで聞く質問じゃないだろ。直接委員会にメール送れよ。
- 952 名前:デフォルトの名無しさん mailto:sage [2016/09/20(火) 21:12:30.36 ID:DFwXwRkO.net]
- >>938
知らないなら答えないでください とかいいだすぞwwwwwww
- 953 名前:デフォルトの名無しさん mailto:sage [2016/09/20(火) 21:16:42.79 ID:tBN6CcRw.net]
- よし教えてやろう
その言語機能を使わない人にとって(マシン語レベルで)余分な命令が生成されないこと ただしそれは書いたコードに対する局所的なもので スタートアップ時の処理のオーバーヘッドやワーキングセットの肥大化によるキャッシュヒット率低下ついては触れないのが常
- 954 名前:デフォルトの名無しさん mailto:sage [2016/09/20(火) 21:17:17.91 ID:5hgqMPTY.net]
- あかんやつか
- 955 名前:デフォルトの名無しさん [2016/09/20(火) 21:57:22.02 ID:83nQEiQC.net]
- >>932
それはともかく、おまえは氏ね
- 956 名前:デフォルトの名無しさん mailto:sage [2016/09/20(火) 21:59:44.26 ID:26fGody7.net]
- >>933
明文化されたルールはないんじゃない?ルールにするメリットないからやらないだろうし。
- 957 名前:デフォルトの名無しさん [2016/09/20(火) 22:01:25.46 ID:83nQEiQC.net]
- ヘリコプターがシアトル付近を飛行中に、ナビゲーション・システムと通信系が故障してしまい、現在位置を把握することができなくなってしまった。
機長は、近くに見えた高いビルにヘリコプターを寄せ、周りを旋回しながら、副操縦士に「私は今どこにいますか?」と大きな紙に書かせ、それをビルの中の人間に見せるように命じた。 ビルの中の人間は、大きな紙に「あなたは今、ヘリコプターの中です」と書いて答えてきた。
- 958 名前:機長はにっこりと笑って手を振り、副操縦士に言った。
「あれはマイクロソフトの本社ビルだ。ここから東へ向かえば空港があるはずだ」 「どうしてマイクロソフトの本社ビルだと分かったんです?」 「奴らはいつも、技術的には完璧だが、まったく役に立たない答えしか寄こさないからさ」 [] - [ここ壊れてます]
- 959 名前:デフォルトの名無しさん mailto:sage [2016/09/20(火) 22:15:01.88 ID:ChLW8Xs7.net]
- >>943
そうですか。ありがとうございます。
- 960 名前:デフォルトの名無しさん mailto:sage [2016/09/20(火) 22:16:07.34 ID:Em9B638f.net]
- >>933
そんな自縄自縛ルールを明示したらjavaみたいになってしまうだろ。
- 961 名前:デフォルトの名無しさん mailto:sage [2016/09/20(火) 22:26:54.29 ID:A2psZARz.net]
- >>912
えっ
- 962 名前:デフォルトの名無しさん mailto:sage [2016/09/20(火) 22:51:13.68 ID:9l0NUqqb.net]
- >>940
そんな機種依存の最適化を気にするのも広い意味でオーバーヘッドや
- 963 名前:デフォルトの名無しさん mailto:sage [2016/09/20(火) 22:54:34.83 ID:wtHZC2ze.net]
- >>931
bitsetは改良したらもっと使われると思うんだけどなあ boostみたいにサイズを動的に変えられるようにするのとバイト列として取り出せるようにして欲しい
- 964 名前:デフォルトの名無しさん mailto:sage [2016/09/20(火) 23:04:57.83 ID:2u6BtGm8.net]
- >>947
バカにふれるな
- 965 名前:デフォルトの名無しさん mailto:sage [2016/09/20(火) 23:45:29.10 ID:g6KAU3qV.net]
- ゼロヘア・アラウンド・オーバーヘッドの略
- 966 名前:デフォルトの名無しさん mailto:sage [2016/09/21(水) 01:01:45.84 ID:vGo10QGu.net]
- >>933
江添に訊け
- 967 名前:デフォルトの名無しさん mailto:sage [2016/09/21(水) 06:53:20.55 ID:t4AsfpX5.net]
- >>949
サイズを動的に変えるとなるとメモリーアロケーションが必要になるからなぁ 上限を 32bit/64bit に制限する手もあるけど中途半端感が拭えないし... そもそも普通にビット演算で事足りるし
- 968 名前:デフォルトの名無しさん mailto:sage [2016/09/21(水) 09:03:47.17 ID:K2D2Rq8+.net]
- >>933 は例の人物の再来って感じだなぁ。
前スレッド終盤から、このスレッド序盤で活動した人の口調(文体)に似ている。 自分が理解しているレベルにぴったり適合し、自分が理解できる説明をされないと 「そんなことは聞いていません」「もっと実のある回答をお願いします」などと 慇懃無礼な態度で読み手の神経を逆撫でする質問者がいたんだよ。 ちなみに >>933 の質問には答えられません。
- 969 名前:デフォルトの名無しさん mailto:sage [2016/09/21(水) 10:48:52.21 ID:7D4j/v4w.net]
- シュトラウプ(うろ覚え)さんに直接メールすれば答えてくれそう。
そんな英語力は無いんだろうけど。
- 970 名前:デフォルトの名無しさん [2016/09/21(水) 14:04:05.66 ID:6wq1WTZb.net]
- >>949 >>953
thx なさそうってことはわかった
- 971 名前:デフォルトの名無しさん mailto:sage [2016/09/21(水) 20:33:55.57 ID:mzpKxj3U.net]
- >>954
神経を逆撫でをしたレスには見えたが 回答者がアスペな回答をしたからだったと記憶しているが。 お前、その時の回答者か?
- 972 名前:デフォルトの名無しさん [2016/09/21(水) 20:59:57.83 ID:6wq1WTZb.net]
- スルー検定中
- 973 名前:デフォルトの名無しさん mailto:sage [2016/09/21(水) 21:04:36.22 ID:49I69gX0.net]
- ここもワッチョイ入れた方がいいと思うよ
C#の初心者スレとか酷かったのが大分良くなったし
- 974 名前:デフォルトの名無しさん mailto:sage [2016/09/21(水) 23:57:14.58 ID:juClqO0A.net]
- >>952
メールしてみゆ
- 975 名前:デフォルトの名無しさん mailto:sage [2016/09/22(木) 00:08:42.02 ID:G5ENlyOZ.net]
- 諸事情と成り行きでコンストラクタがこんな風になったんだけど糞コードですか?
hoge(bool type) : base(type ? static_cast<base>(new a) : static_cast<base>(new b)){}
- 976 名前:デフォルトの名無しさん mailto:sage [2016/09/22(木) 00:19:01.74 ID:RtaHiGLM.net]
- >>961
ポインタがstatic_cast<base>できるのか?
- 977 名前:デフォルトの名無しさん mailto:sage [2016/09/22(木) 00:21:49.80 ID:G5ENlyOZ.net]
- >>962
ミス 正しくはstatic_cast<base*>
- 978 名前:デフォルトの名無しさん mailto:sage [2016/09/22(木) 00:46:02.45 ID:Pt+3vwTk.net]
- 実装はどうでもいいが
boolを取ってそれによってインスタンスの性質が(大きく?)変わるコンストラクタというのが
- 979 名前:用者視点からの一般論では糞っぽい設計だな []
- [ここ壊れてます]
- 980 名前:デフォルトの名無しさん [2016/09/22(木) 00:54:34.74 ID:6AgJgQbd.net]
- static_castしてる意味が解らん
- 981 名前:デフォルトの名無しさん mailto:sage [2016/09/22(木) 01:00:01.33 ID:G5ENlyOZ.net]
- >>965
三項演算子だから型を合わせないといけない
- 982 名前:デフォルトの名無しさん mailto:sage [2016/09/22(木) 01:44:09.82 ID:eab4XCGG.net]
- hogeにcreate_aとcreate_bみたいなstaticメソッド作って、ユーザーコード側で参考演算子書かせりゃいいのに
馬鹿すぎてそんなことも思いつかないなら、今すぐコプログラマーやめろ(´;ω;`)
- 983 名前:デフォルトの名無しさん mailto:sage [2016/09/22(木) 01:59:14.64 ID:sh3eyHdy.net]
- きっと何かのテンプレートか何かに渡すとかで
コンストラクタがあの形じゃなきゃダメな制約が云々でしょ
- 984 名前:デフォルトの名無しさん mailto:sage [2016/09/22(木) 02:01:04.64 ID:G5ENlyOZ.net]
- >>967
これが全く良くないのは分かってるがやりたくなさすぎる仕事だったから横着しすぎた感はある
- 985 名前:デフォルトの名無しさん mailto:sage [2016/09/22(木) 03:01:20.41 ID:7BuONNwf.net]
- >>145
S只 ST只 STL只 貞子
- 986 名前:デフォルトの名無しさん mailto:sage [2016/09/22(木) 04:45:30.88 ID:uum3cLOt.net]
- new bって初心者っぽい
- 987 名前:デフォルトの名無しさん mailto:sage [2016/09/22(木) 05:28:33.71 ID:gyLxLatL.net]
- >>967
参考にします
- 988 名前:デフォルトの名無しさん mailto:sage [2016/09/22(木) 07:30:27.01 ID:RG/iP2c6.net]
- ファクトリーメソッドが要るとみんなは気付いているが
政治的問題でなし崩しになっていると見た
- 989 名前:デフォルトの名無しさん mailto:sage [2016/09/22(木) 07:40:14.43 ID:vdVnk2cw.net]
- ファクトリーメソッドでいい引数の渡し方ってある?っていうか引数の設計?
パラメータばっか増えてうまくまとめられない。
- 990 名前:デフォルトの名無しさん mailto:sage [2016/09/22(木) 14:13:51.56 ID:7wkfE+LH.net]
- >>974
条件がわからんけどbuilderパターン使うとか
- 991 名前:デフォルトの名無しさん mailto:sage [2016/09/22(木) 14:39:48.97 ID:sh3eyHdy.net]
- 俺も条件がわからんが
テンプレートのパーフェクトフォワードが使えるかもしれないね
- 992 名前:デフォルトの名無しさん mailto:sage [2016/09/22(木) 23:49:28.05 ID:vdVnk2cw.net]
- サンキュー。
- 993 名前:デフォルトの名無しさん [2016/09/23(金) 02:38:31.47 ID:FrbFFvPo.net]
- 初めから読んでみたんですが、
このスレ恐い人もいますね。
- 994 名前:デフォルトの名無しさん mailto:sage [2016/09/23(金) 13:12:24.83 ID:z2QCychJ.net]
- おっかない人が鉞持って茂みに潜んでることもあるので覚悟して臨んで
- 995 名前:デフォルトの名無しさん mailto:sage [2016/09/23(金) 13:37:45.42 ID:ircl/elV.net]
- C++やる人は怖いのですね
- 996 名前:デフォルトの名無しさん mailto:sage [2016/09/23(金) 15:04:30.06 ID:z2QCychJ.net]
- C++をやったから怖くなったのか、それとも怖い人はC++に魅入られるのか、それともその両方なのか、それはまだ判りません
- 997 名前:デフォルトの名無しさん mailto:sage [2016/09/23(金) 16:12:15.84 ID:1AYxo37g.net]
- std::array<int,3> ia = {1,2,3};
なんでいちいちサイズをしていなきゃいけないの? コンパイラは右式からサイズを知れるはずだよね
- 998 名前:デフォルトの名無しさん [2016/09/23(金) 16:43:56.15 ID:DI5cYQNa.net]
- arrayがクラステンプレートだからだよ
テンプレート実引数を推定できるのは関数テンプレートだけ
- 999 名前:デフォルトの名無しさん mailto:sage [2016/09/23(金) 16:50:29.51 ID:Z6rdhOh4.net]
- もともと生配列なんて狭いスコープ内に閉じた使い方しかしてなかったし、あえてstd::array に変える気が起こらん。
- 1000 名前:デフォルトの名無しさん [2016/09/23(金) 16:56:36.61 ID:SmlWzTAW.net]
- arrayってoparator[]が境界チェック無いとか困る〜
- 1001 名前:デフォルトの名無しさん mailto:sage [2016/09/23(金) 17:02:31.08 ID:1AYxo37g.net]
- >>983
そう・・・・ 使い物にならんな、標準なんかにするなよw
- 1002 名前:デフォルトの名無しさん mailto:sage [2016/09/23(金) 17:04:21.59 ID:k0FhbiHl.net]
- サイズとか取れて便利じゃん。俺ベクタしか使ってないけど。
- 1003 名前:デフォルトの名無しさん mailto:sage [2016/09/23(金) 18:19:30.71 ID:z2QCychJ.net]
- "std::array<int> ia = {1,2,3}" という文字列を読んで、括弧内の要素数を数えて
std::array<int,3> ia = {1,2,3}として書き換えてくれるテンプレートメタプログラミングすればいんじゃね?
- 1004 名前:デフォルトの名無しさん mailto:sage [2016/09/23(金) 18:28:49.47 ID:Z6rdhOh4.net]
- template<std::size_t N> の文脈の中でだったら不要だしな
- 1005 名前:デフォルトの名無しさん mailto:sage [2016/09/23(金) 18:41:44.36 ID:jjS354wW.net]
- 配列をstd::arrayに置き換えなくてはならなくなった。
と被害妄想してグチを2chで垂れるのは間違いなく人生負け組
- 1006 名前:デフォルトの名無しさん mailto:sage [2016/09/23(金) 19:45:39.19 ID:k/GEXWfz.net]
- 新しいコンパイラならstd::experimental::make_arrayが使えるんでねぇの?
en.cppreference.com/w/cpp/experimental/make_array
- 1007 名前:デフォルトの名無しさん mailto:sage [2016/09/23(金) 20:07:45.67 ID:1AYxo37g.net]
- ベタに配列でよくね?
- 1008 名前:デフォルトの名無しさん mailto:sage [2016/09/23(金) 20:08:53.66 ID:1AYxo37g.net]
- >>990
2ちゃんに居る時点で負けだろw
- 1009 名前:デフォルトの名無しさん mailto:sage [2016/09/23(金) 20:23:26.18 ID:Z6rdhOh4.net]
- algorithmにbeginとendを渡すときでも生配列でいいしな
- 1010 名前:デフォルトの名無しさん mailto:sage [2016/09/23(金) 20:26:55.96 ID:x7wdola9.net]
- シンタックスシュガー
- 1011 名前:デフォルトの名無しさん mailto:sage [2016/09/23(金) 21:01:07.45 ID:FB5yu9xq.net]
- サイズ欲しい時に変数用意したり、演算したりするのが面倒だし、余分な処理になるからじゃないの?
std::arrayはサイズ変数を保持していないし、演算もしていないし at()使えば範囲チェックしてくれるし、生配列にも直接アクセスできるし 凄く便利だと思うけどな
- 1012 名前:デフォルトの名無しさん mailto:sage [2016/09/23(金) 21:20:41.97 ID:kJ5RCJcw.net]
- 超薄型コンドームがでて、感覚上生挿入と変わらないことが統計学的に証明されていても、気持ちの問題だからと生を求める人がいる
- 1013 名前:デフォルトの名無しさん mailto:sage [2016/09/23(金) 21:39:11.65 ID:nEqelPbM.net]
- はい
- 1014 名前:デフォルトの名無しさん mailto:sage [2016/09/23(金) 21:39:50.82 ID:tPpdE/S0.net]
- 難しいなぁ
- 1015 名前:デフォルトの名無しさん mailto:sage [2016/09/23(金) 21:49:35.34 ID:pyQwxOFM.net]
- arrayのメリット:コピーができる
- 1016 名前:デフォルトの名無しさん mailto:sage [2016/09/23(金) 21:59:45.45 ID:x7wdola9.net]
- std::copy
- 1017 名前:過去ログ ★ [[過去ログ]]
- ■ このスレッドは過去ログ倉庫に格納されています
|

|