エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります
コードを貼れる所
http://codepad.org/
https://ideone.com/
前スレ
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1509780815/
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
2018/07/01(日) 03:44:53.53ID:4MMF8cDN
2デフォルトの名無しさん
2018/07/01(日) 05:02:07.56ID:FOGWQSv4 こんばんは。質問です。
Win32APIで現在OSが再生中の音声の値を取得する方法を教えてください。
その瞬間の値をLR各1個取れればいいですが、ある程度連続的に配列に取り込めるほうがベターです。
スペクトラムアナライザを作ろうと思います。
Windows10/Visual Studio 2017/ C or C++です。
Win32APIで現在OSが再生中の音声の値を取得する方法を教えてください。
その瞬間の値をLR各1個取れればいいですが、ある程度連続的に配列に取り込めるほうがベターです。
スペクトラムアナライザを作ろうと思います。
Windows10/Visual Studio 2017/ C or C++です。
2018/07/01(日) 18:40:59.30ID:pYjHbPeQ
sqrt(2.0);
sqrt((double)2);
後者の俺はおかしいですか
sqrt((double)2);
後者の俺はおかしいですか
2018/07/01(日) 21:50:22.05ID:mDZv4OK3
うん
それ以前に定数にsqrt()なんて使う時点で
それ以前に定数にsqrt()なんて使う時点で
2018/07/01(日) 21:54:36.84ID:Z8xp56Jv
もしかして、実行時刻や国によって計算結果が異なるのかも知れない
あるいは、希に発生する宇宙線の影響を検出したいという意図が有るのかもしれない
あるいは実行環境のバグを検出しその後の処理を切り替えたいとか
あるいは、希に発生する宇宙線の影響を検出したいという意図が有るのかもしれない
あるいは実行環境のバグを検出しその後の処理を切り替えたいとか
2018/07/01(日) 23:13:23.96ID:/Pcja9c+
正確に√2とか√3を定数で持つにはどうしたらいい?
2018/07/01(日) 23:32:19.32ID:lS5AQxvk
>>6
そもそも浮動小数点数で無理数を正確に表すこと自体が不可能だけど、どこまでの精度を求めてるの?
そもそも浮動小数点数で無理数を正確に表すこと自体が不可能だけど、どこまでの精度を求めてるの?
2018/07/02(月) 00:05:20.60ID:Y9X1m4Hz
有理数を使えば良いじゃね?
2018/07/02(月) 00:31:58.87ID:TNHgdEjE
>>7
sqrt呼ぶのと同精度でいいよ
sqrt呼ぶのと同精度でいいよ
2018/07/02(月) 01:18:41.69ID:3LeesGvV
√2と√2をかけ合わせたらちょうど2を返す無理数クラスなら作れそう
すでにありそう
素因数分解が必要そうだから結構面倒になるかな?
すでにありそう
素因数分解が必要そうだから結構面倒になるかな?
2018/07/02(月) 07:01:13.71ID:tvgYkj/r
無理数というか、冪の底と指数をそれぞれ有理数で持つ、
という形式ならいけそうだな。
有理数クラスの約分に相当する処理を自動的にやらせる感じ。
という形式ならいけそうだな。
有理数クラスの約分に相当する処理を自動的にやらせる感じ。
2018/07/02(月) 09:17:09.45ID:yNy9eqPr
2018/07/02(月) 20:49:02.70ID:T8iPgZJX
#define SQRT2 1.414213...(必要な桁)
で充分だよ
で充分だよ
2018/07/02(月) 22:00:31.27ID:ZEcRd/bU
そこはせめて
static const double SQRT2 = 1.414213...(必要な桁)
にしようよ…
static const double SQRT2 = 1.414213...(必要な桁)
にしようよ…
15デフォルトの名無しさん
2018/07/04(水) 21:59:31.57ID:gFgZc5FG 18Z
2018/07/05(木) 12:54:37.46ID:u9CJaon8
vcのcl.exeでc書いてるんだが、20億バイトのmallocがnull返します。
何とかなりませんか?
何とかなりませんか?
2018/07/05(木) 13:05:53.34ID:I27lRIcu
>>16
64bitでコンパイルされたし
64bitでコンパイルされたし
18はちみつ餃子 ◆8X2XSCHEME
2018/07/05(木) 14:58:16.26ID:l9X7uzb+ 実メモリが載ってなきゃ意味ないぽよ。 とマジレス。
まあ今どきはそういうデスクトップマシンも無くはないけど……。
まあ今どきはそういうデスクトップマシンも無くはないけど……。
2018/07/05(木) 15:06:00.77ID:ppxwAApK
(vc ってあるから Windows 前提で)
malloc のアロケーターの実装とセットになって
OS がよきに計らってくれないものなのかな
malloc のアロケーターの実装とセットになって
OS がよきに計らってくれないものなのかな
2018/07/05(木) 15:43:13.14ID:I5nj7cYg
20億バイトって約2GB、31bitで表せる範囲ではあるのか。
プロセスあたりメモリ2GBの制限に引っかかってるのかな。
この20億バイトのmallocの他にもメモリを使っててトータル不足とか。
プロセスで使えるメモリを3GBにする設定とかあるんだっけ。
あとはOSを64bitにするか。
プロセスあたりメモリ2GBの制限に引っかかってるのかな。
この20億バイトのmallocの他にもメモリを使っててトータル不足とか。
プロセスで使えるメモリを3GBにする設定とかあるんだっけ。
あとはOSを64bitにするか。
21はちみつ餃子 ◆8X2XSCHEME
2018/07/05(木) 18:08:24.53ID:l9X7uzb+ あ、 20 億ってたったの 2GB か。
でもまあメモリ空間が足りないとどうしようもないよな。
でもまあメモリ空間が足りないとどうしようもないよな。
2018/07/05(木) 18:41:17.96ID:HIMx+eV5
そらプロセス起動してんだから
mallocでプラス2GBとか普通は32bitじゃ無理
mallocでプラス2GBとか普通は32bitじゃ無理
2018/07/05(木) 19:23:00.99ID:I5nj7cYg
実際にやったわけじゃないけど、軽く調べたところ、
32bitのWindows上のプロセスで2GBより大きなメモリを使うためには…
・OSの動作モードを「カーネルで1GB, プロセスで3GB」のメモリ配分に変更
・リンク時にオプション /LARGEADDRESSAWARE を指定
…という具合に、動作環境と実行ファイルの両方での対処が必要みたい。
さらに加えると、Win32APIの HeapAlloc() を使わないとダメかも。
これはライブラリの malloc() がどう実装されてるかによるが。
32bitのWindows上のプロセスで2GBより大きなメモリを使うためには…
・OSの動作モードを「カーネルで1GB, プロセスで3GB」のメモリ配分に変更
・リンク時にオプション /LARGEADDRESSAWARE を指定
…という具合に、動作環境と実行ファイルの両方での対処が必要みたい。
さらに加えると、Win32APIの HeapAlloc() を使わないとダメかも。
これはライブラリの malloc() がどう実装されてるかによるが。
2018/07/05(木) 21:08:35.41ID:IGtLSuPP
64bitでコンパイルしたらいけますた。
2018/07/06(金) 18:04:52.14ID:zA1tf/7d
2018/07/06(金) 18:42:29.85
for( a : コンテナ)ってしたときのアクセスは内部的にどうなってるんですか?
@コンテナのat(size_t)を呼び出している
Aコンテナにイテレータがあればイテレータ
Bコンテナにイテレータがなくat(size_t)があればat
@コンテナのat(size_t)を呼び出している
Aコンテナにイテレータがあればイテレータ
Bコンテナにイテレータがなくat(size_t)があればat
2018/07/06(金) 19:28:48.49ID:cmD7yKAf
生配列の場合は*<配列のポインタ>、
コンテナ.begin()が定義されていれば*<コンテナ.begin()が返却するもの>、
そうでなければ*<std::begin(コンテナ)が返却するもの>
で要素アクセスする。
at()はオーバーヘッドがあるので、forに限らず、将来的にもコンパイラが知らぬうちに呼びだすことはないと思うよ。
コンテナ.begin()が定義されていれば*<コンテナ.begin()が返却するもの>、
そうでなければ*<std::begin(コンテナ)が返却するもの>
で要素アクセスする。
at()はオーバーヘッドがあるので、forに限らず、将来的にもコンパイラが知らぬうちに呼びだすことはないと思うよ。
2018/07/06(金) 19:39:02.31
atしかなかった場合は!?
2018/07/06(金) 20:28:34.00ID:cmD7yKAf
コンパイルしてみろ。答えは3秒で分かる。
30はちみつ餃子 ◆8X2XSCHEME
2018/07/06(金) 21:43:33.68ID:G+eTHi8Q >>26
begin 関数と end 関数で帰ってくるイテレータで繰り返すようになってる。
標準ライブラリにあるコンテナの場合は std::begin と std::end が適用されて、
これは基本的にはそれぞれのコンテナのメンバ関数 begin と end をそのまま呼び出すが、
配列などのために特殊化した版が用意されている。
自分が独自に作ったコンテナを range based for に対応させたい場合は、
メンバ関数として begin と end を持っておけば std::begin と std::end 経由でそれが呼び出されるし、
非メンバ関数としてそのコンテナの型を受け取れる begin 関数と end 関数を用意してもよい。
どの名前空間にある begin 関数と end 関数が呼び出されるかは ADL で解決されるんだが、
このあたりの理屈は面倒なんで ADL をキーワードにしてググって。
独自に用意したコンテナについて、やりたければ at を呼び出すように作ることはもちろん出来るよ。
既存のコンテナについても、 std::begin と std::end を特殊化すれば、現実には挙動を変えられたりもするが、
std 名前空間にある関数をオーバーロードすることは禁止されていて、
std 名前空間内のテンプレート関数の特殊化も (全面的に禁止ではないが) 制約があるので、
規格の範囲内ではカスタマイズすることは出来ないと考えて良い。
begin 関数と end 関数で帰ってくるイテレータで繰り返すようになってる。
標準ライブラリにあるコンテナの場合は std::begin と std::end が適用されて、
これは基本的にはそれぞれのコンテナのメンバ関数 begin と end をそのまま呼び出すが、
配列などのために特殊化した版が用意されている。
自分が独自に作ったコンテナを range based for に対応させたい場合は、
メンバ関数として begin と end を持っておけば std::begin と std::end 経由でそれが呼び出されるし、
非メンバ関数としてそのコンテナの型を受け取れる begin 関数と end 関数を用意してもよい。
どの名前空間にある begin 関数と end 関数が呼び出されるかは ADL で解決されるんだが、
このあたりの理屈は面倒なんで ADL をキーワードにしてググって。
独自に用意したコンテナについて、やりたければ at を呼び出すように作ることはもちろん出来るよ。
既存のコンテナについても、 std::begin と std::end を特殊化すれば、現実には挙動を変えられたりもするが、
std 名前空間にある関数をオーバーロードすることは禁止されていて、
std 名前空間内のテンプレート関数の特殊化も (全面的に禁止ではないが) 制約があるので、
規格の範囲内ではカスタマイズすることは出来ないと考えて良い。
2018/07/06(金) 22:06:07.41
>>30
詳しい情報サンクス
詳しい情報サンクス
2018/07/06(金) 23:15:55.05ID:4kvIcx8n
>>28
あっと驚く
あっと驚く
33デフォルトの名無しさん
2018/07/07(土) 14:03:43.69ID:0Eyv8LqD ストラウストラップのプログラミング言語C++を読んでいるのですが、
auto を使えとか、
int a = 1;
よりも
int a {1};
のほうがいいだとか、書いてありますが、本当にこれにしたがったほうがいいのでしょうか?
他の本とスタイルが違うように思います。
auto を使えとか、
int a = 1;
よりも
int a {1};
のほうがいいだとか、書いてありますが、本当にこれにしたがったほうがいいのでしょうか?
他の本とスタイルが違うように思います。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★3 [蚤の市★]
- 「偽サッチャー」「自滅的」「時代遅れ」 高市首相の経済政策を海外メディアが酷評 ★2 [蚤の市★]
- 東京都「都民の税金1.5兆円が国に奪われている」「全国に分配されている」に地方民ブチギレ ★2 [Hitzeschleier★]
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性に共通点が★5 [Hitzeschleier★]
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ★2 [冬月記者★]
- 【ド軍】山本由伸、WBC出場を決断!ドジャースが本人の意向を尊重、佐々木朗希はチームが故障歴を懸念で不参加 [鉄チーズ烏★]
- 竹中平蔵「日米が長年守り続けてき台湾有事に関する曖昧戦略の知恵を一瞬にして無にさせた岡田の責任は非常に重い」 [271912485]
- 中国人、超ド正論。「チベットやウイグルに住んでるのはチベット族やウイグル族だが、アイヌから奪った土地に住んでる日本人こそ侵略者」 [314039747]
- 何故国内の左翼がやたら中国寄りなのか謎
- 【高市悲報】トケドロ高橋「あれまw日本は食料品だけ上がっていてインフレとは言えない😤円安上等!」 [359965264]
- 【画像】海外の寿司パーティー、レベチwwwwwwwwww [834922174]
- おまえらの風邪、インフル予防法おしえてくれさい
