[過去ログ]
C++相談室 part130 [無断転載禁止]©2ch.net (1002レス)
C++相談室 part130 [無断転載禁止]©2ch.net http://mevius.5ch.net/test/read.cgi/tech/1490917669/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
554: デフォルトの名無しさん (ワッチョイ 9f32-LvKX) [] 2017/06/25(日) 19:00:42.60 ID:ogKde9930 uint32_tをuint64_tに変えたら一致するようになりました ヒントになります? http://mevius.5ch.net/test/read.cgi/tech/1490917669/554
555: デフォルトの名無しさん (ワッチョイ 9faf-6L/r) [sage] 2017/06/25(日) 19:15:35.89 ID:0WoCYScE0 VC++2015で調べたらaaa,bbbは8byteでbit_tのメンバーは b0: 0ビット目 b1: 5ビット目 b2: 10ビット目 b3: 15ビット目 b4: 20ビット目 b5: 25ビット目 b6: 32ビット目 b7: 37ビット目 に配置されてた b6から配置がずれてて30bit目と31bit目がbit_tでは使われてない なのでbでbit_tを使って初期値をセットしてもこの2bitの値は不定になる この2bitが両方とも0の時4byte目は35、 30bit目が0で31bit目が1の時99になる http://mevius.5ch.net/test/read.cgi/tech/1490917669/555
556: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9f15-LvKX) [sage] 2017/06/25(日) 23:08:48.14 ID:y0reYziw0 英語を読むのがだるいので JIS の仕様を見てみた。 まずは C99 (に相当する JISX3010:2003) の 6.7.2.1 にはこうある。 > 処理系は、ビットフィールドを保持するに十分な大きさの任意のアドレス付け可能な記憶域単位を割り付けてよい。 > 十分な領域が残っている場合、構造体内のビットフィールドの直後に続く別のビットフィールドは、同じ単位の隣接したビットに詰め込まなければならない。 > 十分な領域が残っていない場合、入り切らなかったビットフィールドを次の単位に入れるか、又は隣接した単位の境界をまたがせるかは、処理系定義とする。 > 単位内のビットフィールド割付けの順序 (上位から下位か又は下位から上位か) は、処理系定義とする。 この理屈にてらして >>555 を解釈すると、 VC++2015 での記憶域単位は 4 バイトで、ビットフィールドが単位に収まらなかった場合には次の単位に入れる という選択を取っていることになる。 で、 C++03 (JISX3014:2003) ではどうかというと 9.6 にこうある。 > クラスオブジェクト内のビットフィールドの割り当て方は処理系定義とする。 ビットフィールドの境界調整は、処理系定義とする。 ビットフィールドは、何らかのアドレス取得可能な単位内に詰め込まれる。 > 参考 処理系によっては、ビットフィールドの割当て単位をまたがることもあるし、またがないこともある。 右から左に割り当てる処理系もあるし、左から右に割り当てる処理系もある。 この文章の「単位内に詰め込まれる」というのは C での規則にあるように記憶域単位をまたがない限り (次の単位に移らずに) 詰め込むという規則にも読 めるが、ちょっとよくわからない。 常識的に考えれば C より緩い規則ということはないだろうと思うんだけど……。 >>554 指定する型が割当て方に影響するような文面は見付けられなかった。 http://mevius.5ch.net/test/read.cgi/tech/1490917669/556
557: デフォルトの名無しさん (オッペケ Sr0b-jRIn) [sage] 2017/06/25(日) 23:47:54.19 ID:Tfx4tn9Gr >常識的に考えれば (中略) ないだろうと思う 訳:ボクは非常識です http://mevius.5ch.net/test/read.cgi/tech/1490917669/557
558: デフォルトの名無しさん (スップ Sd3f-VrB2) [sage] 2017/06/26(月) 00:18:40.72 ID:mZAJ/HXWd トンチンカンな回答がほとんどで笑える http://mevius.5ch.net/test/read.cgi/tech/1490917669/558
559: デフォルトの名無しさん (ワッチョイ bfe4-Nep8) [sage] 2017/06/26(月) 00:21:57.68 ID:yL9hwVgE0 正しい回答をお願いします http://mevius.5ch.net/test/read.cgi/tech/1490917669/559
560: デフォルトの名無しさん (スップ Sd3f-VrB2) [sage] 2017/06/26(月) 00:29:03.33 ID:mZAJ/HXWd byteの40bitとbの40bitが違う位置だから (ほとんどの環境で) http://mevius.5ch.net/test/read.cgi/tech/1490917669/560
561: デフォルトの名無しさん (スップ Sd3f-VrB2) [sage] 2017/06/26(月) 00:32:01.19 ID:mZAJ/HXWd 8個のbがbyteをカバーしていない http://mevius.5ch.net/test/read.cgi/tech/1490917669/561
562: デフォルトの名無しさん (スップ Sd3f-VrB2) [sage] 2017/06/26(月) 00:37:21.07 ID:mZAJ/HXWd >>546 〜 >>551 回答するレベルじゃない 何も書かない方がマシ http://mevius.5ch.net/test/read.cgi/tech/1490917669/562
563: デフォルトの名無しさん (ワッチョイ bfe4-Nep8) [sage] 2017/06/26(月) 01:00:43.63 ID:yL9hwVgE0 そもそも専門的な質問は2chで聞くべきじゃないし 信頼できる専門書を買うべき http://mevius.5ch.net/test/read.cgi/tech/1490917669/563
564: デフォルトの名無しさん (ワッチョイ ffaa-4OJu) [sage] 2017/06/26(月) 01:09:10.53 ID:RgMKiEkv0 共用体などは、C++を、10年以上勉強してから使え。 そもそも、初心者が使い道を知らないだろ そもそも、5バイトは、40ビットだけど、 ビットフィールドが何バイトの領域に確保されるかも知らないのに、使うな。 処理系依存の機能を使うな MISRA-C でも使用禁止だし、素人が使う共用体なんて、 バグだらけで製品で使えない どの本にも、共用体を使った例など、載っていないだろ http://mevius.5ch.net/test/read.cgi/tech/1490917669/564
565: デフォルトの名無しさん (ワッチョイ 9f89-RNzd) [sage] 2017/06/26(月) 01:26:24.49 ID:YVNj3DlL0 >>564 質問者はただの学習目的かもしれんのに、 素人だとか製品では〜とか批判するのは的外れだろう http://mevius.5ch.net/test/read.cgi/tech/1490917669/565
566: デフォルトの名無しさん (ワッチョイ 374b-ckEx) [sage] 2017/06/26(月) 01:34:20.47 ID:jY+d4s2A0 >>559 すでに言われてるがまとめると>>545の状況では先頭から byteは連続する40bit bit_tは使わない2bitをはさんだ42bit を使用するのでbyte-bit_t間では 余分なbitの取得・必要なbitの欠落が起きて完全な情報のやりとりにならない http://mevius.5ch.net/test/read.cgi/tech/1490917669/566
567: デフォルトの名無しさん (ワッチョイ 9f9f-Yx6S) [sage] 2017/06/26(月) 01:50:32.70 ID:/d8dR7Ut0 5bitづつだとどうしてもアドレス跨ぎが発生するからな 4bitづつなら収まるけど http://mevius.5ch.net/test/read.cgi/tech/1490917669/567
568: デフォルトの名無しさん (オッペケ Sr0b-jRIn) [sage] 2017/06/26(月) 08:14:37.12 ID:g/kuRdPjr >信頼できる専門書を買うべき ここは信頼できる回答が示されていても日本語が読めない低能が不毛なレスを続ける所なのだが その典型例が>>559ということに本人が気付くことは無いのであった http://mevius.5ch.net/test/read.cgi/tech/1490917669/568
569: デフォルトの名無しさん (オッペケ Sr0b-jRIn) [sage] 2017/06/26(月) 20:30:39.48 ID:g/kuRdPjr そう言えば規格的には>>545の使い方はNGなので >>551が言っていることはあながち間違いでもない http://mevius.5ch.net/test/read.cgi/tech/1490917669/569
570: デフォルトの名無しさん (ワッチョイ 9f1b-ZNvc) [sage] 2017/06/26(月) 20:36:59.50 ID:cFoP2i7u0 規格的には処理系定義なので処理系のマニュアル等で確認して使うならNGではないな http://mevius.5ch.net/test/read.cgi/tech/1490917669/570
571: デフォルトの名無しさん (ワッチョイ 179a-VrB2) [sage] 2017/06/26(月) 20:43:43.05 ID:GM19K0OY0 >>551は質問の回答じゃないから http://mevius.5ch.net/test/read.cgi/tech/1490917669/571
572: デフォルトの名無しさん (ワッチョイ ffaa-4OJu) [] 2017/06/26(月) 23:25:57.41 ID:RgMKiEkv0 共用体で、バイト配列とビットフィールドは、互換性がない型だから使えない。 最低でも、10年以上勉強していない者は、共用体でバグだらけになるから使うな ビットフィールドのメモリ割付位置は、処理系依存だから、 他のOS・OSのビット数(32/64ビット)・他のコンパイラなどで使えない また、コンパイラのバージョンアップで、再コンパイルするだけでも、 メモリ割付位置は変わるから、バグ有りで使えない コンパイルエラーにならず、実行時エラーになるようなものは使えない http://mevius.5ch.net/test/read.cgi/tech/1490917669/572
573: デフォルトの名無しさん (ワッチョイ 179a-VrB2) [sage] 2017/06/26(月) 23:35:53.83 ID:GM19K0OY0 なんかムキになってる 相変わらずズレてるね http://mevius.5ch.net/test/read.cgi/tech/1490917669/573
574: デフォルトの名無しさん (ワッチョイ 9faa-ZLad) [sage] 2017/06/26(月) 23:55:54.69 ID:NfcBoQUW0 失敗を通じてしか成長できないのにね http://mevius.5ch.net/test/read.cgi/tech/1490917669/574
575: デフォルトの名無しさん (ワッチョイ bfea-WW2k) [sage] 2017/06/27(火) 01:00:05.96 ID:NwZhdH240 10年以上勉強さん流石ですw http://mevius.5ch.net/test/read.cgi/tech/1490917669/575
576: デフォルトの名無しさん (ワッチョイ 179a-VrB2) [sage] 2017/06/27(火) 08:01:35.53 ID:bJ//gE7J0 10年勉強して >>572 か 残念な人 http://mevius.5ch.net/test/read.cgi/tech/1490917669/576
577: デフォルトの名無しさん (ワッチョイ d7d1-Rbtz) [sage] 2017/06/27(火) 10:18:29.05 ID:XwCnx1+f0 for_eachを並列で高速化する場合 -D_GLIBCXX_PARALLEL でopenmp使う場合と #include <experimental/numeric> の使う場合と どっちが高速なの? http://mevius.5ch.net/test/read.cgi/tech/1490917669/577
578: デフォルトの名無しさん (ワッチョイ 17f3-PFpe) [] 2017/06/27(火) 10:35:07.84 ID:TVfTial50 自分でも無意識のうちにやってたし、ネットのサンプルとかでもよくあるけど 厳密にはunsigned intのほうが相応しい場合でもintつかってるコードをよく見かけるが いちいちintをunsigned intで宣言し直すのもあほらしいしマクロつかって unsigned intを_u_intとかに置き換えて宣言するのもそこまでしなくてもいいんじゃないかとも思うし そこらへんはテキトーでいいんっすかね・・・ http://mevius.5ch.net/test/read.cgi/tech/1490917669/578
579: デフォルトの名無しさん (スッップ Sdbf-iOY8) [sage] 2017/06/27(火) 10:51:53.32 ID:LPANs+0ed std::size_t じゃなくて? http://mevius.5ch.net/test/read.cgi/tech/1490917669/579
580: デフォルトの名無しさん (ワッチョイ d76f-ADZD) [sage] 2017/06/27(火) 11:30:31.53 ID:DL/1tDv80 負の値を取らないからって「厳密にはunsigned intのほうが相応しい」とは俺は考えないな intで済むならintにする http://mevius.5ch.net/test/read.cgi/tech/1490917669/580
581: デフォルトの名無しさん (ワッチョイ f7ea-LvKX) [sage] 2017/06/27(火) 12:25:58.18 ID:+aQQjqLh0 正の数しかとらない変数がまだ初期化されていないことを明示するために負の値(特に-1)を使うとか割とよくある。 http://mevius.5ch.net/test/read.cgi/tech/1490917669/581
582: デフォルトの名無しさん (スッップ Sdbf-iOY8) [sage] 2017/06/27(火) 14:22:30.38 ID:Gpx2Satod >>580 ・仕様として正の整数 ・intの範囲で表せる が成り立つならintにする? 自分ならstd::size_tを選ぶなあ >>581 そんな需要があるとはちょっと不思議だ。クラスメンバ? http://mevius.5ch.net/test/read.cgi/tech/1490917669/582
583: デフォルトの名無しさん (ワッチョイ 1f91-ZLad) [sage] 2017/06/27(火) 14:33:30.02 ID:ntBitUxx0 int? i; が許されるのはC#だっけ? http://mevius.5ch.net/test/read.cgi/tech/1490917669/583
584: デフォルトの名無しさん (ワンミングク MM7f-Rrwd) [sage] 2017/06/27(火) 14:41:42.08 ID:siPR+sC7M そもそもアドレス宣言と初期化は同時にしろって話だしね http://mevius.5ch.net/test/read.cgi/tech/1490917669/584
585: デフォルトの名無しさん (ワンミングク MM7f-Rrwd) [sage] 2017/06/27(火) 14:41:58.86 ID:siPR+sC7M アドレス宣言ってなんだ 宣言ね http://mevius.5ch.net/test/read.cgi/tech/1490917669/585
586: デフォルトの名無しさん (ワッチョイ d76f-ADZD) [sage] 2017/06/27(火) 15:11:12.82 ID:DL/1tDv80 >>582 std::size_tの本来の用途じゃない数値でも使つのか?それはちょっと http://mevius.5ch.net/test/read.cgi/tech/1490917669/586
587: デフォルトの名無しさん (スッップ Sdbf-iOY8) [sage] 2017/06/27(火) 16:00:23.87 ID:Gpx2Satod >>586 ああごめん、もともとは>>578の 「 厳密にはunsigned intのほうが相応しい場合でも」 に反応しての発言だった。 http://mevius.5ch.net/test/read.cgi/tech/1490917669/587
588: デフォルトの名無しさん (ワッチョイ 179a-VrB2) [sage] 2017/06/27(火) 19:00:49.27 ID:bJ//gE7J0 >>582 size_tだと64bit環境で64bitになるぞ http://mevius.5ch.net/test/read.cgi/tech/1490917669/588
589: ◆QZaw55cn4c (ワッチョイ 576d-frAY) [sage] 2017/06/27(火) 19:02:17.31 ID:kIT2/xtQ0 int が 64ビットになるべきだよね http://mevius.5ch.net/test/read.cgi/tech/1490917669/589
590: デフォルトの名無しさん (ワッチョイ 179a-VrB2) [sage] 2017/06/27(火) 19:07:21.81 ID:bJ//gE7J0 当然そういうコンパイラはある Windows上だと過去の色々なしがらみなどからintが32bitなのが普通 http://mevius.5ch.net/test/read.cgi/tech/1490917669/590
591: 片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdbf-pKS6) [sage] 2017/06/27(火) 19:08:30.52 ID:OA/PxRyod ビット数が気になるなら、<cstdint>のint??_tやuint??_tを使えばいいやんけ。 http://mevius.5ch.net/test/read.cgi/tech/1490917669/591
592: デフォルトの名無しさん (ワッチョイ 179a-VrB2) [sage] 2017/06/27(火) 19:09:53.97 ID:bJ//gE7J0 厳密にはunsignedの方が相応しいってどういう場合を想定してる? データサイズとかならunsignedの方が相応しいとも限らないよ http://mevius.5ch.net/test/read.cgi/tech/1490917669/592
593: デフォルトの名無しさん (ワッチョイ 179a-VrB2) [sage] 2017/06/27(火) 19:11:35.74 ID:bJ//gE7J0 >>591 そういう問題じゃない 言語のデフォルトサイズ、一番効率が良いとされているサイズが32bitなのか64bitなのか の問題 http://mevius.5ch.net/test/read.cgi/tech/1490917669/593
594: 片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdbf-pKS6) [sage] 2017/06/27(火) 19:15:41.98 ID:OA/PxRyod その場合はintfast_t, uintfast_tを使う http://mevius.5ch.net/test/read.cgi/tech/1490917669/594
595: デフォルトの名無しさん (ワッチョイ bfe4-Nep8) [sage] 2017/06/27(火) 19:19:52.85 ID:N0WooBY/0 データが持つ意味と型の振る舞いは極力一致させるべきで 型の振る舞いはできる限り制限するべき 負の値を取り得ないならunsignedにする ローカル変数ならsignedでもいい http://mevius.5ch.net/test/read.cgi/tech/1490917669/595
596: ◆QZaw55cn4c (ワッチョイ 576d-frAY) [sage] 2017/06/27(火) 19:30:07.19 ID:kIT2/xtQ0 >>590 え?そんなコンパイラが実在するの? http://mevius.5ch.net/test/read.cgi/tech/1490917669/596
597: 片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdbf-pKS6) [sage] 2017/06/27(火) 19:33:33.64 ID:OA/PxRyod >>596 64-bit Linuxとか使ったことねーのか? http://mevius.5ch.net/test/read.cgi/tech/1490917669/597
598: 片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdbf-pKS6) [sage] 2017/06/27(火) 19:37:05.21 ID:OA/PxRyod >>597 ごめんなさい。 http://mevius.5ch.net/test/read.cgi/tech/1490917669/598
599: デフォルトの名無しさん (ワッチョイ 179a-VrB2) [sage] 2017/06/27(火) 19:51:35.91 ID:bJ//gE7J0 特殊な例だとcharからlong longまで全部64bitとかあるぞ もちろんPCではないけど http://mevius.5ch.net/test/read.cgi/tech/1490917669/599
600: デフォルトの名無しさん (ワッチョイ 179a-VrB2) [sage] 2017/06/27(火) 19:52:40.24 ID:bJ//gE7J0 こいつが噂のMZか 一人芝居の http://mevius.5ch.net/test/read.cgi/tech/1490917669/600
601: デフォルトの名無しさん (アウアウウー Sa9b-h10b) [] 2017/06/27(火) 20:06:34.19 ID:3pUMWgYLa >>593 言語つーかCPUに依存しないか。 Core2は64ビット対応でも32ビットのが速い。 64ビットが速いのはCore iからとか。 http://mevius.5ch.net/test/read.cgi/tech/1490917669/601
602: デフォルトの名無しさん (ワッチョイ 179a-VrB2) [sage] 2017/06/27(火) 20:10:45.68 ID:bJ//gE7J0 x86の64bitモードは32bitの方が速い命令がある キャッシュ容量とかメモリ帯域とかを考えても、絶対に32bitで足りるなら、32bitを選んだ方がいい http://mevius.5ch.net/test/read.cgi/tech/1490917669/602
603: デフォルトの名無しさん (オッペケ Sr0b-jRIn) [sage] 2017/06/27(火) 21:37:34.10 ID:ExZegnFlr >こいつが噂のMZか >一人芝居の Qの一人芝居はまだ余興として見られるがもう一人のクソコテの一人芝居は痛々しくて見ていられない http://mevius.5ch.net/test/read.cgi/tech/1490917669/603
604: デフォルトの名無しさん (ワッチョイ 9fc3-NIhq) [sage] 2017/06/28(水) 02:28:02.75 ID:Irk2C7ZK0 >>595 型の振る舞いをできる限り制限するのは誤りを起こさない、起こしても明確なエラーにするのが目的だと思うんだけど、 符号なし整数型にそういった機能は無くて実際の助けにはならないから、こういう議論が起こる。 http://mevius.5ch.net/test/read.cgi/tech/1490917669/604
605: デフォルトの名無しさん (ワッチョイ d76f-ADZD) [sage] 2017/06/28(水) 04:29:23.47 ID:matoew650 むしろsignedにしておけば不正に負の値が入れられた場合チェックしやすい http://mevius.5ch.net/test/read.cgi/tech/1490917669/605
606: デフォルトの名無しさん (ワッチョイ 9f89-RNzd) [sage] 2017/06/28(水) 07:46:44.59 ID:Aii/VoAq0 符合つき整数との比較や算術演算した際に、warning出たり符合なしに変換されたりと面倒なことが多いから、定義域が非負という理由だけではわざわざ符合なしにはあまりしたくない。 http://mevius.5ch.net/test/read.cgi/tech/1490917669/606
607: デフォルトの名無しさん (スプッッ Sd3f-oVeJ) [] 2017/06/28(水) 08:16:59.41 ID:MovvcuP9d googleのスタイルだと整数は符号ありを使えってなってる http://mevius.5ch.net/test/read.cgi/tech/1490917669/607
608: デフォルトの名無しさん (スップ Sd3f-VrB2) [sage] 2017/06/28(水) 13:11:58.44 ID:4LULrFdtd APIも64bitは符号ありが多い http://mevius.5ch.net/test/read.cgi/tech/1490917669/608
609: デフォルトの名無しさん (ワッチョイ 7f91-fiUu) [] 2017/06/28(水) 14:24:20.43 ID:qTRul81R0 Vvector<vector<float>> tensor; のようなテンソルを、1列にまとめて void Vector_Func(vector<float> &v){} ベクトルの関数の引数にしたいんだけどさ これって、新たにVector<float>型のベクトルを定義してそこにベクトルの中身をコピーし、それを利用して関数を呼び出して、さらにもとのテンソルにコピーして戻すしかないのかな? 2度のコピーにかかる時間を短縮できる方法があったら誰か教えて!!! http://mevius.5ch.net/test/read.cgi/tech/1490917669/609
610: デフォルトの名無しさん (ワッチョイ bfaf-7LQj) [sage] 2017/06/28(水) 14:26:13.68 ID:+YCVI2Ik0 typedef vector<vector<float> > tensorf; それとも右辺値参照的な話だろうか http://mevius.5ch.net/test/read.cgi/tech/1490917669/610
611: デフォルトの名無しさん (ワッチョイ 9f9f-Yx6S) [sage] 2017/06/28(水) 14:29:19.59 ID:eX7vr1Kz0 参照になっているなら直接vを弄るだけでコピーする必要もないと思われ http://mevius.5ch.net/test/read.cgi/tech/1490917669/611
612: デフォルトの名無しさん (ワッチョイ d76f-ADZD) [sage] 2017/06/28(水) 15:12:35.77 ID:matoew650 >>609 1列にまとめる必要があるという前提ならどうしようもない気がする vector<vector<float>>を止めてデータの並びが最初から1列にまとまってるようなテンソルクラスを作るか、 どっかの行列ライブラリを転用するんだな http://mevius.5ch.net/test/read.cgi/tech/1490917669/612
613: デフォルトの名無しさん (ワッチョイ 9f9f-Yx6S) [sage] 2017/06/28(水) 16:00:31.95 ID:eX7vr1Kz0 参照渡しでvが正常に得られるということは、vectorが値の参照を許容しているとも言える。 http://mevius.5ch.net/test/read.cgi/tech/1490917669/613
614: デフォルトの名無しさん (ワンミングク MM7f-Rrwd) [sage] 2017/06/28(水) 16:46:10.90 ID:cWs7iztoM >>609 iteratorパターンかrange viewのようなものを作る http://mevius.5ch.net/test/read.cgi/tech/1490917669/614
615: デフォルトの名無しさん (オッペケ Sr0b-jRIn) [sage] 2017/06/28(水) 18:00:52.06 ID:lG20CtJar 612は健常者 http://mevius.5ch.net/test/read.cgi/tech/1490917669/615
616: ◆QZaw55cn4c (ワッチョイ 179a-jSYe) [sage] 2017/06/28(水) 22:05:12.76 ID:y88Z2FQA0 >>597 その64bit Linux に乗っているコンパイラは何? http://mevius.5ch.net/test/read.cgi/tech/1490917669/616
617: デフォルトの名無しさん (ササクッテロラ Sp71-kiAr) [] 2017/06/29(木) 22:16:27.01 ID:3dQByb1op C++の数値計算のコード読んでくとreadmeにSiam journal って雑誌の引用見かける事がやたら多いんだけどc++やる人は必読の雑誌だったりします? http://mevius.5ch.net/test/read.cgi/tech/1490917669/617
618: デフォルトの名無しさん (ワッチョイ 016f-bKJX) [sage] 2017/06/30(金) 01:47:04.93 ID:66+xb1tk0 C++ってより言語を問わず数値計算やる人だな 高速性が要求される数値計算はC++が使われることが多いってだけ http://mevius.5ch.net/test/read.cgi/tech/1490917669/618
619: デフォルトの名無しさん (ワッチョイ 46e4-ejav) [sage] 2017/06/30(金) 01:56:16.60 ID:/WxXdso/0 まず数学力を鍛えたほうがいい http://mevius.5ch.net/test/read.cgi/tech/1490917669/619
620: デフォルトの名無しさん (オッペケ Sr71-F+4p) [sage] 2017/06/30(金) 08:34:53.69 ID:2shJEbz+r これがアスペというやつだな http://mevius.5ch.net/test/read.cgi/tech/1490917669/620
621: デフォルトの名無しさん (ワッチョイ 921b-zTMA) [sage] 2017/07/01(土) 07:18:19.26 ID:C6ffpB7m0 式テンプレートを勉強中です。 X(i) op Y(i)だけで結果が決まる場合はともかく 行列の逆行列のような一要素の計算に行列全部が影響するような計算を こいつで実装する意味ってありまつか? 実装例とかあったら教えてください http://mevius.5ch.net/test/read.cgi/tech/1490917669/621
622: デフォルトの名無しさん (ワッチョイ 06af-D66J) [sage] 2017/07/01(土) 07:25:20.19 ID:qtP/3v2i0 意味というか行列の逆行列のij成分はij余因子を行列式で割った値だと言うことを知っていれば NxN行列の逆行列の各成分はij余因子行列である(N-1)x(N-1)行列の行列式の計算になるから 数学的帰納法的にテンプレート化可能 http://mevius.5ch.net/test/read.cgi/tech/1490917669/622
623: デフォルトの名無しさん (ワッチョイ 42aa-wjSU) [sage] 2017/07/01(土) 07:49:52.59 ID:nS8nnQe50 >>622 君は説明がうまいね http://mevius.5ch.net/test/read.cgi/tech/1490917669/623
624: デフォルトの名無しさん (ワッチョイ 06af-D66J) [sage] 2017/07/01(土) 08:05:35.58 ID:qtP/3v2i0 いやそれほどでも・・・/// http://mevius.5ch.net/test/read.cgi/tech/1490917669/624
625: デフォルトの名無しさん (ワッチョイ 42aa-wjSU) [sage] 2017/07/01(土) 08:28:19.10 ID:nS8nnQe50 式テンプレートで正項と負項をバサッと消し合うようなことができないかと考えて挫折したなあ http://mevius.5ch.net/test/read.cgi/tech/1490917669/625
626: デフォルトの名無しさん (ワッチョイ 921b-zTMA) [sage] 2017/07/01(土) 08:44:48.56 ID:C6ffpB7m0 >>622 いや、その余因子を求めることも、そこから行列式を求めるにも、全行列値が必要になるわけだし、 そもそも、余因子行列式の計算はNxN->3x3までの変換が再帰的な計算でスタックを使いたおすことになるので、 ヒープに一時オブジェクトを使わずにすむといという式テンプレートのメリットが全くないんじゃないんですか? だいたい余因子行列式の除算なんて効率悪すぎて数値計算じゃ使いませんよ。 話をはっきりさせるために、ここは逆行列計算をGauss-Jordanの掃き出し法に限定しましょうや。 >数学的帰納法的にテンプレート化可能 どういう意味です? 数学的帰納法とは、 i=1のときf(1)が成立する i=nのときf(n)が成立すると仮定すれば i=n+1のときも成立することを証明して、一般的にf(n)が成立とする http://mevius.5ch.net/test/read.cgi/tech/1490917669/626
627: デフォルトの名無しさん (ワッチョイ 921b-zTMA) [sage] 2017/07/01(土) 09:09:28.46 ID:C6ffpB7m0 >>626 ちょっと、誤解を招きかねないんで、 余因子行列式が再帰的云々と書きましたが、 余因子に限らず、行列式の計算そのものが再帰的という意味です。 だから、行列式計算そのものがやたら時間がかかる。 大学の試験の答案とかで、途中点をかせぐために(連立方程式を解いて計算間違いするより加点が期待できる)、 余因子行列式/行列式 を明記したりしますが、このやり方はせいぜい手計算でできる4x4程度の話で、 それ以上だと掃き出し法に比較して極端に非効率ということです。 http://mevius.5ch.net/test/read.cgi/tech/1490917669/627
628: デフォルトの名無しさん (オッペケ Sr71-F+4p) [sage] 2017/07/01(土) 09:32:16.00 ID:T5yR4indr >>626 >効率悪すぎて数値計算じゃ使いませんよ 「式テンプレートの勉強」を「汎用数値計算ライブラリを式テンプレート化するための勉強」にすりかえられても… >どういう意味です? ヒント:回答者は日本語を正しく使えない http://mevius.5ch.net/test/read.cgi/tech/1490917669/628
629: デフォルトの名無しさん (ワッチョイ 42aa-wjSU) [sage] 2017/07/01(土) 10:10:34.74 ID:nS8nnQe50 再帰的に→帰納的に→帰納法的に jk http://mevius.5ch.net/test/read.cgi/tech/1490917669/629
630: デフォルトの名無しさん (ワッチョイ 0111-WwN4) [sage] 2017/07/01(土) 12:42:17.52 ID:RfHKhQjf0 数学用語はよくわからんけど >行列の逆行列のような一要素の計算に行列全部が影響するような計算を >こいつで実装する意味ってありまつか? ない というか式テンプレート勉強するというなら自分で軽く実装してみるべきだよ ↑の場合は速度がどうこう以前の問題だとわかるから http://mevius.5ch.net/test/read.cgi/tech/1490917669/630
631: デフォルトの名無しさん (オッペケ Sr71-F+4p) [sage] 2017/07/01(土) 13:26:13.77 ID:T5yR4indr >再帰的に→帰納的に これはひどい 再帰的と帰納的は関係ないし、数学的帰納法は帰納的でも帰納法でもない >>こいつで実装する意味ってありまつか? >ない 確かに質問に対する明確な回答なのだが、何かこう足りないような… http://mevius.5ch.net/test/read.cgi/tech/1490917669/631
632: デフォルトの名無しさん (スッップ Sd62-TIEP) [sage] 2017/07/05(水) 14:15:27.50 ID:/9Xtn5yvd scanfより速い標準入力ってない? スペース区切りの大量のintをベクトルにいれたいんだけどループ回してscanfがどうやっても最速なのかな http://mevius.5ch.net/test/read.cgi/tech/1490917669/632
633: デフォルトの名無しさん (ワッチョイ 6e1c-4/kT) [] 2017/07/05(水) 15:44:26.17 ID:4h6UtxrL0 istream_iterator<int> first(cin), last; vector<int> wish_of_632{first, last}; http://mevius.5ch.net/test/read.cgi/tech/1490917669/633
634: デフォルトの名無しさん (スッップ Sd62-TIEP) [sage] 2017/07/05(水) 16:39:36.49 ID:/9Xtn5yvd >>633 試してみるサンクス http://mevius.5ch.net/test/read.cgi/tech/1490917669/634
635: デフォルトの名無しさん (オッペケ Sr71-F+4p) [sage] 2017/07/05(水) 16:59:04.15 ID:UhWlQCq1r Visual Studio 2017のリリースビルドで試したが>>633 の方法は倍ほど遅いような http://mevius.5ch.net/test/read.cgi/tech/1490917669/635
636: 片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd62-3ntT) [sage] 2017/07/05(水) 17:16:22.28 ID:2aUA7xnEd fread, fgets, getchar http://mevius.5ch.net/test/read.cgi/tech/1490917669/636
637: 片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd62-3ntT) [sage] 2017/07/05(水) 17:22:18.00 ID:2aUA7xnEd int n = 0; if ('0' <= ch && ch <= '9') { n *= 10; n += ch - '0'; } else { put_int(n); n = 0; } http://mevius.5ch.net/test/read.cgi/tech/1490917669/637
638: 片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd62-3ntT) [sage] 2017/07/05(水) 17:31:38.49 ID:2aUA7xnEd GetStdHandle(STD_INPUT_HANDLE) http://mevius.5ch.net/test/read.cgi/tech/1490917669/638
639: デフォルトの名無しさん (ワッチョイ c2f0-wjSU) [sage] 2017/07/05(水) 18:03:51.31 ID:IVGCprss0 大量=一行10000個程度の数字が10000行ほど? http://mevius.5ch.net/test/read.cgi/tech/1490917669/639
640: デフォルトの名無しさん (オッペケ Sr71-F+4p) [sage] 2017/07/05(水) 18:09:07.25 ID:UhWlQCq1r 自前が最速なのだろうが汎用性を考えるとお勧めできない ある環境での適当な100万個の整数読み込み時間: istream_iterator : 470ms scanf : 230ms fgetc+自前スペース解析+atoi : 175ms 最初に全部char配列に読み込み+片山式パース: 32ms http://mevius.5ch.net/test/read.cgi/tech/1490917669/640
641: デフォルトの名無しさん (ワッチョイ 46e4-ejav) [sage] 2017/07/05(水) 19:23:43.26 ID:rZavNuQl0 何のチェックもしないscanf,printfのやり方が最速なのは自明 http://mevius.5ch.net/test/read.cgi/tech/1490917669/641
642: デフォルトの名無しさん (ワッチョイ 6111-wjSU) [sage] 2017/07/05(水) 20:06:49.25 ID:tZeoWZVY0 >>640 >最初に全部char配列に読み込み+片山式パース: これって随分早いけどパースより読み込みが効いてるんじゃないの 恐らくfgets使ってるんだよね http://mevius.5ch.net/test/read.cgi/tech/1490917669/642
643: デフォルトの名無しさん (オッペケ Sr71-F+4p) [sage] 2017/07/05(水) 20:09:41.12 ID:UhWlQCq1r >>642 fgetsでなくfreadで読んだ なおこの全読み込み方式で数値の切り出しをatoiにすると80msだったので やはりI/Oの効率化が支配的と理解した http://mevius.5ch.net/test/read.cgi/tech/1490917669/643
644: デフォルトの名無しさん (ワッチョイ 6111-wjSU) [sage] 2017/07/05(水) 21:04:30.49 ID:tZeoWZVY0 >>643 てことは fgetc+自前スペース解析+atoi :175ms fread++自前スペース解析+atoi :80ms 読み込みのオーバーヘッドで175-80=95msロスしてるわけか atoiは変換不能文字とか16進とかチェックしてるからその分遅くなるんだろう 自前で10進のみに特化させるのが一番なんだけどもな http://mevius.5ch.net/test/read.cgi/tech/1490917669/644
645: デフォルトの名無しさん (スップ Sdc2-Pf3w) [sage] 2017/07/05(水) 21:05:36.71 ID:O+22iBefd 複数スレッドに分けてアセンブラの自作関数で回す http://mevius.5ch.net/test/read.cgi/tech/1490917669/645
646: デフォルトの名無しさん (スップ Sdc2-Pf3w) [sage] 2017/07/05(水) 21:07:40.11 ID:O+22iBefd 各スレッドも、複数数値を並列で動かす http://mevius.5ch.net/test/read.cgi/tech/1490917669/646
647: デフォルトの名無しさん (スップ Sdc2-Pf3w) [sage] 2017/07/05(水) 21:08:36.26 ID:O+22iBefd C++スレだった すまんこ http://mevius.5ch.net/test/read.cgi/tech/1490917669/647
648: はつみつ餃子 ◆8X2XSCHEME (ワッチョイ 8215-CicO) [sage] 2017/07/05(水) 21:23:34.13 ID:YH3wEyty0 どういう風に並列化できる? http://mevius.5ch.net/test/read.cgi/tech/1490917669/648
649: 片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd62-3ntT) [sage] 2017/07/05(水) 21:26:33.09 ID:2aUA7xnEd 処理すべきブロックに対して、ちょうどいい区切りで、等分割に近い分割をやって、それぞれを別々のスレッドで処理する。 スレッドがすべて終わったら、処理結果を結合する。 http://mevius.5ch.net/test/read.cgi/tech/1490917669/649
650: デフォルトの名無しさん (ワッチョイ 6111-wjSU) [sage] 2017/07/05(水) 21:28:54.47 ID:tZeoWZVY0 スレッドもインラインアセンブラもC++の範疇だよ ただIOはロックされるから解放待ちの時間が出来てしまう ラインごとに随時読み込んでスレッド振り分けかな パースに時間がかかるならそれも悪くないんだろうけど簡易atoi程度じゃ差は出にくい http://mevius.5ch.net/test/read.cgi/tech/1490917669/650
651: デフォルトの名無しさん (ワッチョイ c21b-8PSv) [sage] 2017/07/05(水) 21:34:38.31 ID:slEXI2jh0 原理的にはブロッキングIOのファイル読み出しの待ち時間を有効に活用すれば それが最速だけど並列化のオーバーヘッドを最小にしようと思ったら OS毎あるいはファイルIOのライブラリ毎に特化しなきゃならない気がするので面倒くさい http://mevius.5ch.net/test/read.cgi/tech/1490917669/651
652: 片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd62-3ntT) [sage] 2017/07/05(水) 21:40:11.90 ID:2aUA7xnEd #ifdef _WIN32 // Windowsの場合 ... #elif ... http://mevius.5ch.net/test/read.cgi/tech/1490917669/652
653: デフォルトの名無しさん (ワッチョイ c99a-Pf3w) [sage] 2017/07/05(水) 23:16:04.44 ID:icFnMa9s0 各スレッドも、前から順番にやってたら遅い 各スレッドのなかでも複数を同時にやらないと 例えば>>637みたいなのだと、各ステップが終わらないと次のステップに進めない 演算の遅延があるので、各演算ポートはスカスカになる HTで少しはマシにはなるが、それでもスカスカ 整数演算は同時に3個〜4個出来るのだ これを活かさないと まあいずれにしろファイルなんか使ってたら読み込み時間がほとんどなので、ガリガリにアセンブラで組む価値もないけど http://mevius.5ch.net/test/read.cgi/tech/1490917669/653
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 349 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.048s