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