問題タブ [std-bitset]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - std::bitset を使用するとプログラムがクラッシュしますが、VC 2015 でコンパイルした場合のみです。
文字列をバイナリコードに変換して戻す単純なプログラムに取り組んでいます。私はUbuntuで作業しており、Visual Studio 2015を使用してWindowsでプログラムをコンパイルしたかった.Linuxビルドは正常に実行されますが、Windowsではコンパイルされますが、次のようなものでクラッシュします
次の関数を呼び出すとき:
さて、私の質問は、このコードの何が問題なのですか? Linux (gcc) と Windows (MinGW) では機能するのに、Visual Studio 2015 を使用する Windows では機能しないのはなぜですか?
これに対する私の現在の回避策は次のとおりです。
これら 2 つのソリューションのどちらが優れていますか?
c++ - g++ std::bitset に割り当てるメモリが不足しています
ここでは、10^9 ビットを割り当てています。
私は得るcc1plus.exe: out of memory allocating 268439551 bytes
。
しかし、私がするとき
125000000 バイト (125 MB) が適切に割り当てられています。別の 10 の累乗に変更すると、両方が同じであることがN
わかります。sizeof
268439551 バイトの制限がどこから来ているのかさえわかりません。これは 268.4 MB であり、約 4 GB の RAM が空いているからです。32 ビット システムでも ~200 MB で問題が発生することはありませんが、何らかの理由でバイト制限に達しています。ここで問題を引き起こしているのは何ですか?
8 GB RAM を搭載した Windows 8.1 で gcc 4.8.3 を使用します。
c++ - ビットセットを符号付きに変換する
std::bitset<32> があり、右の 16 ビットを分離し、それらのビットを符号付きの数値であるかのように出力したいと考えています。また、32ビット全体を符号付き数値として出力したいと考えています。ただし、Bitset は signed int to_string() をサポートしていません。
たとえば、1010000000100001 1111111111111111:
1つの出力を次のようにしたい:
-1608384513 シーケンス全体
右側の 16 ビットの場合は -1。
それらを変換する巧妙な方法はありますか?