エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります
コードを貼れる所
http://codepad.org/
https://ideone.com/
前スレ
【初心者歓迎】C/C++室 Ver.104【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1545944692/
探検
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
レス数が1000を超えています。これ以上書き込みはできません。
2019/04/25(木) 06:54:38.08ID:6xUIrXDu
2019/04/25(木) 11:00:25.52ID:/tHSxicf
チンポ体操
チンポを手に持ち しごく運動から
1 2 シコシコ
2 2 シコシコ
チンポを振り回す運動
1 2 ブルンブルン
2 2 ブルンブルン
チンポを手に持ち しごく運動から
1 2 シコシコ
2 2 シコシコ
チンポを振り回す運動
1 2 ブルンブルン
2 2 ブルンブルン
2019/04/30(火) 16:44:32.44ID:hc3e5D+8
Cを2年間やって最近大学の講義でC++をやりはじめたのですが
C++だけでなくCの勉強も継続したほうがいいのでしょうか?
C++だけでなくCの勉強も継続したほうがいいのでしょうか?
>>3
C89=K&R2 をマスターできたら、C99 など目もくれずC++に進むのがいいでしょう、私はそうしましたし C99 なんかどうでもいいと思っています
C89=K&R2 をマスターできたら、C99 など目もくれずC++に進むのがいいでしょう、私はそうしましたし C99 なんかどうでもいいと思っています
2019/04/30(火) 17:08:01.32ID:hc3e5D+8
>>4
レスありがとうございます
競技プログラミングで言うと、C言語はatcoderでA問題とB問題はすぐに書くことが出来てC問題は解けたり解けなかったりというレベルです。構造体とポインタも基本的(C言語ポインタ完全制覇という書籍にあるような難しいことは知りませんが…)な扱いならばできます。
就職のことも視野に入れて考えたいのですが、C++が出来るならばCの知識が問われる機会というのは少ないのでしょうか?
レスありがとうございます
競技プログラミングで言うと、C言語はatcoderでA問題とB問題はすぐに書くことが出来てC問題は解けたり解けなかったりというレベルです。構造体とポインタも基本的(C言語ポインタ完全制覇という書籍にあるような難しいことは知りませんが…)な扱いならばできます。
就職のことも視野に入れて考えたいのですが、C++が出来るならばCの知識が問われる機会というのは少ないのでしょうか?
>>5
就職の話はよくわかりません
ただ、C89=K&R2 → C99 の改定内容は、C89 の時代に試みられていた拡大解釈を規格に取り込んだ、という部類が多いと私は思いました
それに C99 は、「C++ を見た後で決めたんかい?」という謎な部分が多くいけ好かないのも事実です、あんなものは知らないほうがいい部類でしょう
それよりも日々進化し続ける C++ をフォローするほうが、いろいろな面でお得です、私も p-thread 系マルチコアなプログラムを記述するために C++11 or lator に進み、とても満足しています
就職の話はよくわかりません
ただ、C89=K&R2 → C99 の改定内容は、C89 の時代に試みられていた拡大解釈を規格に取り込んだ、という部類が多いと私は思いました
それに C99 は、「C++ を見た後で決めたんかい?」という謎な部分が多くいけ好かないのも事実です、あんなものは知らないほうがいい部類でしょう
それよりも日々進化し続ける C++ をフォローするほうが、いろいろな面でお得です、私も p-thread 系マルチコアなプログラムを記述するために C++11 or lator に進み、とても満足しています
2019/04/30(火) 18:05:48.04ID:arIi2u2B
>>5
C++のクラスとかテンプレートとかSTLとかをとりあえず無視して
Cと共通してる基礎的なとこから学べば、わざわざCを個別に学ぶ必要はないとおも
仕事の場合は純粋にCだけ長年使ってるような特殊な職場でなければ問題ない
C++のクラスとかテンプレートとかSTLとかをとりあえず無視して
Cと共通してる基礎的なとこから学べば、わざわざCを個別に学ぶ必要はないとおも
仕事の場合は純粋にCだけ長年使ってるような特殊な職場でなければ問題ない
2019/04/30(火) 18:11:55.63ID:hc3e5D+8
お二人方ありがとうございます
CからC++の勉強に専念する決心が半分くらいつきました
Cのscanf()の仕様(バッファオーバーフローやバッファオーバーランの危険性を回避するいくつかの方法について等)、まだはっきりと把握していないのですが、それでも、C++の勉強に専念してしまっても問題ありませんでしょうか?
CからC++の勉強に専念する決心が半分くらいつきました
Cのscanf()の仕様(バッファオーバーフローやバッファオーバーランの危険性を回避するいくつかの方法について等)、まだはっきりと把握していないのですが、それでも、C++の勉強に専念してしまっても問題ありませんでしょうか?
2019/04/30(火) 19:25:08.89ID:YvhWBPAF
2019/04/30(火) 21:07:24.59ID:tJFiug19
C問題は使う言語の問題じゃないな
もちろんc++やJavaの方がC言語よりもスムーズに書けるがC問題はアルゴリズムを知らないと出来ない
それと現代ではC言語のscanfに習熟する意味は無い
それは後回しにした方がいい
もちろんc++やJavaの方がC言語よりもスムーズに書けるがC問題はアルゴリズムを知らないと出来ない
それと現代ではC言語のscanfに習熟する意味は無い
それは後回しにした方がいい
2019/04/30(火) 21:38:58.06ID:B5WLnK8N
2019/04/30(火) 21:41:18.36ID:B5WLnK8N
_s 系関数でも未定義な挙動を示すコードはいくらでも書けるのでキリがないんじゃね
詳細な資料はあるけれども、入門者が読むもんじゃなし
fgets + sscanf で安全になるわけでもなし
詳細な資料はあるけれども、入門者が読むもんじゃなし
fgets + sscanf で安全になるわけでもなし
>>8
まあ他の人の意見も聴いておいたほうがいいでしょうね
個人的には何をやっても C で書けると「思える」感触ができるまで C で書きまくる経験は有用だろうと思います、時間はかかりますけれども何でも自分で実装する、という縛りを課してみる
データ構造(線形リスト、スタックやキュー、二分木やバランス木・K-dimensionなどのデータ構造)
アルゴリズム(ヒープ/クィック/シェル各種ソート、縦横探索やダイクストラ法と枝刈り・バックトラッキング、ナップサック、シンプレックス法、シャノンファノやハフマン)
いやもう、C なら何をやってもいい経験になりますね…
まあ他の人の意見も聴いておいたほうがいいでしょうね
個人的には何をやっても C で書けると「思える」感触ができるまで C で書きまくる経験は有用だろうと思います、時間はかかりますけれども何でも自分で実装する、という縛りを課してみる
データ構造(線形リスト、スタックやキュー、二分木やバランス木・K-dimensionなどのデータ構造)
アルゴリズム(ヒープ/クィック/シェル各種ソート、縦横探索やダイクストラ法と枝刈り・バックトラッキング、ナップサック、シンプレックス法、シャノンファノやハフマン)
いやもう、C なら何をやってもいい経験になりますね…
2019/05/03(金) 11:34:54.23ID:Gwp1b6R4
いまどきの環境だと下部に丸投げか
2019/05/03(金) 14:13:46.95ID:xL3yQoTR
関数の引数の書き方について質問があります。
任意のオブジェクトを複数参照する関数f(A& a, B& b, ......)
において、引数の a,b,...を左辺値と右辺値の任意の組み合わせで
使用する場合、関数定義をf(const A& ac, const B& bc, ......){
A &a=const_cast<A&>(ac);
B &b=const_cast<B&>(bc);
:
}
とする方法がベストでしょうか?
任意のオブジェクトを複数参照する関数f(A& a, B& b, ......)
において、引数の a,b,...を左辺値と右辺値の任意の組み合わせで
使用する場合、関数定義をf(const A& ac, const B& bc, ......){
A &a=const_cast<A&>(ac);
B &b=const_cast<B&>(bc);
:
}
とする方法がベストでしょうか?
2019/05/03(金) 14:32:25.70ID:qNybD7B2
だめ
2019/05/03(金) 14:34:29.48ID:xL3yQoTR
15です。
追記します。
開発系のIDEでオブジェクトのメンバー変数を表示させながら
プログラム作成をしたいので、テンプレート関数化による
ユニバーサル参照の記述は使いたくありません。
追記します。
開発系のIDEでオブジェクトのメンバー変数を表示させながら
プログラム作成をしたいので、テンプレート関数化による
ユニバーサル参照の記述は使いたくありません。
18はちみつ餃子 ◆8X2XSCHEME
2019/05/03(金) 21:34:51.81ID:Oy2+74/H >>15
控えめに言ってクソ。 本当に const なオブジェクトが渡されたときにエラーにならない。
const なオブジェクトに const でない操作をするのは未定義だぞ。
(const ではないオブジェクトなら途中で const を経由しても書き換えて良いらしい。)
言語の作法の範囲内でなら IDE に対する配慮は工夫として評価されるかもしれないけど、
型システムによる保護を台無しにしてまでやるのはオススメできない。
少なくともこのスレでそういう工夫を是とする人はあんまりいないと思うぞ。
控えめに言ってクソ。 本当に const なオブジェクトが渡されたときにエラーにならない。
const なオブジェクトに const でない操作をするのは未定義だぞ。
(const ではないオブジェクトなら途中で const を経由しても書き換えて良いらしい。)
言語の作法の範囲内でなら IDE に対する配慮は工夫として評価されるかもしれないけど、
型システムによる保護を台無しにしてまでやるのはオススメできない。
少なくともこのスレでそういう工夫を是とする人はあんまりいないと思うぞ。
2019/05/03(金) 21:43:10.16ID:16FcdCX4
Arduinoなんだけど多分C一般の話だと思うんでここで
byte counter = 0;
while (true) {
if (Shori(counter)) { break; } // Shoriの結果によってwhileから脱出
if (counter < 4) { counter++; }
else { counter = 0; }
}
または
for (byte counter = 0; counter <= 4; counter++) {
if (Shori(counter)) { break; } // Shoriの結果によってforから脱出
if (counter == 4) { counter = 255; }
}
または
for (byte counter = 0; true; counter++) {
if (Shori(counter % 5)) { break; } // Shoriの結果によってforから脱出
// これだとcounterが255から0になるときcounter % 5が2回連続して0になるため
// 0〜5を繰り返し引数にしてShoriしていることにならない
}
または
while (true) {
for (byte counter = 0; counter <= 4; counter++) {
if (Shori(counter)) { goto dasshutu; } // Shoriの結果によってforとwhileから脱出
}
}
dasshutu:
みたいに一定の範囲を繰り返すカウンタを持つ無限ループってどう書くのがシンプルで一般的なんだろう?
無限ループとはいっても256回も回らずに終わる見込みだから3つ目の書き方でいい(仮にそれを越えても処理内容的に致命的な問題はない)とか、念のためwordにしとけば65536回まではいけるとか考えてもいいのかな
byte counter = 0;
while (true) {
if (Shori(counter)) { break; } // Shoriの結果によってwhileから脱出
if (counter < 4) { counter++; }
else { counter = 0; }
}
または
for (byte counter = 0; counter <= 4; counter++) {
if (Shori(counter)) { break; } // Shoriの結果によってforから脱出
if (counter == 4) { counter = 255; }
}
または
for (byte counter = 0; true; counter++) {
if (Shori(counter % 5)) { break; } // Shoriの結果によってforから脱出
// これだとcounterが255から0になるときcounter % 5が2回連続して0になるため
// 0〜5を繰り返し引数にしてShoriしていることにならない
}
または
while (true) {
for (byte counter = 0; counter <= 4; counter++) {
if (Shori(counter)) { goto dasshutu; } // Shoriの結果によってforとwhileから脱出
}
}
dasshutu:
みたいに一定の範囲を繰り返すカウンタを持つ無限ループってどう書くのがシンプルで一般的なんだろう?
無限ループとはいっても256回も回らずに終わる見込みだから3つ目の書き方でいい(仮にそれを越えても処理内容的に致命的な問題はない)とか、念のためwordにしとけば65536回まではいけるとか考えてもいいのかな
2019/05/03(金) 22:05:03.91ID:VZjV/dE9
for (byte counter = 0; ; counter = (counter + 1) % 5) {
if (Shori(counter)) { break; }
}
とか?
if (Shori(counter)) { break; }
}
とか?
2019/05/03(金) 22:23:08.93ID:16FcdCX4
おおそんな書き方が。ありがたい。
しかも脱出に関して言えば、forの中でifで判定してbreakするのではなく
forの条件式に書いてしまうこともできるな…
しかも脱出に関して言えば、forの中でifで判定してbreakするのではなく
forの条件式に書いてしまうこともできるな…
2019/05/04(土) 04:03:12.91ID:qzgt3pmZ
オブジェクト指向でなぜつくるのか
って書籍が今Kindleセールで半額だけど良さそうだな
読んだことある人どんな感想ですか?
って書籍が今Kindleセールで半額だけど良さそうだな
読んだことある人どんな感想ですか?
23デフォルトの名無しさん
2019/05/05(日) 03:51:38.18ID:NRm/lXtt >>22
じゃんけんゲームを2人(自分対PC)用から(PCを)何人でも増やせる設計に変える例で
構造化プログラミングだとちょっと書き換え多そう。。。オブジェクト指向プログラミングなら〜って感じ。
(そこしか覚えてないとも言う)
第2版は最終章でオブジェクト指向プログラミングの次世代は関数型プログラミングだとか言ってHaskellの紹介が追加された。
じゃんけんゲームを2人(自分対PC)用から(PCを)何人でも増やせる設計に変える例で
構造化プログラミングだとちょっと書き換え多そう。。。オブジェクト指向プログラミングなら〜って感じ。
(そこしか覚えてないとも言う)
第2版は最終章でオブジェクト指向プログラミングの次世代は関数型プログラミングだとか言ってHaskellの紹介が追加された。
2019/05/05(日) 11:14:43.13ID:P7bsB8ff
皆さんが一番勉強になった本を教えてほしいです。
これならわかるC++と、C言語ポインタ完全制覇は持ってるので、基本的なことはわかります。
これ読んで実力がバズった!というのがあればぜひとも。
これならわかるC++と、C言語ポインタ完全制覇は持ってるので、基本的なことはわかります。
これ読んで実力がバズった!というのがあればぜひとも。
>>24
C++ ならハーバート・シルトの独習C++ ですね
その真ん中くらいにある「std::string を自分で実装する」というお題が非常によく、OO の教科書でそういうお題を配置しているのも本質を明示している意味でよく、この本より優れている初級C++教科書がみあたりません
C++ ならハーバート・シルトの独習C++ ですね
その真ん中くらいにある「std::string を自分で実装する」というお題が非常によく、OO の教科書でそういうお題を配置しているのも本質を明示している意味でよく、この本より優れている初級C++教科書がみあたりません
2019/05/05(日) 11:43:07.96ID:qZTOu8es
C言語を256倍使うための本
ttps://www.amazon.co.jp/dp/4756100430
ttps://www.amazon.co.jp/dp/4756100430
2019/05/05(日) 19:46:41.25ID:P7bsB8ff
>>25-26
ありがとうございます。参考にします。
ありがとうございます。参考にします。
28はちみつ餃子 ◆8X2XSCHEME
2019/05/05(日) 20:24:31.00ID:TxpPZKKr >>24
私が学んだのは「詳説 C++ 第2版」だな。
https://www.amazon.co.jp/dp/479732743X
この本の内容は C++03 の時代のものなので C++11 以降のトピックはウェブで学んだ。
Twitter で C++ に強い人が独習C++の間違いを強く批判しているのを見ることがちょいちょいあるので、
自分では読んだことが無いけど独習C++には良い印象がない。
まあ不正確でもわかりやすいことは有りうるのでとりあえずおおざっぱな概略を把握する分には
どれでも割となんとかなる気がしている。
私が学んだのは「詳説 C++ 第2版」だな。
https://www.amazon.co.jp/dp/479732743X
この本の内容は C++03 の時代のものなので C++11 以降のトピックはウェブで学んだ。
Twitter で C++ に強い人が独習C++の間違いを強く批判しているのを見ることがちょいちょいあるので、
自分では読んだことが無いけど独習C++には良い印象がない。
まあ不正確でもわかりやすいことは有りうるのでとりあえずおおざっぱな概略を把握する分には
どれでも割となんとかなる気がしている。
>>28
>独習C++の間違いを強く批判している
話を簡単にするために、一時的に紛らわしいことを言っている=どこを切っていも正しいというわけではない=文脈依存なところがある、という批判はアマゾンレビューにありましたね
しかし強く批判されるほどの欠点があるかどうかは、私にはよくわかりません
よろしければポインタをください
>独習C++の間違いを強く批判している
話を簡単にするために、一時的に紛らわしいことを言っている=どこを切っていも正しいというわけではない=文脈依存なところがある、という批判はアマゾンレビューにありましたね
しかし強く批判されるほどの欠点があるかどうかは、私にはよくわかりません
よろしければポインタをください
30はちみつ餃子 ◆8X2XSCHEME
2019/05/05(日) 21:21:05.73ID:TxpPZKKr >>29
良い評価も悪い評価もあるので単純には言えないけど、批判している代表的な意見としてはこれかな。
https://twitter.com/yumetodo/status/1020966071702966273
ただ、全体として入門書として本当に妥当な本があまりないので、どれが比較的マシなのかというレベルの話だと思う。
私が読んだことがない中で評判を評価するとたぶん江添氏の出している本が (少なくとも日本語の本の中では)
だいぶん良さそうでは有る。
速度のある分野では、単純に古いものはそれだけで価値が低いので、
逆に言えば最新に追い付こうとしているものは高く評価できる。
https://twitter.com/5chan_nel (5ch newer account)
良い評価も悪い評価もあるので単純には言えないけど、批判している代表的な意見としてはこれかな。
https://twitter.com/yumetodo/status/1020966071702966273
ただ、全体として入門書として本当に妥当な本があまりないので、どれが比較的マシなのかというレベルの話だと思う。
私が読んだことがない中で評判を評価するとたぶん江添氏の出している本が (少なくとも日本語の本の中では)
だいぶん良さそうでは有る。
速度のある分野では、単純に古いものはそれだけで価値が低いので、
逆に言えば最新に追い付こうとしているものは高く評価できる。
https://twitter.com/5chan_nel (5ch newer account)
2019/05/05(日) 22:04:35.25ID:vipN53in
俺「競プロ飽きたしC++の勉強でもするか」
isocpp.org「まずはTourofC++で概要をつかむといいよ〜」
ビャーネ「Tourはプログラミングに習熟した人を想定している」
俺「短くて面白いけど難しいな。プログラミング初心者向けのはないかな?」
isocpp「じゃあこれ つ原則と実践(1248ページ)」
俺「ファッ!?」
isocpp「あと勉強するときは少なくとも3冊持っといたほうがいいよ〜」
俺「ウーン…」
isocpp.org「まずはTourofC++で概要をつかむといいよ〜」
ビャーネ「Tourはプログラミングに習熟した人を想定している」
俺「短くて面白いけど難しいな。プログラミング初心者向けのはないかな?」
isocpp「じゃあこれ つ原則と実践(1248ページ)」
俺「ファッ!?」
isocpp「あと勉強するときは少なくとも3冊持っといたほうがいいよ〜」
俺「ウーン…」
>>30
毒臭を有害ゴミと判断した理由が知りたいですね…
個人的には、C++ の中の Java に似た部分を抽出して、初心者(最近は C++ に直接参入する人が多いとか…なんか時代を感じます)にやさしい、できれば分厚くない本がいいなあ
以前は accelerated C++ を薦めたりしたのですが、最近 accelerated c++ の決定的に駄目なところを見つけてしまったので、もう私が薦める本は独習しかないのでした
毒臭を有害ゴミと判断した理由が知りたいですね…
個人的には、C++ の中の Java に似た部分を抽出して、初心者(最近は C++ に直接参入する人が多いとか…なんか時代を感じます)にやさしい、できれば分厚くない本がいいなあ
以前は accelerated C++ を薦めたりしたのですが、最近 accelerated c++ の決定的に駄目なところを見つけてしまったので、もう私が薦める本は独習しかないのでした
2019/05/05(日) 22:37:15.85ID:RPhfdkos
>>32
有害ゴミなどど、相手が使ってない言葉に勝手に置き換えて、さも相手が感情的で非論理的な
有害ゴミなどど、相手が使ってない言葉に勝手に置き換えて、さも相手が感情的で非論理的な
2019/05/05(日) 22:39:39.67ID:RPhfdkos
途中だった。
有害ゴミなどど、相手が使ってない言葉に勝手に置き換えて、さも相手が感情的で非論理的な発言をしてきたかのような印象操作は卑怯だとは思わないか?
有害ゴミなどど、相手が使ってない言葉に勝手に置き換えて、さも相手が感情的で非論理的な発言をしてきたかのような印象操作は卑怯だとは思わないか?
>>33
https://twitter.com/yumetodo/status/1020966071702966273
>言うまでもなく独習C++は時代遅れの化石で有害ゴミ行き。
使っていますが…
https://twitter.com/5chan_nel (5ch newer account)
https://twitter.com/yumetodo/status/1020966071702966273
>言うまでもなく独習C++は時代遅れの化石で有害ゴミ行き。
使っていますが…
https://twitter.com/5chan_nel (5ch newer account)
>>34
https://twitter.com/yumetodo/status/1020966071702966273
>言うまでもなく独習C++は時代遅れの化石で有害ゴミ行き。
印象操作などではありえず、ずばり「有害ゴミ」指定されちゃってますが…
https://twitter.com/5chan_nel (5ch newer account)
https://twitter.com/yumetodo/status/1020966071702966273
>言うまでもなく独習C++は時代遅れの化石で有害ゴミ行き。
印象操作などではありえず、ずばり「有害ゴミ」指定されちゃってますが…
https://twitter.com/5chan_nel (5ch newer account)
2019/05/05(日) 22:42:08.10ID:RPhfdkos
>>36
twitterの方は見てなかった。失礼した。
twitterの方は見てなかった。失礼した。
2019/05/05(日) 23:27:07.88ID:DzyvOKLj
プログラミングの最初の一歩すらわからない状態から始めるのか
Pythonやjsやphpなんかである程度書ける状態から始めるのかで話が変わると思う
後者ならググりながら適当になんか書いてみればいいと思う
Pythonやjsやphpなんかである程度書ける状態から始めるのかで話が変わると思う
後者ならググりながら適当になんか書いてみればいいと思う
40はちみつ餃子 ◆8X2XSCHEME
2019/05/05(日) 23:57:02.81ID:TxpPZKKr2019/05/06(月) 01:21:26.82ID:oGUqqIoM
C++に関してググって出てくる情報って適当なの多いよなw
Qなんとかとか特にw
Qなんとかとか特にw
2019/05/06(月) 04:37:01.34ID:z7Cz8mZC
どうも最近は最新のC++の機能を使うべきだとしつつ
自分なりにとりあえず適当に書くのは危険とか言う意見が多いけど
人間もあくまで動物なので手を動かして書かなきゃ覚えないしCの時代から続く古臭い書き方は長年の積み重ねでセオリー確立してんだから
そういう学習方法を否定するのは違うと思うよ
クラス、ひいては最新の機能を正しく使う、なんて初心者がいきなり目指すようなことじゃない
自分なりにとりあえず適当に書くのは危険とか言う意見が多いけど
人間もあくまで動物なので手を動かして書かなきゃ覚えないしCの時代から続く古臭い書き方は長年の積み重ねでセオリー確立してんだから
そういう学習方法を否定するのは違うと思うよ
クラス、ひいては最新の機能を正しく使う、なんて初心者がいきなり目指すようなことじゃない
2019/05/06(月) 06:08:09.39ID:Geq8Gq1G
>>42
手を動かして覚えることは誰も否定していないし、むしろそれは強く推奨したい。ただ、C/C++の場合は表面的な理解だけで動いたから良しとして進むのは危険で、基本的な部分は正しく理解しておくことは必要だと思う。
ある程度の基礎がある状態なら、新しい機能やライブラリの関数もググって得られる情報から正しい仕様を理解して習得できるが、基礎ができていない状態でそれは難しい。
初心者がとりあえず適当に切り貼りして動かそうというやり方をするなら、他の言語から入った方がいいと思う。ググって調べた断片的な情報だけでなく入門書等で基礎を押さえつつ、実際に書いて愚直に挙動を確認しながら理解をしていくのが良いと思う。
手を動かして覚えることは誰も否定していないし、むしろそれは強く推奨したい。ただ、C/C++の場合は表面的な理解だけで動いたから良しとして進むのは危険で、基本的な部分は正しく理解しておくことは必要だと思う。
ある程度の基礎がある状態なら、新しい機能やライブラリの関数もググって得られる情報から正しい仕様を理解して習得できるが、基礎ができていない状態でそれは難しい。
初心者がとりあえず適当に切り貼りして動かそうというやり方をするなら、他の言語から入った方がいいと思う。ググって調べた断片的な情報だけでなく入門書等で基礎を押さえつつ、実際に書いて愚直に挙動を確認しながら理解をしていくのが良いと思う。
>>42
>人間もあくまで動物なので手を動かして書かなきゃ覚えないし
プログラミングは特に、自分で書いて書いて書きまくって読んでというところは同意
となれば、ちょっと書く気になろうという心の動きを、分厚い教科書で潰したくない、という趣旨は理解
さて、困ったものです、そういうときに使える教科書があればいいのですが、C/C++ の教科書って高くて分厚いですからね…私もメイヤーズはまだ積読だし、いつ読む気になるかな?
>人間もあくまで動物なので手を動かして書かなきゃ覚えないし
プログラミングは特に、自分で書いて書いて書きまくって読んでというところは同意
となれば、ちょっと書く気になろうという心の動きを、分厚い教科書で潰したくない、という趣旨は理解
さて、困ったものです、そういうときに使える教科書があればいいのですが、C/C++ の教科書って高くて分厚いですからね…私もメイヤーズはまだ積読だし、いつ読む気になるかな?
2019/05/06(月) 13:27:09.96ID:MWPsBkkn
300ページ未満の入門書…
2019/05/06(月) 13:46:12.30ID:z7Cz8mZC
まぁ確かにサンプルコードの切り貼りとかは危ないだろうしネットの情報だけってのはね
でも独習みたいな古臭い(03以前)入門書なんて初心者にうってつけだと思うんだけど
・・・って、twitterでこき下ろしてる奴のアカウント名に見覚えあるわw
そいつ勘違いの激しい学生ちゃんだから言ってること真に受けない方がいい
でも独習みたいな古臭い(03以前)入門書なんて初心者にうってつけだと思うんだけど
・・・って、twitterでこき下ろしてる奴のアカウント名に見覚えあるわw
そいつ勘違いの激しい学生ちゃんだから言ってること真に受けない方がいい
2019/05/06(月) 16:16:47.15ID:yQTWUAYp
isocppで推薦されてる原則と実践の前の版がたまたま
近くの図書館にあったから読んでみたけど、意外と面白いな。
近くの図書館にあったから読んでみたけど、意外と面白いな。
48はちみつ餃子 ◆8X2XSCHEME
2019/05/06(月) 16:19:28.55ID:K/rO19sE >>46 見つけられなかったので比較的に新しいやつの中から探して一例として出したけど、
そやつひとりだけが言ってるわけじゃないよ。 良いと評価している人も当然いるんだけど、
あくまで私の観測範囲で私が総合的に感じた漠然敵な印象の話なんで。
そやつひとりだけが言ってるわけじゃないよ。 良いと評価している人も当然いるんだけど、
あくまで私の観測範囲で私が総合的に感じた漠然敵な印象の話なんで。
49はちみつ餃子 ◆8X2XSCHEME
2019/05/06(月) 16:20:48.53ID:K/rO19sE 今の時点でそれなりに C/C++ をわかるようになっている人の思う「良い本」というのは
「昔に学んだ」という体験だからさ、今から学ぶという人の事情とはやっぱり時代が違うと思う。
自分が読んだ本を言えても、それを強く勧めるほどの自信はないな。
例えば私が最初に買った C++ 本は ARM なんで、これにはいわゆる STL さえ載ってないんだけど、
当時としては妥当な選択肢だったし、十分にわかりやすかった。
でももちろん、今の時代に ARM を勧めるなんて馬鹿馬鹿しくてあり得ないでしょ。
昔の C++ を身に着けてから徐々に知識を更新してきていると昔の C++ と今の C++ が
滑らかに繋がっているように錯覚してしまうけど、昔の C++ を学んでから今の C++ というのは
結構な飛躍があると思うんだよ。
今から学ぶなら C++11 程度は想定している本の方がいいんじゃないかな、と個人的には思う。
「昔に学んだ」という体験だからさ、今から学ぶという人の事情とはやっぱり時代が違うと思う。
自分が読んだ本を言えても、それを強く勧めるほどの自信はないな。
例えば私が最初に買った C++ 本は ARM なんで、これにはいわゆる STL さえ載ってないんだけど、
当時としては妥当な選択肢だったし、十分にわかりやすかった。
でももちろん、今の時代に ARM を勧めるなんて馬鹿馬鹿しくてあり得ないでしょ。
昔の C++ を身に着けてから徐々に知識を更新してきていると昔の C++ と今の C++ が
滑らかに繋がっているように錯覚してしまうけど、昔の C++ を学んでから今の C++ というのは
結構な飛躍があると思うんだよ。
今から学ぶなら C++11 程度は想定している本の方がいいんじゃないかな、と個人的には思う。
>>49
> C++11 程度は想定している本の方がいいんじゃないかな
しかし、C++03 までのからくりをしらずして、C++11 のあれこれを理解できるかな?とも思うのです、ranged for の for(auto &item; vec) の & の意味とか…これはあんがい簡単にクリアできるのやもしれませんけど
> C++11 程度は想定している本の方がいいんじゃないかな
しかし、C++03 までのからくりをしらずして、C++11 のあれこれを理解できるかな?とも思うのです、ranged for の for(auto &item; vec) の & の意味とか…これはあんがい簡単にクリアできるのやもしれませんけど
2019/06/13(木) 17:42:42.66ID:KieG+j09
テンプレート特殊化を前方宣言したいんだけど、
コンパイルエラーが出て詰んでるんですけど、
どうやればいいですか?
例えば以下のようなことがしたいんですが。
template<class T>
struct A {};
template<>
struct A<int>;
template<>
struct A<float> {
A<int> f() { //エラー : 認識できない型A<int>が使われいます。
return A<int>{};
}
};
template<>
struct A<int> {
int value;
};
コンパイルエラーが出て詰んでるんですけど、
どうやればいいですか?
例えば以下のようなことがしたいんですが。
template<class T>
struct A {};
template<>
struct A<int>;
template<>
struct A<float> {
A<int> f() { //エラー : 認識できない型A<int>が使われいます。
return A<int>{};
}
};
template<>
struct A<int> {
int value;
};
2019/06/13(木) 23:30:30.78ID:CsiJtfL2
54デフォルトの名無しさん
2019/06/18(火) 08:26:42.73ID:YBHtdulC 入門書の入力された文字列が同じかどうかを判断するコードなのですが
https://ideone.com/vaASOS
14行目のif(str1[i]!=str2[i])break;がどういう意味なのかさっぱり理解できません
文字コードが同じじゃなければbreakッて意味ですか?
len+1してるのも意味がわからないです・・・
説明よろしくお願い致しますm(_ _)m
https://ideone.com/vaASOS
14行目のif(str1[i]!=str2[i])break;がどういう意味なのかさっぱり理解できません
文字コードが同じじゃなければbreakッて意味ですか?
len+1してるのも意味がわからないです・・・
説明よろしくお願い致しますm(_ _)m
55デフォルトの名無しさん
2019/06/18(火) 09:08:30.02ID:Sq2beh5p 文字コードが同じじゃなければbreakということでいいんじゃない?
len+1しているのはヌル文字があるから
len+1しているのはヌル文字があるから
2019/06/18(火) 09:20:54.17ID:R6plNfEa
まず配列について勉強だね
デバッガのステップ実行で追っていくといいよ
デバッガのステップ実行で追っていくといいよ
57デフォルトの名無しさん
2019/06/18(火) 09:21:46.85ID:3nOE2mBA プログラム板の精神病コテ 松本卓朗 さん殺害予告!
https://mevius.5ch.net/test/read.cgi/tech/1560808598/
https://mevius.5ch.net/test/read.cgi/tech/1560808598/
2019/06/18(火) 11:28:13.79ID:uO3416eX
文字列が同じ = 1文字1文字全部同じ = 1文字でも違えば違う
strlenは文字数を返すけど最後の\0を含まない
最後の\0まで比較しないと入力した文字列と先頭部分が一致したら一致してしまうのでlen+1
strlenは文字数を返すけど最後の\0を含まない
最後の\0まで比較しないと入力した文字列と先頭部分が一致したら一致してしまうのでlen+1
2019/06/18(火) 11:38:40.31ID:YX5RP0uz
文字列長の短いほうを len としないと突破したところを参照してまうぞ
str1 = asd\0
str2 = asdf\0
で str2 の len+1 まで str1 を参照すると嘔吐
str1 = asd\0
str2 = asdf\0
で str2 の len+1 まで str1 を参照すると嘔吐
2019/06/18(火) 11:39:47.81ID:YX5RP0uz
まぁ 文字列長がちがったら いきなり不一致って脱出してもいいんだけどね
2019/06/18(火) 11:50:07.19ID:uzZY1452
https://ideone.com/JUWWBr
分かり易くなったゾ
変数を減らせばラク
lenで判定してるイマイチな書き方を排除すればもっとラク
要するに分かりにくく書いてるから分かりにくいだけだよ
分かり易くなったゾ
変数を減らせばラク
lenで判定してるイマイチな書き方を排除すればもっとラク
要するに分かりにくく書いてるから分かりにくいだけだよ
2019/06/18(火) 12:00:25.27ID:YX5RP0uz
元々は入門書に書かれてたコードか
むむむ
むむむ
2019/06/18(火) 12:36:36.95ID:uzZY1452
ループを再帰に直せば終了条件がもっと分かり易くなるゾ
再帰にして時系列の1段階ずつ見せればその1段階ごとにどういう判断してるか分かり易いでしょ
bool scr(char* p, char* q){//string compare recursive
if( *p == '\0' || *q == '\0' ){
if( *p == *q ){
return true;
}
return false;
}
if( *p != *q ){
return false;
}
return scr(p+1, q+1);
}
元のヤツは文字コードと文字列の長さがこんがらがってぐちゃぐちゃになってるから分かりにくいんだなコレ
同じ文字列かどうかを、「文字コードが同じか」と「文字列の長さはどうか」、この二つで判断してるでしょ
判定するのに全く別の二つのものを取り扱ってるから分かりにくいんだよ
forのカウンタのiの取り扱いも分かりにくい
文字列長さの境界の+1の有無も分かりにくい
文字コードが同じじゃなければbreakしてlenで判定、すんごく分かりにくいでしょ
何せ「文字コードが同じじゃなければbreak」、その通りなんだけど「意味が理解できない」と来てる、意味が分かってるのに「分からん」と言ってるワケだ
結局はbreakしてるはiのカウントを止めるためと、lenと比較するためにforのスコープ超えた場所でiの値を参照するため
これ入門書の前段階までにfor文の外側でiの値を参照してる例がないと詰まる箇所だよ
for文の外側でiの値を使う、この意味が分からんと「文字コードが同じじゃなければbreak」まで分かってても全体が分からないようになってる
再帰にして時系列の1段階ずつ見せればその1段階ごとにどういう判断してるか分かり易いでしょ
bool scr(char* p, char* q){//string compare recursive
if( *p == '\0' || *q == '\0' ){
if( *p == *q ){
return true;
}
return false;
}
if( *p != *q ){
return false;
}
return scr(p+1, q+1);
}
元のヤツは文字コードと文字列の長さがこんがらがってぐちゃぐちゃになってるから分かりにくいんだなコレ
同じ文字列かどうかを、「文字コードが同じか」と「文字列の長さはどうか」、この二つで判断してるでしょ
判定するのに全く別の二つのものを取り扱ってるから分かりにくいんだよ
forのカウンタのiの取り扱いも分かりにくい
文字列長さの境界の+1の有無も分かりにくい
文字コードが同じじゃなければbreakしてlenで判定、すんごく分かりにくいでしょ
何せ「文字コードが同じじゃなければbreak」、その通りなんだけど「意味が理解できない」と来てる、意味が分かってるのに「分からん」と言ってるワケだ
結局はbreakしてるはiのカウントを止めるためと、lenと比較するためにforのスコープ超えた場所でiの値を参照するため
これ入門書の前段階までにfor文の外側でiの値を参照してる例がないと詰まる箇所だよ
for文の外側でiの値を使う、この意味が分からんと「文字コードが同じじゃなければbreak」まで分かってても全体が分からないようになってる
2019/06/18(火) 12:55:58.74ID:GYXVYwQo
ポインタを知らないであろう初学者にポインタ演算を使って分かりやすいとする鬼畜の所業
2019/06/18(火) 16:53:31.85ID:eB4Ftz1Y
>>57~63回答ありがとうございます
説明下手でスイマセン。このコードが書いてある前のページに文字列の比較は出来ないため
str1==str2と書いて判定は出来ないと書いてあったのに
14行目でstr1[i]!=str2[2]で判定してるのがよくわからないです
strlenは\0返さないのですね。そこはスッキリしました。ありがとうございます
説明下手でスイマセン。このコードが書いてある前のページに文字列の比較は出来ないため
str1==str2と書いて判定は出来ないと書いてあったのに
14行目でstr1[i]!=str2[2]で判定してるのがよくわからないです
strlenは\0返さないのですね。そこはスッキリしました。ありがとうございます
2019/06/18(火) 18:05:58.84ID:U3/WUc9c
2019/06/18(火) 18:50:13.29ID:ujoReLWG
2019/06/18(火) 19:28:14.92ID:U/JJd+xv
>>59
馬鹿なの?
馬鹿なの?
2019/06/18(火) 20:04:16.08ID:ADibu3ht
きゃー はずかしい><
70デフォルトの名無しさん
2019/06/18(火) 22:39:27.24ID:R4l3qwnJ int a = b - 1;
if (a < 0){
a = 0;
}
これのスマートな書き方を教えてください。
if (a < 0){
a = 0;
}
これのスマートな書き方を教えてください。
2019/06/18(火) 22:45:19.63ID:BC11WozD
ここで聞いていいのかわからないけど
組み込み系で上位割り込みでライト、下位割り込みでリードする場合割り込み禁止する必要ありますか?
組み込み系で上位割り込みでライト、下位割り込みでリードする場合割り込み禁止する必要ありますか?
2019/06/18(火) 23:11:51.18ID:gZnFDsgJ
2019/06/18(火) 23:13:26.53ID:48k2aFsK
>>70
bの型が不明な場合はスマートな書き方は特に無い
bの型が不明な場合はスマートな書き方は特に無い
2019/06/18(火) 23:24:05.71ID:f34xyyaF
>>70
int a = b < 1 ? 0 : b - 1;
int a = b < 1 ? 0 : b - 1;
2019/06/18(火) 23:28:32.54ID:BC11WozD
>>72
何故ダメなのかが理解できてません。
書き忘れてましたが割り込みはタイマで周期的に発生させてます。
リード中にライトが発生しても下位割り込みは一周期遅れて上位割り込みのライト結果をリードするだけではないのですか?
何故ダメなのかが理解できてません。
書き忘れてましたが割り込みはタイマで周期的に発生させてます。
リード中にライトが発生しても下位割り込みは一周期遅れて上位割り込みのライト結果をリードするだけではないのですか?
2019/06/18(火) 23:45:23.52ID:gZnFDsgJ
>>75
writeの割り込みが発生するまではreadは進行するんじゃないの?
だから「readの途中で」なんだけど
「2つの割り込みは完全制御下にあり、read中にwriteは発生しない」なら大丈夫だよ、当然
writeの割り込みが発生するまではreadは進行するんじゃないの?
だから「readの途中で」なんだけど
「2つの割り込みは完全制御下にあり、read中にwriteは発生しない」なら大丈夫だよ、当然
2019/06/19(水) 00:02:23.61ID:/MswhT0Q
>>75
>リード中にライトが発生しても下位割り込みは一周期遅れて
ここがちょっと勘違いを感じる
割り込み処理が終わったら、割り込まれた処理の続きをするのよ
低レベルにDBのrollbackみたいな複雑な仕組みはないのよ
>リード中にライトが発生しても下位割り込みは一周期遅れて
ここがちょっと勘違いを感じる
割り込み処理が終わったら、割り込まれた処理の続きをするのよ
低レベルにDBのrollbackみたいな複雑な仕組みはないのよ
2019/06/19(水) 02:33:40.48ID:v2+76oWz
char型の動作がどうもわからない。
例えば
char str[] = "abc"; として
cout << &str[0]; ----> abc
になるのはなんで? index 0番だから a がでると思ったんだけど...
初心者ですまん
例えば
char str[] = "abc"; として
cout << &str[0]; ----> abc
になるのはなんで? index 0番だから a がでると思ったんだけど...
初心者ですまん
2019/06/19(水) 03:26:09.45ID:0DgdOBcz
2019/06/19(水) 05:18:40.21ID:xxgeB2IO
2019/06/19(水) 08:25:58.04ID:huda4IDC
2019/06/19(水) 09:03:32.83ID:bPRT+MIA
2019/06/19(水) 09:06:41.55ID:zjjAtQWn
ちなみに上位下位って割り込みの優先度のこと?
2019/06/19(水) 09:22:03.41ID:RukLP400
たとえ1命令でも安全かどうかはcpuによる
あいまいな質問にはあいまいな回答しか返らない
マニュアル読むのが正解
あいまいな質問にはあいまいな回答しか返らない
マニュアル読むのが正解
2019/06/19(水) 09:54:17.80ID:huda4IDC
86デフォルトの名無しさん
2019/06/19(水) 11:34:02.00ID:kjBiA8ae vector<std::vector<char> > vec;
の二次元配列で、一行を削除するのはどうしたらよいのでしょうか。
int row = 1;
vec.erase(vec.begin() + row );
ではだめなんでしょうか。
の二次元配列で、一行を削除するのはどうしたらよいのでしょうか。
int row = 1;
vec.erase(vec.begin() + row );
ではだめなんでしょうか。
87デフォルトの名無しさん
2019/06/19(水) 11:40:44.36ID:kjBiA8ae すみません。これでちゃんと動きました。
お騒がせしました。
お騒がせしました。
2019/06/19(水) 15:30:59.62ID:2x/CN7xY
>>70
int a = max(b - 1, 0);
というような書き方を見たことが有る。
int a = max(b - 1, 0);
というような書き方を見たことが有る。
2019/06/19(水) 20:53:07.15ID:RukLP400
2019/06/19(水) 23:49:00.15ID:v2+76oWz
91デフォルトの名無しさん
2019/06/23(日) 01:18:33.15ID:X4lwQ0L+ 学校の課題でバブルソートアルゴリズムを使った画像処理の課題で、VSの警告にfor-loopの定義が無効です:最初の条件はテストを満たしていません。ループボディは実行されませんと出てきます。これはどういった原因で出てくる警告なのか教えほしいです
2019/06/23(日) 01:30:30.52ID:xbroTRmV
ループの初期状態でループ終了条件を満たしている
2019/06/23(日) 01:31:24.99ID:xbroTRmV
単純化すればこういうこと
for (int i = 0; i < 0; i++)
for (int i = 0; i < 0; i++)
2019/06/23(日) 06:24:41.17ID:TKCAljQF
てst
95デフォルトの名無しさん
2019/06/23(日) 11:28:18.87ID:6GXr3JQp 最近BS/CSが映らなくなった人はここを見ると良い
【B-CAS改造】Bカスカード2038化書き換えツール配布所 205
https://mevius.5ch.net/test/read.cgi/avi/1560914909/1-100
【B-CAS改造】Bカスカード2038化書き換えツール配布所 205
https://mevius.5ch.net/test/read.cgi/avi/1560914909/1-100
96デフォルトの名無しさん
2019/06/24(月) 06:51:52.73ID:lwUqObiG FILE* file;
file=fopen("test.txt","w");
fclose(file);
これでソリューションのフォルダ内にtest.txtファイルが作られると読んでる入門書には書いてあるのですが
VisualStudioのフォルダ内、何処を探しても生成されてません;何処に有るのでしょうか?
file=fopen("test.txt","w");
fclose(file);
これでソリューションのフォルダ内にtest.txtファイルが作られると読んでる入門書には書いてあるのですが
VisualStudioのフォルダ内、何処を探しても生成されてません;何処に有るのでしょうか?
2019/06/24(月) 09:37:54.94ID:LpgW8DGO
ドキュメントにプロジェクトを作らなかったか?
その中かと
その中かと
2019/06/24(月) 10:06:16.55ID:N4e4wdnY
>>96
「ソリューションのフォルダ内」であって「VisualStudioのフォルダ内」じゃないぞ
「ソリューションのフォルダ内」であって「VisualStudioのフォルダ内」じゃないぞ
2019/06/25(火) 07:24:49.37ID:jHEFOU5u
100デフォルトの名無しさん
2019/06/26(水) 01:39:16.88ID:6WTwK8fu STLコンテナ「set」の特定要素を削除したいとき
set<int> s = {1,2,3};
for (auto itr = s.begin(); itr != s.end(); ++itr) {
cout << *itr << endl;
if (*itr == 2) s.erase(itr);
}
これの実行結果が
1
2
1
3
となるのですが、erase後に最初に戻っているように見えるのは偶然、つまり不定の動作ですか?
なお、正しいイタレータの使い方は以下のようになるのは承知してます
for (auto itr = s.begin(); itr != s.end(); ) {
cout << *itr << endl;
if (*itr == 2) itr = s.erase(itr);
else ++itr;
}
set<int> s = {1,2,3};
for (auto itr = s.begin(); itr != s.end(); ++itr) {
cout << *itr << endl;
if (*itr == 2) s.erase(itr);
}
これの実行結果が
1
2
1
3
となるのですが、erase後に最初に戻っているように見えるのは偶然、つまり不定の動作ですか?
なお、正しいイタレータの使い方は以下のようになるのは承知してます
for (auto itr = s.begin(); itr != s.end(); ) {
cout << *itr << endl;
if (*itr == 2) itr = s.erase(itr);
else ++itr;
}
101デフォルトの名無しさん
2019/06/26(水) 07:52:05.91ID:Re4GWmuT102デフォルトの名無しさん
2019/06/26(水) 09:02:19.59ID:16uFKMyS いやいや
103デフォルトの名無しさん
2019/06/26(水) 09:07:00.61ID:Re4GWmuT あ、インクリメントのほうが先か。ごめんなさい。
104デフォルトの名無しさん
2019/06/26(水) 14:50:08.20ID:7raG/MY1 未定義動作を起こしてるんで
プログラムがたまたまクラッシュもせずに最後まで動いたというレベルからの偶然
プログラムがたまたまクラッシュもせずに最後まで動いたというレベルからの偶然
105デフォルトの名無しさん
2019/06/26(水) 23:47:19.51ID:6WTwK8fu やはり偶然なんですね
ありがとうございました
ありがとうございました
106デフォルトの名無しさん
2019/06/28(金) 01:54:12.27ID:kYWVUvHS constを外すのに使う const_cast<T&>(t) ですが、Tをいちいち書くのが面倒なので
そうだdecltypeを使えば楽できると思ったものの、remove_constも併用しないといけないみたいですね
参照だったらさらにremove_referenceも必要で、これじゃTがくっそ長くない限り有り難みが薄いですね
なんかもっといいやり方ないですかね?
const int i = 0;
const_cast<remove_const<decltype(i)>::type&>(i) = 1
const int& j = i;
const_cast<remove_const<remove_reference<decltype(j)>::type>::type&>(j) = 2;
そうだdecltypeを使えば楽できると思ったものの、remove_constも併用しないといけないみたいですね
参照だったらさらにremove_referenceも必要で、これじゃTがくっそ長くない限り有り難みが薄いですね
なんかもっといいやり方ないですかね?
const int i = 0;
const_cast<remove_const<decltype(i)>::type&>(i) = 1
const int& j = i;
const_cast<remove_const<remove_reference<decltype(j)>::type>::type&>(j) = 2;
108デフォルトの名無しさん
2019/06/28(金) 02:11:51.51ID:4VImPalK const_cast<decay_t<decltype(i)>&>(i)
で大体事足りる
まあ大抵は
using U=decay_t<...>;
とかしておくが
で大体事足りる
まあ大抵は
using U=decay_t<...>;
とかしておくが
109デフォルトの名無しさん
2019/06/28(金) 03:26:31.25ID:kYWVUvHS >>108
有り難うございます。decayなんてあるんですね
ここ見るといろいろ機能あるようで
https://ja.cppreference.com/w/cpp/types/decay
type_traitsってあんまり詳しくないですけど、よくこんなの考えたなぁと感心します
仕組みを知らないと魔法使ってるみたいに見えますね
有り難うございます。decayなんてあるんですね
ここ見るといろいろ機能あるようで
https://ja.cppreference.com/w/cpp/types/decay
type_traitsってあんまり詳しくないですけど、よくこんなの考えたなぁと感心します
仕組みを知らないと魔法使ってるみたいに見えますね
110デフォルトの名無しさん
2019/06/28(金) 18:20:06.99ID:SuTGhcfs 作りたいものにC++が必要なので1から学んでるプログラミング初心者です
biginteger という型の使い方・使い道がよくわからず悩んでいます。
biginteger という型の使い方・使い道がよくわからず悩んでいます。
111デフォルトの名無しさん
2019/06/28(金) 21:15:56.74ID:+JSlLfql C/C++の標準にそんな型ないよ
C#にBigIntegerあるみたいだね
使い方は普通の整数型と同じ
使い道は、大きな整数を扱いたい時
使い道がわからないものを無理に使う必要ないんじゃね?
C#にBigIntegerあるみたいだね
使い方は普通の整数型と同じ
使い道は、大きな整数を扱いたい時
使い道がわからないものを無理に使う必要ないんじゃね?
112デフォルトの名無しさん
2019/06/28(金) 21:19:18.85ID:U9hxi1vj 多倍長整数ならboostには入ってるからそのうち標準にも来るかもね
114110
2019/06/29(土) 19:00:51.29ID:gqtgvd1f 標準の型じゃなくて読み込んでるライブラリ?のクラスだったみたいです
そっちのマニュアルを見て見たら詳しく書いてありました…
いろいろ教えていただきありがとうございました。
そっちのマニュアルを見て見たら詳しく書いてありました…
いろいろ教えていただきありがとうございました。
115デフォルトの名無しさん
2019/07/24(水) 09:52:41.24ID:0j2752sC オブジェクト指向を使ってないアプリを c++ (コンパイラはg++6)で作るのは良でしょうか?それとも推奨されないでしょうか?
当方、意図せずにそうなってしまいました。
Cで書いてるつもりだったのですが、Cでは認められないと知らずにブロック頭以外の所での変数の宣言などを使っていて、
エラーにならなかったのは、Makefile が c++
用の流用で、ソースの拡張子が.cc だったからでした。
こんな c++ コンパイラの使い方は、許される事なのか、良くある事なのか気になりました。
当方、意図せずにそうなってしまいました。
Cで書いてるつもりだったのですが、Cでは認められないと知らずにブロック頭以外の所での変数の宣言などを使っていて、
エラーにならなかったのは、Makefile が c++
用の流用で、ソースの拡張子が.cc だったからでした。
こんな c++ コンパイラの使い方は、許される事なのか、良くある事なのか気になりました。
116デフォルトの名無しさん
2019/07/24(水) 10:00:57.54ID:zKJbgf3R Cで書いてるつもりがC++になってた、は良くはないけど別に気にすることじゃないかと
Cであることが要件ならCに直せばいいし、C++でもokならそれでもいいし
要件満たすものが出来てんならひとまずokじゃない?
Cであることが要件ならCに直せばいいし、C++でもokならそれでもいいし
要件満たすものが出来てんならひとまずokじゃない?
117デフォルトの名無しさん
2019/07/24(水) 10:52:12.93ID:yY+SPHit ブロック頭以外の所での変数の宣言はC言語で認められてるでしょ
118115
2019/07/24(水) 12:47:15.91ID:qoUieyoj >>116 どうもです。
ひとまず動いてるのですが、気になりました。
例えば、「完全にcで書いていてcでコンパイル出来るものでも、c++ 必要なものでも、どちらにも拡張子は .cc に統一して、どちらにも常にコンパイラは c++ を使う」と言う態度ってどうでしょう?
c++ が c の上位互換ならこれで良いように思えます。
ひとまず動いてるのですが、気になりました。
例えば、「完全にcで書いていてcでコンパイル出来るものでも、c++ 必要なものでも、どちらにも拡張子は .cc に統一して、どちらにも常にコンパイラは c++ を使う」と言う態度ってどうでしょう?
c++ が c の上位互換ならこれで良いように思えます。
120デフォルトの名無しさん
2019/07/24(水) 13:31:50.28ID:zKJbgf3R >>118
いや、プログラムってそもそも道具なんだから何で書かれてるかとかどうでもいいかと
複数人で開発していて他人もコードを見ることがある、技術情報として発信する、要件として言語の指定がある
とかいう縛りがあるならその縛りに応じるようにコードを書き直せば良い
個人的にはCでなければ困るというのでなければC++にするし、多少の困りくらいなら回避してC++にする
基本的にC++はCの上位互換
いや、プログラムってそもそも道具なんだから何で書かれてるかとかどうでもいいかと
複数人で開発していて他人もコードを見ることがある、技術情報として発信する、要件として言語の指定がある
とかいう縛りがあるならその縛りに応じるようにコードを書き直せば良い
個人的にはCでなければ困るというのでなければC++にするし、多少の困りくらいなら回避してC++にする
基本的にC++はCの上位互換
121115
2019/07/24(水) 20:52:46.78ID:qoUieyoj 私が知りたかったのは、ソースを書くのに何言語を選ぶべきか、でははないです。
知りたかったのは、例えば、
「ソースが c -> gcc 。ソースが c++ -> g++」
をしないで
「一切合切どちらも常に g++ 」でも良いのか?でした。
知りたかったのは、例えば、
「ソースが c -> gcc 。ソースが c++ -> g++」
をしないで
「一切合切どちらも常に g++ 」でも良いのか?でした。
122デフォルトの名無しさん
2019/07/24(水) 21:07:11.23ID:0jLIOgkf123115
2019/07/24(水) 22:28:11.62ID:tRuObC3H124デフォルトの名無しさん
2019/07/24(水) 23:59:42.77ID:7wBUx5ir 良い悪いじゃないけど
実質的にCのプログラムでしかないなら純粋なCのプログラムとして書き直して
Cコンパイラとの組み合わせで使っていた方が幸せだと思うよ
実質的にCのプログラムでしかないなら純粋なCのプログラムとして書き直して
Cコンパイラとの組み合わせで使っていた方が幸せだと思うよ
125115
2019/07/25(木) 13:26:54.50ID:A3AJFf0Q その方がサイズも小さく速度も速いですかね。
トライしてみます。
トライしてみます。
126デフォルトの名無しさん
2019/07/27(土) 08:53:41.05ID:zR8v2AWF >>125
ブロック変数宣言の位置だけがブロックの冒頭ではないというだけなら、通常、
速度低下は全く無く、それをブロックの冒頭に書き直しても速くなることは
有りません。
また、コンストラクタ、デストラクタ、仮想関数、STL、コンテナなどを使わない限り
通常、C++がCより遅くなるということは有りません。
ブロック変数宣言の位置だけがブロックの冒頭ではないというだけなら、通常、
速度低下は全く無く、それをブロックの冒頭に書き直しても速くなることは
有りません。
また、コンストラクタ、デストラクタ、仮想関数、STL、コンテナなどを使わない限り
通常、C++がCより遅くなるということは有りません。
127デフォルトの名無しさん
2019/07/28(日) 00:37:20.66ID:YxeZH1gr Embedded C++みたいなこと言ってんな
128デフォルトの名無しさん
2019/08/05(月) 22:51:14.97ID:DMRdHfR+ これからC++勉強しようと思うのですが、
開発環境は何を入れるのがおすすめですか?
Visual Studio Communityが無料で良いのでしょうか
他におすすめあれば御紹介願います
あと、C++勉強に当たっておすすめ定番の本あれば
ご教示ください
開発環境は何を入れるのがおすすめですか?
Visual Studio Communityが無料で良いのでしょうか
他におすすめあれば御紹介願います
あと、C++勉強に当たっておすすめ定番の本あれば
ご教示ください
129デフォルトの名無しさん
2019/08/05(月) 22:55:30.85ID:vqN4pUkV 今時ならUbuntu入れてatomなりvs codeなり入れりゃいいんじゃないかな
純粋にc++の勉強したいなら
VCは独自仕様が酷すぎるから言語学習には不向き
純粋にc++の勉強したいなら
VCは独自仕様が酷すぎるから言語学習には不向き
130デフォルトの名無しさん
2019/08/05(月) 23:01:28.37ID:nblSLoEW VCの独自仕様が気に入らんのならVS2019で対応したLLVMツールセットを使えばいい
初心者にIDEなしはモチベ維持が困難
初心者にIDEなしはモチベ維持が困難
131デフォルトの名無しさん
2019/08/05(月) 23:18:05.24ID:f20npl5p 独自仕様ならGCC、未実装ならVCってかんじだがどちらも独自仕様はオプションで制御できる
まあWindows環境でやるならVisualStudio使わないのはマゾ
おすすめできる定番の本についてはどれも一長一短だし
テンプレートの利用くらいまで扱ってればとりあえずなんでもいいと思う
まあWindows環境でやるならVisualStudio使わないのはマゾ
おすすめできる定番の本についてはどれも一長一短だし
テンプレートの利用くらいまで扱ってればとりあえずなんでもいいと思う
132デフォルトの名無しさん
2019/08/05(月) 23:29:17.63ID:vqN4pUkV vcのは独自と言っても、なぜかコンパイルが通らない
なぜかコンパイルが通る
なぜかリンクエラーが起こる
みたいなあまり明文化されていないのだから面倒
structとclassがリンカで別物ってのは酷すぎる
なぜかコンパイルが通る
なぜかリンクエラーが起こる
みたいなあまり明文化されていないのだから面倒
structとclassがリンカで別物ってのは酷すぎる
133デフォルトの名無しさん
2019/08/05(月) 23:45:44.34ID:4w7A00FF >>132その最後の行の話、はじめて聞いたけど参考になるサイトとかあったら教えて。
134デフォルトの名無しさん
2019/08/05(月) 23:49:09.91ID:vqN4pUkV ググればいくらでも出てくるがとりあえず一番上を貼っておく
https://stackoverflow.com/questions/33483623/visual-c-2015-linker-error-when-forward-declaring-a-struct-as-class
https://stackoverflow.com/questions/33483623/visual-c-2015-linker-error-when-forward-declaring-a-struct-as-class
135デフォルトの名無しさん
2019/08/06(火) 00:52:13.35ID:pONItBAd コマンドライン引数ってのが何を出来るものなのか全く分からないのですが、何が出来るものなんでしょうか?
書き方はまー分かったんですけど、空のメモ帳をドラッグ&ドロップすると意味あるみたいなこと書いてあるけど何も起こりません…
使用環境Visualstudio2019 で見ているサイトhttp:ああwisdom.sakura.ne.jpあprogramming/c/c32.htmlです
書き方はまー分かったんですけど、空のメモ帳をドラッグ&ドロップすると意味あるみたいなこと書いてあるけど何も起こりません…
使用環境Visualstudio2019 で見ているサイトhttp:ああwisdom.sakura.ne.jpあprogramming/c/c32.htmlです
136デフォルトの名無しさん
2019/08/06(火) 11:26:59.34ID:qIlFvc4N std::optionalが内部に値を保持する仕組みについてお聞きしたいことがあります
現在いくつかのサイトを巡り、値を保持するためにstd::aligned_storageで確保した領域に配置構文newで値を書き込んでいることがわかりました
このaligned_storageを使った場合に、std::vectorなどのサイズが可変な値が格納されるとどういった挙動になるのでしょうか
vectorの要素数が増えてサイズが大きくなると、alinged_storageで確保したサイズを超えてしまったりしないのでしょうか
現在いくつかのサイトを巡り、値を保持するためにstd::aligned_storageで確保した領域に配置構文newで値を書き込んでいることがわかりました
このaligned_storageを使った場合に、std::vectorなどのサイズが可変な値が格納されるとどういった挙動になるのでしょうか
vectorの要素数が増えてサイズが大きくなると、alinged_storageで確保したサイズを超えてしまったりしないのでしょうか
137デフォルトの名無しさん
2019/08/06(火) 14:04:02.23ID:AX25/xXa 根本的な部分の理解が足りていない気がするが直接の答えとしてはvectorのサイズは増えないので問題ない。
vectorが管理しているバッファのサイズは増える。
vectorはポインタを持っているだけ。
vectorが管理しているバッファのサイズは増える。
vectorはポインタを持っているだけ。
138デフォルトの名無しさん
2019/08/06(火) 21:09:46.35ID:qIlFvc4N >>137
なるほど、的確な解答ありがとうございます
なるほど、的確な解答ありがとうございます
139デフォルトの名無しさん
2019/08/07(水) 00:38:52.58ID:pFHPYbJE VS2019でchar* name="ABC"みたいにやると
cont char*値を使用してchar*のエンティティを初期化することはできません。とエラーが出るんですけど
どうしたら実行できます?
ググったらcharの前にconst付けると直るみたいですけどこの例だと治りませんでした
http://ideone.com/YyFypJ
cont char*値を使用してchar*のエンティティを初期化することはできません。とエラーが出るんですけど
どうしたら実行できます?
ググったらcharの前にconst付けると直るみたいですけどこの例だと治りませんでした
http://ideone.com/YyFypJ
140デフォルトの名無しさん
2019/08/07(水) 00:46:34.02ID:nHUnBCAO const char* name;
ってしてもダメなの?
ってしてもダメなの?
141デフォルトの名無しさん
2019/08/07(水) 04:58:05.08ID:pFHPYbJE142デフォルトの名無しさん
2019/08/07(水) 05:16:54.31ID:v77Wmobb 構造体だから
143デフォルトの名無しさん
2019/08/07(水) 05:19:14.35ID:v77Wmobb あるいはそれを許可するコンパイルオプション付けるか
144デフォルトの名無しさん
2019/08/07(水) 08:50:49.29ID:F5bbfK8A 文字列リテラルの型はconstな文字列の配列です
https://ezoeryou.github.io/cpp-book/C++11-Syntax-and-Feature.xhtml#encoding-scheme
https://ezoeryou.github.io/cpp-book/C++11-Syntax-and-Feature.xhtml#encoding-scheme
145デフォルトの名無しさん
2019/08/07(水) 10:29:55.43ID:5hdKKXYg >>141
それをやってダメだったときのエラーメッセージを張ろう
それをやってダメだったときのエラーメッセージを張ろう
146デフォルトの名無しさん
2019/08/07(水) 10:45:14.88ID:9Ff0DYo3 >>139
C/C++の言語仕様的には
const char *name="ABC";
で行ける可能性は高いんですが、分かりやすさのためには、
static const char szName[] ="ABC"; // szName[4] という配列を "ABC",0 で初期化。
const char *name =&szName[0];
とするものお勧めです。
C/C++の言語仕様的には
const char *name="ABC";
で行ける可能性は高いんですが、分かりやすさのためには、
static const char szName[] ="ABC"; // szName[4] という配列を "ABC",0 で初期化。
const char *name =&szName[0];
とするものお勧めです。
147デフォルトの名無しさん
2019/08/07(水) 11:36:34.89ID:Io4EJaZl 少なくとも>>139のリンクにあるコードはchar*にリテラルを入れようとしてるのでNG
constをつけても駄目なのは生成後に代入しようとしてるから
てか意味もなくグローバルスコープの構造体とかやめろ
constをつけても駄目なのは生成後に代入しようとしてるから
てか意味もなくグローバルスコープの構造体とかやめろ
148デフォルトの名無しさん
2019/08/07(水) 17:26:37.26ID:Io4EJaZl あと特に理由がないなら文字列はstd::stringを使うべき
C言語じゃないんだから
C言語じゃないんだから
149デフォルトの名無しさん
2019/08/07(水) 17:27:18.45ID:Io4EJaZl ↑C言語じゃないんだったら
150デフォルトの名無しさん
2019/08/08(木) 08:01:13.41ID:kZ+216R/ >>147
構造体メンバに
const char *name;
と書いていて、構造体を生成後に後から name メンバに
Cの文字列リテラルの先頭アドレスを代入することは、
C/C++の言語仕様的にはいけるはずです。
なぜなら、xxx.name のように書いた場合、コンパイラの内部的には
const char* 型の左辺値(代入先)が有るのと同じように扱われるので、
ローカル変数に const char *aaa; aaa = "xxx"; と書いた場合と変わらなく
なるはずですから、C/C++ の言語仕様的には。
構造体メンバに
const char *name;
と書いていて、構造体を生成後に後から name メンバに
Cの文字列リテラルの先頭アドレスを代入することは、
C/C++の言語仕様的にはいけるはずです。
なぜなら、xxx.name のように書いた場合、コンパイラの内部的には
const char* 型の左辺値(代入先)が有るのと同じように扱われるので、
ローカル変数に const char *aaa; aaa = "xxx"; と書いた場合と変わらなく
なるはずですから、C/C++ の言語仕様的には。
151デフォルトの名無しさん
2019/08/08(木) 16:00:04.26ID:uMVCdDWb 独自のクラスに比較演算子==を実装する時、クラス内に定義するのとグローバルで定義するのとでは、実装の仕方以外に違いがあるのでしょうか?
また、例えば独自クラスとintの比較演算子==を実装する場合は、左辺にintがある場合と右辺にintがある場合の二つを用意する必要があるのでしょうか
ちなみに使用しているのはC++11です
また、例えば独自クラスとintの比較演算子==を実装する場合は、左辺にintがある場合と右辺にintがある場合の二つを用意する必要があるのでしょうか
ちなみに使用しているのはC++11です
152デフォルトの名無しさん
2019/08/08(木) 16:20:50.94ID:5ZN2ymvH それくらいすぐ作れるんだからやってみればいいのでは
153デフォルトの名無しさん
2019/08/08(木) 16:35:41.72ID:uMVCdDWb >>152
これって自分でやったところで解決できる質問なのでしょうか?
もちろん既に自分で実装していますが、自分で使ってみた感じではクラスでもグローバルでも一切の違いがないと「思います」
左辺と右辺のintについても、わざわざ2つの演算子を定義するしか方法がないと「思います」
これって自分でやったところで解決できる質問なのでしょうか?
もちろん既に自分で実装していますが、自分で使ってみた感じではクラスでもグローバルでも一切の違いがないと「思います」
左辺と右辺のintについても、わざわざ2つの演算子を定義するしか方法がないと「思います」
154デフォルトの名無しさん
2019/08/08(木) 23:38:32.45ID:gitRBAeC クラス内に定義するのとグローバルで定義するのとってどういう意味でだ?
クラスのメンバ関数と普通の関数として定義するのとってこと?
あるいはクラスのstaticメンバ関数と普通の関数?
そういうのとは違ってクラス定義の中にメンバ関数の定義も書くのと
クラス定義の中では宣言だけで外に定義を書くのとってこと?
クラスのメンバ関数と普通の関数として定義するのとってこと?
あるいはクラスのstaticメンバ関数と普通の関数?
そういうのとは違ってクラス定義の中にメンバ関数の定義も書くのと
クラス定義の中では宣言だけで外に定義を書くのとってこと?
155デフォルトの名無しさん
2019/08/09(金) 01:10:13.49ID:QHhCdgXb >>151
クラス内に定義すると当然メンバー関数扱いなるのでprivateメンバーにアクセスできるが、左辺を自クラス、右辺をintにoperatorしか定義できない。
クラス外に定義すると、そのままではprivateメンバーにアクセス出来ないが、左辺、右辺どっちでも自由に定義できる。
クラス内に定義すると当然メンバー関数扱いなるのでprivateメンバーにアクセスできるが、左辺を自クラス、右辺をintにoperatorしか定義できない。
クラス外に定義すると、そのままではprivateメンバーにアクセス出来ないが、左辺、右辺どっちでも自由に定義できる。
156デフォルトの名無しさん
2019/08/09(金) 01:23:46.70ID:QHhCdgXb >>151
相手がintの場合はわざわざoperator==を定義しなくても、intへの型変換operatorを定義すれば勝手に変換してくれるので、そっちの方が楽だと思う。
相手がintの場合はわざわざoperator==を定義しなくても、intへの型変換operatorを定義すれば勝手に変換してくれるので、そっちの方が楽だと思う。
157デフォルトの名無しさん
2019/08/09(金) 04:08:33.63ID:P26n3T2n158デフォルトの名無しさん
2019/08/09(金) 11:09:20.14ID:0rjrOlB6159デフォルトの名無しさん
2019/08/10(土) 01:46:44.99ID:07GKNAvB 質問ですがリフレクションってのは何ナノですか?
これがないのがC++の欠点って言われてるそうですが
これがないのがC++の欠点って言われてるそうですが
160デフォルトの名無しさん
2019/08/10(土) 02:13:52.05ID:0AyH8q+k ググって何がわからなかったのか書けよ
そういう気配り謙虚さがないからお前は伸びないんだよ
そういう気配り謙虚さがないからお前は伸びないんだよ
161デフォルトの名無しさん
2019/08/11(日) 09:19:19.57ID:tY3BhpyE162デフォルトの名無しさん
2019/08/12(月) 16:51:27.60ID:dO9cEAMi >>151
それよりもその定義をどのファイルに置いとくかっていうディレクトリ構成のが重要。
それよりもその定義をどのファイルに置いとくかっていうディレクトリ構成のが重要。
163デフォルトの名無しさん
2019/08/12(月) 16:56:28.87ID:FzF2lTUV ある型TでT[]とT*とTって何が違うの??
164デフォルトの名無しさん
2019/08/13(火) 00:33:44.36ID:DG2S/APd T[]は配列、Tなものが並んだもの
T*はポインタ、Tなものを指すもの
Tは、Tそのものとしか
配列は随所でポインタに変換されるから混同するのもわからんでもないが
T*はポインタ、Tなものを指すもの
Tは、Tそのものとしか
配列は随所でポインタに変換されるから混同するのもわからんでもないが
165デフォルトの名無しさん
2019/08/13(火) 01:11:53.36ID:7xRhzmxz じゃあ配列を関数の実引数で与えるときに[]…って書かないで*ってするのはなんで??
166デフォルトの名無しさん
2019/08/13(火) 03:45:41.66ID:4ID4APxI 配列を渡すんじゃなくて配列を指すものを渡すため
167デフォルトの名無しさん
2019/08/13(火) 05:41:26.72ID:DG2S/APd 配列を関数の実引数で与えるときに*なんてしない
int arr[NUM] = 0; func(arr, NUM);
普通こう書く
cでは、配列は構造体とは違い「満足なオブジェクト」ではないんだ
関数に配列そのものを渡すには構造体で包むなりしないとならない
面倒なんで普通はそんなことはしなくて、先頭要素へのポインタとサイズを渡す
上記func(arr, NUM);も、本当は配列そのものを渡したいんだけどできないから
そういう意味だと解釈される
int arr[NUM] = 0; func(arr, NUM);
普通こう書く
cでは、配列は構造体とは違い「満足なオブジェクト」ではないんだ
関数に配列そのものを渡すには構造体で包むなりしないとならない
面倒なんで普通はそんなことはしなくて、先頭要素へのポインタとサイズを渡す
上記func(arr, NUM);も、本当は配列そのものを渡したいんだけどできないから
そういう意味だと解釈される
168デフォルトの名無しさん
2019/08/13(火) 07:20:08.26ID:j44aRWG6 つまり、めんどくせぇし表現乱立するくらいならvectorなりarray使えってことだな
169デフォルトの名無しさん
2019/08/13(火) 16:33:08.61ID:qE6XkMY1 mallocした配列なら*
二次元配列なら**
三次元なら***
すんごく分かり易いじゃん
二次元配列なら**
三次元なら***
すんごく分かり易いじゃん
>>167
>cでは、配列は構造体とは違い「満足なオブジェクト」ではないんだ
私にいわせると、C の配列の扱い方こそ正義であり、まるまま渡せるという構造体の方が正義に反するやりかただと考えています
構造体の扱いに関しては、K&R1 のままの方が良く K&R2 は改悪だったと思っています
>cでは、配列は構造体とは違い「満足なオブジェクト」ではないんだ
私にいわせると、C の配列の扱い方こそ正義であり、まるまま渡せるという構造体の方が正義に反するやりかただと考えています
構造体の扱いに関しては、K&R1 のままの方が良く K&R2 は改悪だったと思っています
171デフォルトの名無しさん
2019/08/13(火) 18:08:35.02ID:rOcNi2je >>170
お前の正義はどうでもいい
お前の正義はどうでもいい
172デフォルトの名無しさん
2019/08/14(水) 07:35:10.61ID:R+Q0cUgU >>168
乱立とかちょっと何言ってるかわかんない
乱立とかちょっと何言ってるかわかんない
173デフォルトの名無しさん
2019/08/14(水) 10:53:25.60ID:K0s/BHfQ Cだけだといろいろ物足りないから
C++ をちょっと便利な C として
手を付けるのは あり?
C++ をちょっと便利な C として
手を付けるのは あり?
174デフォルトの名無しさん
2019/08/14(水) 11:07:19.09ID:ULyjZxwK Better Cっていう用語があるくらい一般的な使い方です
>>173
みんなそうやって C から C++ に移ってきたのだと、私は思います
みんなそうやって C から C++ に移ってきたのだと、私は思います
176デフォルトの名無しさん
2019/08/14(水) 19:59:27.72ID:H7xh21M5 >>175
お前はC++の機能はまともに使えてないけどな
お前はC++の機能はまともに使えてないけどな
>>176
どんなところが「まともに使えていない」と感じられるものだったのでしょうか?
どんなところが「まともに使えていない」と感じられるものだったのでしょうか?
178デフォルトの名無しさん
2019/08/14(水) 21:53:50.90ID:xRZNaRgT いや、もうc言語とかいいじゃん、 c++使おうよ
配列で悩むのめんどくさくね?
配列のサイズ渡せないとか欠陥だからマジで
配列で悩むのめんどくさくね?
配列のサイズ渡せないとか欠陥だからマジで
179デフォルトの名無しさん
2019/08/15(木) 06:20:44.75ID:KtlbsHo8180デフォルトの名無しさん
2019/08/15(木) 07:46:25.74ID:xtiqLszO181デフォルトの名無しさん
2019/08/15(木) 08:00:09.50ID:KtlbsHo8 >>180
お前わざと条件増やしたろ?
お前わざと条件増やしたろ?
182デフォルトの名無しさん
2019/08/15(木) 23:28:39.14ID:/raW50Q0 メタプロなんてできない方がかえって生産性あがるわ。
カスが使うと無駄にモジュラリティーの低いもの作るだけ。
カスが使うと無駄にモジュラリティーの低いもの作るだけ。
>>182
貴重なお言葉恐悦至極に存じます、メタプロとかは私は一生理解できないと思っていますが、それでもいい、というお言葉ですよね…
貴重なお言葉恐悦至極に存じます、メタプロとかは私は一生理解できないと思っていますが、それでもいい、というお言葉ですよね…
184デフォルトの名無しさん
2019/08/16(金) 17:52:44.76ID:WXGx/ZZ4185デフォルトの名無しさん
2019/08/16(金) 18:07:14.43ID:w6EX52R7 つまりksかどうかを判定するにはメタプロさせてみればいい、ってこと?
186デフォルトの名無しさん
2019/08/16(金) 18:08:34.43ID:JO1Ik9g1 十分条件と必要条件でググって
187デフォルトの名無しさん
2019/08/16(金) 22:52:38.68ID:Y5iyjQTU189デフォルトの名無しさん
2019/08/16(金) 23:54:46.13ID:thOVjQYW >>183
理解の問題じゃなくてセンスの問題だつってんだよバカ。
理解の問題じゃなくてセンスの問題だつってんだよバカ。
>>189
そうですか、でも、それはそれで興味深いですね
センスの問題、ということは非言語領域的テーマだろうか、と推察しますが、
コンピューター言語という極めて形式的=言語的な領域の話にて非言語的概念が語られる、いや、それが最重要であるというところに奥の知れない「恐ろしさ」を予想します
そうですか、でも、それはそれで興味深いですね
センスの問題、ということは非言語領域的テーマだろうか、と推察しますが、
コンピューター言語という極めて形式的=言語的な領域の話にて非言語的概念が語られる、いや、それが最重要であるというところに奥の知れない「恐ろしさ」を予想します
191デフォルトの名無しさん
2019/08/17(土) 02:40:02.84ID:MepC3sRG (どうもコンパイル時最適化が効くからテンプレートメタプログラミングするって人がいないように思う)
192デフォルトの名無しさん
2019/08/17(土) 09:39:59.02ID:1UQd730E コンパイル時最適化て、C++の最適化は普通コンパイル時とリンク時だけやろ
>>192
リンク時に最適化するのですか?単にリンカがリンクするだけだと思っていましたが
リンク時に最適化するのですか?単にリンカがリンクするだけだと思っていましたが
194デフォルトの名無しさん
2019/08/17(土) 12:18:18.80ID:1UQd730E メジャーなコンパイラにはある機能だよ
リンク時最適化でggr
リンク時最適化でggr
195デフォルトの名無しさん
2019/08/17(土) 14:11:42.12ID:0hT5zrAG テンプレートのコンパイル時最適化なんてのはマクロ展開的な最適化をしてるだけ。
そんな最適化が必要な部分はもっと慎重に関数化するわ。
ただドヤリたいだけのバカがありがたがってるってのがよくわかる。
そんな最適化が必要な部分はもっと慎重に関数化するわ。
ただドヤリたいだけのバカがありがたがってるってのがよくわかる。
196デフォルトの名無しさん
2019/08/17(土) 15:01:36.23ID:uFx2S1XX マクロと違って型で挙動変えられるのが美味しいのに
197デフォルトの名無しさん
2019/08/17(土) 15:22:51.03ID:mvKCT7Z2 これまで何も考えずにC++で配列を使ってたんですけど
もしかしてC++で配列を使うのってナメられますか?
arrayやvectorなどでないとやはりコードのクオリティが下がることになってしまうのでしょうか?
もしかしてC++で配列を使うのってナメられますか?
arrayやvectorなどでないとやはりコードのクオリティが下がることになってしまうのでしょうか?
198デフォルトの名無しさん
2019/08/17(土) 15:52:09.37ID:BZ3r0cTp newからdeleteまでの間の例外処理に不備がないと自信があるなら生配列で構わん
199デフォルトの名無しさん
2019/08/17(土) 16:56:59.91ID:kME64/ZP200デフォルトの名無しさん
2019/08/17(土) 17:14:22.35ID:WCU4L4CL >>197
生配列とarrayやvectorのメリットデメリットや使い分けを理解せずに何も考えずにarrayやvectorにする方がいいらしいなんて理解の仕方ならクオリティは低いままだよ。
生配列とarrayやvectorのメリットデメリットや使い分けを理解せずに何も考えずにarrayやvectorにする方がいいらしいなんて理解の仕方ならクオリティは低いままだよ。
201デフォルトの名無しさん
2019/08/17(土) 18:13:22.13ID:1UQd730E202デフォルトの名無しさん
2019/08/18(日) 00:09:06.82ID:XCKtcmfj203デフォルトの名無しさん
2019/08/18(日) 08:44:15.16ID:vyOg2WJ0 >あんまり理解してないでしょ?
こっちの台詞だよ
必要とされたときに初めて実体化されるの
必要ないのに全ての型全ての組み合わせ用意してから削ってると思ってたのか
こっちの台詞だよ
必要とされたときに初めて実体化されるの
必要ないのに全ての型全ての組み合わせ用意してから削ってると思ってたのか
204デフォルトの名無しさん
2019/08/18(日) 09:58:09.36ID:S9bN8HAf >>197
「配列 キャッシュ効率」で調べると次のようなものが出てくる
平たく言うと「配列をキャッシュに乗せる」
プログラミング :: 高速なプログラムを書く為に :: メモリ
ttp://myoga.web.fc2.com/prog/cpp/opti02.htm
Processingで見るプログラミングスタイル七変化 - Qiita
ttps://qiita.com/FAL/items/19be333d55f7fcb1943a
プログラムを高速化する話
ttps://www.slideshare.net/KMC_JP/ss-45855264
「配列 キャッシュ効率」で調べると次のようなものが出てくる
平たく言うと「配列をキャッシュに乗せる」
プログラミング :: 高速なプログラムを書く為に :: メモリ
ttp://myoga.web.fc2.com/prog/cpp/opti02.htm
Processingで見るプログラミングスタイル七変化 - Qiita
ttps://qiita.com/FAL/items/19be333d55f7fcb1943a
プログラムを高速化する話
ttps://www.slideshare.net/KMC_JP/ss-45855264
205デフォルトの名無しさん
2019/08/18(日) 12:05:15.42ID:XCKtcmfj206デフォルトの名無しさん
2019/08/18(日) 12:24:08.36ID:vyOg2WJ0 変数(というよりテンプレート実引数)を特殊化なりオーバーロードなりで評価した結果コードが生成されない(テンプレートが実体化されない)のは最適化でも何でもない
207デフォルトの名無しさん
2019/08/18(日) 12:27:17.01ID:vyOg2WJ0 ただし、よくわかりもせずにテンプレートを持て囃したりC++歴数年でテンプレートに首突っ込む(しかも生産性ガン無視で)初心者が増えたのは俺も問題だと思う
208デフォルトの名無しさん
2019/08/18(日) 12:37:50.86ID:AmZy196G でもテンプレート便利じゃん
209デフォルトの名無しさん
2019/08/18(日) 12:52:38.69ID:rJ9LPM9I >>205
君の用語の使い方が独特で、君の思ってることを読み取れるエスパーは少ないって話だと思うよ。
マクロ展開の「実行評価」って何なの?
具体的な問題を挙げずに危険とかいうのは単なるFUDってやつじゃないの?
理解させるために言葉を工夫するつもりが無いなら黙ってくれていい。
君の用語の使い方が独特で、君の思ってることを読み取れるエスパーは少ないって話だと思うよ。
マクロ展開の「実行評価」って何なの?
具体的な問題を挙げずに危険とかいうのは単なるFUDってやつじゃないの?
理解させるために言葉を工夫するつもりが無いなら黙ってくれていい。
210デフォルトの名無しさん
2019/08/18(日) 18:15:25.68ID:XCKtcmfj211デフォルトの名無しさん
2019/08/18(日) 22:22:43.25ID:4oEGaRbg >>210
common lispで実行評価って、evaluationのことを言いたいのだろうか?それなら「評価」と訳されると思うけど、実行評価はググっても見当たらない。PDCAの用語と混同してるのではないかと思えてしまう。
common lispで実行評価って、evaluationのことを言いたいのだろうか?それなら「評価」と訳されると思うけど、実行評価はググっても見当たらない。PDCAの用語と混同してるのではないかと思えてしまう。
212デフォルトの名無しさん
2019/08/18(日) 23:03:24.76ID:Onid3Fuw lispがでてくるならこれはもう defmacro しかないんじゃないか?
213デフォルトの名無しさん
2019/08/18(日) 23:06:53.30ID:8LEpKI7v 用語でもめるくらいならサンプルコードでやれ
214デフォルトの名無しさん
2019/08/19(月) 01:57:01.62ID:DiXQVhta そやっ
common lisp言うたら相手びびるはずやっ
common lisp言うたら相手びびるはずやっ
215デフォルトの名無しさん
2019/08/19(月) 11:27:33.54ID:icNxZHqv まずはダイナミックとスタティックの違いがある
静的なものは未来永劫不動なので、一度作ったら未来でも一切変わらない
動的なものは「未来は不定である」「未来は誰にも分からない」という哲学あるいは神学から作られたので、未来に挙動が変わる
決定論的な未来の世界観では一度作ったらそれきり、静的なものが出来上がる
ここでいう決定は本当に神学で、全知全能の神を指している
未来の事柄があらかじめ全部分かっていれば、ダイナミックなことはしなくて良くなる、というのが、彼ら西洋人の究極の理想論
今分かることは動かす前に全部決め打ちすりゃーいい、ってのが静的だ
静的なものは未来永劫不動なので、一度作ったら未来でも一切変わらない
動的なものは「未来は不定である」「未来は誰にも分からない」という哲学あるいは神学から作られたので、未来に挙動が変わる
決定論的な未来の世界観では一度作ったらそれきり、静的なものが出来上がる
ここでいう決定は本当に神学で、全知全能の神を指している
未来の事柄があらかじめ全部分かっていれば、ダイナミックなことはしなくて良くなる、というのが、彼ら西洋人の究極の理想論
今分かることは動かす前に全部決め打ちすりゃーいい、ってのが静的だ
>>215
>未来の事柄があらかじめ全部分かっていれば、ダイナミックなことはしなくて良くなる、というのが、彼ら西洋人の究極の理想論
ラプラスの悪魔、という語句をご存知ですか?西洋人ですら「未来の事柄をあらかじめ」予測することはできない、と観念しているようですよ…
>未来の事柄があらかじめ全部分かっていれば、ダイナミックなことはしなくて良くなる、というのが、彼ら西洋人の究極の理想論
ラプラスの悪魔、という語句をご存知ですか?西洋人ですら「未来の事柄をあらかじめ」予測することはできない、と観念しているようですよ…
217入門
2019/08/19(月) 20:35:59.98ID:aCo9z6Zb 色んなサイトを見てC言語の文法を学習中なのですが構造体の自己参照のやり方がどうも分かりません。
かんたんな短いサンプルコードを使って教えてほしいです
よろしくお願い致します😪
かんたんな短いサンプルコードを使って教えてほしいです
よろしくお願い致します😪
218蟻人間 ◆T6xkBnTXz7B0
2019/08/19(月) 20:40:39.17ID:GYeBbzEk 構造体Aが内部に構造体Aを持つとすると、Aは無限の構造的ループを持つことになる。これはあり得ない。
自己参照するなら、Aのポインタを使わないといけない。
typedef struct A
{
struct A *next;
int value;
} A;
こんな感じになる。ポインタが分かっているなら、
A *a = (A *)calloc(1, sizeof(A));
a->next = NULL;
a->value = 666;
...
この変数aにさらに追加するなら、
A *b = (A *)calloc(1, sizeof(A));
a->next = b;
...
問題は破棄だが、自己参照をたどっていってすべてのAの実体に対して、
freeを呼ばないといけない。
自己参照するなら、Aのポインタを使わないといけない。
typedef struct A
{
struct A *next;
int value;
} A;
こんな感じになる。ポインタが分かっているなら、
A *a = (A *)calloc(1, sizeof(A));
a->next = NULL;
a->value = 666;
...
この変数aにさらに追加するなら、
A *b = (A *)calloc(1, sizeof(A));
a->next = b;
...
問題は破棄だが、自己参照をたどっていってすべてのAの実体に対して、
freeを呼ばないといけない。
219蟻人間 ◆T6xkBnTXz7B0
2019/08/19(月) 20:48:42.67ID:GYeBbzEk ただし、同じ実体に対して2回free関数を呼ぶことはできない。
また、解放した実体のメンバーは参照することができない。
参照すると、不正読み込みでプログラムが異常終了するかもしれない。
ということでパズルのように解放方法のアルゴリズムを考案しないといけない。
C言語というのは、そういうややこしさをはらんでいる。
また、解放した実体のメンバーは参照することができない。
参照すると、不正読み込みでプログラムが異常終了するかもしれない。
ということでパズルのように解放方法のアルゴリズムを考案しないといけない。
C言語というのは、そういうややこしさをはらんでいる。
220蟻人間 ◆T6xkBnTXz7B0
2019/08/19(月) 20:56:19.12ID:GYeBbzEk 1個追加したいときに、このようなコードをいちいち書くのは大変なので、
普通は「1個追加する」という動作を行う関数を用意する。
void add(A *a, int value)
{
A *b = (A *)calloc(1, sizeof(A));
b->next = NULL;
b->value = value;
a->next = b;
}
普通は「1個追加する」という動作を行う関数を用意する。
void add(A *a, int value)
{
A *b = (A *)calloc(1, sizeof(A));
b->next = NULL;
b->value = value;
a->next = b;
}
221デフォルトの名無しさん
2019/08/19(月) 21:05:52.16ID:thJnfNrr テンプレートの話題でlispの話題ならマクロの話ってピンとくるもんだと思ったが
結構バカが多いんだな。
結構バカが多いんだな。
222デフォルトの名無しさん
2019/08/19(月) 22:08:18.21ID:mpyM2QmS バカはお前だ
223入門
2019/08/19(月) 22:29:52.38ID:OunjwQY3224さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/08/19(月) 22:45:30.60ID:5pda5jNo calloc(1, sizeof(A))は、1*sizeof(A)バイトのメモリーブロックを確保し、ブロックをゼロでクリアする。そして先頭アドレスとしてvoid*型を返す。リファレンスをちゃんと読もう。全部書いてある。
225デフォルトの名無しさん
2019/08/20(火) 13:31:20.80ID:iQfxCe91 c++でanimal, dog, catなどのクラスを作ってオブジェクト指向の勉強してます.
dogとcatはanimalを継承するよくある例です.
適当にa[]という配列を切って,a[0]はdogのクラスでa[1]はcatのクラスで…
というようにしたいのですが,この配列a[]の型やaのクラスを指定するやり方が
分かりません.
最終的にはa[i].barkというようなことをやりたいです.
よくある質問だと思うのですが,適切な検索ワードが分からず困っています.
どうやったら良いかor適切なキーワードを教えてください.
dogとcatはanimalを継承するよくある例です.
適当にa[]という配列を切って,a[0]はdogのクラスでa[1]はcatのクラスで…
というようにしたいのですが,この配列a[]の型やaのクラスを指定するやり方が
分かりません.
最終的にはa[i].barkというようなことをやりたいです.
よくある質問だと思うのですが,適切な検索ワードが分からず困っています.
どうやったら良いかor適切なキーワードを教えてください.
226デフォルトの名無しさん
2019/08/20(火) 13:45:18.40ID:XxGMpj+X animalの配列にdog, catをアップキャストしてぶち込む
animal, dog, catのunionを作り、そのunionの配列を作る
animal, dog, catのunionを作り、そのunionの配列を作る
227デフォルトの名無しさん
2019/08/20(火) 13:52:03.45ID:XxGMpj+X 2つ目は違ったから忘れてくれ
228デフォルトの名無しさん
2019/08/20(火) 13:58:30.55ID:J42ZId0L >>226
さっぱり分かりませんがありがとうございます.これでgoogle先生に質問できます.
さっぱり分かりませんがありがとうございます.これでgoogle先生に質問できます.
229さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/08/20(火) 14:40:59.88ID:UPm4IEm3 ポインタの配列にしてポリモーフィズム。
230sage
2019/08/20(火) 15:46:52.82ID:5Gd7p9P4 >>229
こんな感じですか?
push_backでエラーが出てコンパイル出来ませんが…
std::vector<std::unique_ptr<Animal>> a;
a.reserve(2);
a.push_back(std::make_unique<Dog>());
a.push_back(std::make_unique<Cat>());
こんな感じですか?
push_backでエラーが出てコンパイル出来ませんが…
std::vector<std::unique_ptr<Animal>> a;
a.reserve(2);
a.push_back(std::make_unique<Dog>());
a.push_back(std::make_unique<Cat>());
231デフォルトの名無しさん
2019/08/20(火) 15:47:51.55ID:KtaU4TpY 基底クラスの実体配列じゃ多分無理で
基底クラスのポインタ配列しかないと思うわー
基底クラスのポインタ配列しかないと思うわー
232225
2019/08/20(火) 16:04:10.66ID:5Gd7p9P4 ポインタの配列を作ったつもりだったんですが違うんですね....
誰か簡単なコード書いてくれませんか?
誰か簡単なコード書いてくれませんか?
233デフォルトの名無しさん
2019/08/20(火) 16:32:36.95ID:ixrUSoxU c++17ならstd::variantが使えそうだけどね。
234デフォルトの名無しさん
2019/08/20(火) 18:41:29.45ID:XxGMpj+X235デフォルトの名無しさん
2019/08/20(火) 19:03:13.66ID:KUiZK6p2 >>230
普通にとおるような
普通にとおるような
236デフォルトの名無しさん
2019/08/20(火) 19:04:40.28ID:KUiZK6p2237デフォルトの名無しさん
2019/08/20(火) 19:05:34.46ID:PwBGX6fG238デフォルトの名無しさん
2019/08/20(火) 19:54:26.69ID:vf53Ia55239デフォルトの名無しさん
2019/08/20(火) 20:23:10.77ID:QkieET4w つか、エラー貼るまでもないだろ
std::unique_ptr
コイツはmovしかできないから、コンテナに格納できる条件に合わない。
スマートポインタをコンテナに入れたかったらsharedポインタを使う
常識じゃなかったのか
std::unique_ptr
コイツはmovしかできないから、コンテナに格納できる条件に合わない。
スマートポインタをコンテナに入れたかったらsharedポインタを使う
常識じゃなかったのか
240デフォルトの名無しさん
2019/08/20(火) 20:36:33.84ID:rT2paKVb unique_ptrはコンテナに格納可能という俺の常識とは違うようだな
241デフォルトの名無しさん
2019/08/20(火) 21:46:43.07ID:vf53Ia55242デフォルトの名無しさん
2019/08/20(火) 23:47:14.68ID:ehCs1rOT243230
2019/08/21(水) 20:14:24.97ID:tFOQQ8LH 質問者です。すいません。
コンストラクタのエラーでした。
無事コンパイルできました。
ありがとうございました。
コンストラクタのエラーでした。
無事コンパイルできました。
ありがとうございました。
244デフォルトの名無しさん
2019/08/26(月) 16:42:54.84ID:LypwkFGf 人の書いたプログラム読んでるですが,#includeとclassの定義の間に入ってるclassの意味が分かりません.
下の例で言うとHogeのところです.
これは何ですか?
#include <string>
class Hoge;
class Foo : public Bar
{
protected:
...
下の例で言うとHogeのところです.
これは何ですか?
#include <string>
class Hoge;
class Foo : public Bar
{
protected:
...
245デフォルトの名無しさん
2019/08/26(月) 16:47:52.57ID:goJw/KBc 前方宣言
246デフォルトの名無しさん
2019/08/26(月) 17:01:32.76ID:LypwkFGf ありがとうございます.ググって勉強しまう.
247デフォルトの名無しさん
2019/08/26(月) 19:18:54.68ID:YVFaeJ51 class TA{
static public int a;
}
があって、
int b = TA::a ;
のようにするのと、
TA A;
int b = A.a;
のようにするのは、bに読み込む速度は違うんですかね。
static public int a;
}
があって、
int b = TA::a ;
のようにするのと、
TA A;
int b = A.a;
のようにするのは、bに読み込む速度は違うんですかね。
248さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/08/26(月) 19:30:09.75ID:doK8kIo2 >>247
後者はAの実体を作るから遅いかも。まあ多分、最適化で変わらないと思う。
後者はAの実体を作るから遅いかも。まあ多分、最適化で変わらないと思う。
249デフォルトの名無しさん
2019/09/08(日) 17:10:16.42ID:eAq/jxOF wavファイルなどの外部の別ファイルを読み込んで使いたいのですが、どのようにやればいいのでしょうか…?
バイナリデータにして読み込む、みたいな方法を見かけたのですがファイルのサイズが大きすぎるとヒープの領域を使い果たしました的なエラーが出てしまって行き詰まっています
バイナリデータにして読み込む、みたいな方法を見かけたのですがファイルのサイズが大きすぎるとヒープの領域を使い果たしました的なエラーが出てしまって行き詰まっています
250デフォルトの名無しさん
2019/09/08(日) 17:38:17.62ID:46Wp6heU mallocを使う
まずは音ではなく画像、bmp読み込みから練習する
数百MBの音声ファイルよか数MBのbmp画像読み込みの方が気がラク
まずは音ではなく画像、bmp読み込みから練習する
数百MBの音声ファイルよか数MBのbmp画像読み込みの方が気がラク
251デフォルトの名無しさん
2019/09/08(日) 19:18:59.59ID:MtO5EQx1 >>249
一度に全データを読み込むのでなく、固定サイズのバッファに、必要な分だけ少しずつ読み込めばいい。
読み込み済みデータを再生するスレッドとは別に、もう一つのスレッドで再生にあわせてデータを先読みで読み込んでいけばいい。途切れなく再生するにはリングバッファとかを使う。
一度に全データを読み込むのでなく、固定サイズのバッファに、必要な分だけ少しずつ読み込めばいい。
読み込み済みデータを再生するスレッドとは別に、もう一つのスレッドで再生にあわせてデータを先読みで読み込んでいけばいい。途切れなく再生するにはリングバッファとかを使う。
252デフォルトの名無しさん
2019/09/08(日) 21:28:55.65ID:eAq/jxOF malloc・リングバッファ、詳しく調べて挑戦してみようと思います!
あとスレッドの概念もちゃんと理解できてない気がするのでそこも勉強しようと思います。
ありがとうございます!
あとスレッドの概念もちゃんと理解できてない気がするのでそこも勉強しようと思います。
ありがとうございます!
253デフォルトの名無しさん
2019/09/09(月) 10:46:06.36ID:QoBVzNSJ >ファイルのサイズが大きすぎると
積んでるメモリぐらいでかいファイルなのかな?
どういった読み込みで失敗してるんだろう?
積んでるメモリぐらいでかいファイルなのかな?
どういった読み込みで失敗してるんだろう?
254デフォルトの名無しさん
2019/09/09(月) 10:54:14.51ID:MF4WMKe5 > ヒープの領域を使い果たしました的なエラー
これからまず連想したのは、VCで巨大ファイルをリソース化しようとしたときに出るコンパイルエラーだな
どのタイミングで出たエラーか書いてないからわからんけど
これからまず連想したのは、VCで巨大ファイルをリソース化しようとしたときに出るコンパイルエラーだな
どのタイミングで出たエラーか書いてないからわからんけど
255デフォルトの名無しさん
2019/09/09(月) 11:17:30.78ID:QoBVzNSJ 実行ファイル中にリソースとして埋め込み
リソースからバイナリ列を引き出して(読み出して)
再生コードに渡す
音声を実行ファイルに埋め込みたかったのかな?
リソースからバイナリ列を引き出して(読み出して)
再生コードに渡す
音声を実行ファイルに埋め込みたかったのかな?
256249
2019/09/09(月) 13:17:02.59ID:4LFzbPos もう少し詳しく書くと、とあるプラグインを作りたくて、それ用のプロジェクトファイルのジェネレーターとVisual studio 2019 を使っています。
そのジェネレーターを通してwavファイルをバイナリデータ化しているのですが、wavファイルのサイズが一定以上になると「error C1060 ヒープの領域を使い果たしました」っていうエラーが出てビルドが通らない状態です。
10MBぐらいのwavファイルだと普通に通って、18MBぐらいになるとエラーが出ます。
そのジェネレーターを通してwavファイルをバイナリデータ化しているのですが、wavファイルのサイズが一定以上になると「error C1060 ヒープの領域を使い果たしました」っていうエラーが出てビルドが通らない状態です。
10MBぐらいのwavファイルだと普通に通って、18MBぐらいになるとエラーが出ます。
257デフォルトの名無しさん
2019/09/09(月) 13:19:41.05ID:By40c52C ソース貼れ
258デフォルトの名無しさん
2019/09/09(月) 13:27:07.20ID:8EKyQA8Q 企業秘密な秘伝のタレかもしれません
259デフォルトの名無しさん
2019/09/09(月) 13:27:52.11ID:FLVXg6p/ タレこめ
260デフォルトの名無しさん
2019/09/09(月) 14:06:32.05ID:QoBVzNSJ プラグイン本体にバイナリデータ埋めまず、エンドユーザーにはプラグインと音声ファイルを配布
音声ファイルのパスだけうまく帳尻あわせてファイル開いて、メモリ確保して、ファイル読んで、etc
って設計するかな
音声ファイルのパスだけうまく帳尻あわせてファイル開いて、メモリ確保して、ファイル読んで、etc
って設計するかな
261デフォルトの名無しさん
2019/09/09(月) 15:35:47.49ID:4OXc+RTk >>256
そのジェネレータとやらがエラー吐いたという話ならスレ違いだろう。
そのジェネレータとやらがエラー吐いたという話ならスレ違いだろう。
262デフォルトの名無しさん
2019/09/09(月) 16:07:02.52ID:aCapJVZa >>256
その秘伝のジェネレーターとやらがどんなコード吐いてるのか見当もつかないがとりあえず
https://docs.microsoft.com/en-us/cpp/error-messages/compiler-errors-1/fatal-error-c1060?view=vs-2019
の対策を片っ端からやればいいんじゃね?
その秘伝のジェネレーターとやらがどんなコード吐いてるのか見当もつかないがとりあえず
https://docs.microsoft.com/en-us/cpp/error-messages/compiler-errors-1/fatal-error-c1060?view=vs-2019
の対策を片っ端からやればいいんじゃね?
263デフォルトの名無しさん
2019/09/12(木) 12:49:41.16ID:J5GPib5U スレチのような気もするんですが,ここが一番適切な回答がありそうなんで,質問させて下さい.
iPadでc++のコード(複数のファイルでつくられている)を読みたいんですが便利なビューワーありますか?
関数名やクラス名クリックしたら定義してるところまでジャンプしてくれるようなやつを探してます.
emacsで言うetagsみたいな機能のことです.
iPadでc++のコード(複数のファイルでつくられている)を読みたいんですが便利なビューワーありますか?
関数名やクラス名クリックしたら定義してるところまでジャンプしてくれるようなやつを探してます.
emacsで言うetagsみたいな機能のことです.
264デフォルトの名無しさん
2019/09/12(木) 13:17:15.41ID:FruSebPm 「ipad emacs」 でぐぐったら iPad用の emacs そのものがあるようだけど
265263
2019/09/12(木) 13:56:43.03ID:Ng4JTS7f >>264
後出しですいません.キーボードは使わないのでemacsはないです.あと,iPadのemacsはけっこうがっかりだった記憶が….
タッチでジャンプできると嬉しいのですが….
便利そうなエディタは何個かあるみたいなんですが,ジャンプ機能がないんですよね.
後出しですいません.キーボードは使わないのでemacsはないです.あと,iPadのemacsはけっこうがっかりだった記憶が….
タッチでジャンプできると嬉しいのですが….
便利そうなエディタは何個かあるみたいなんですが,ジャンプ機能がないんですよね.
266225
2019/09/17(火) 22:40:09.17ID:iQJ8U52u267デフォルトの名無しさん
2019/09/17(火) 22:42:37.60ID:cgXPZZnO MZうyちゃーーーん♪こんなとこにいたのかw
268蟻人間 ◆T6xkBnTXz7B0
2019/09/17(火) 22:52:04.49ID:vrvr50SL >>266
ポリモーフィズムがうまくできていればAnimalのポインタの配列にDogやCatのポインタを突っ込めるはず。
ポリモーフィズムがうまくできていればAnimalのポインタの配列にDogやCatのポインタを突っ込めるはず。
269デフォルトの名無しさん
2019/09/17(火) 22:54:48.57ID:cgXPZZnO >>268
んでサウンドは使えるようになったか?w
んでサウンドは使えるようになったか?w
270デフォルトの名無しさん
2019/09/17(火) 23:00:14.32ID:iQJ8U52u271蟻人間 ◆T6xkBnTXz7B0
2019/09/17(火) 23:04:06.26ID:vrvr50SL Animal *array[10] = {NULL};
array[0] = new Cat(2, 3);
array[0]->walk();
delete array[0];
array[0] = new Cat(2, 3);
array[0]->walk();
delete array[0];
272デフォルトの名無しさん
2019/09/17(火) 23:08:52.42ID:4Zel//hf >>270
一旦オブジェクト指向のことは忘れてポインタを先にしっかり学んできた方が近道かもよ。ここで小さなサンプル教えてもらって真似しても近い将来嵌まって行き詰まりそう。
オブジェクト指向の勉強が目的なら他の言語で始めた方が余計なところで躓かないと思う。
一旦オブジェクト指向のことは忘れてポインタを先にしっかり学んできた方が近道かもよ。ここで小さなサンプル教えてもらって真似しても近い将来嵌まって行き詰まりそう。
オブジェクト指向の勉強が目的なら他の言語で始めた方が余計なところで躓かないと思う。
273デフォルトの名無しさん
2019/09/17(火) 23:08:55.80ID:cgXPZZnO DIM MZUY(0)
274デフォルトの名無しさん
2019/09/17(火) 23:10:14.52ID:cgXPZZnO >>272
MZうyちゃーーーん♪はBASICで充分w
MZうyちゃーーーん♪はBASICで充分w
275デフォルトの名無しさん
2019/09/17(火) 23:12:50.50ID:iQJ8U52u DogやCatのインスタンスも複数あって、
Dog だけでループとかCatだけでループとかしたいんです。
animalだけでループするなら書いていただいたので良さそうなんですが。
Dog だけでループとかCatだけでループとかしたいんです。
animalだけでループするなら書いていただいたので良さそうなんですが。
277デフォルトの名無しさん
2019/09/17(火) 23:18:18.48ID:f5N3Fp86 目標の設定と要件定義が先だってよ(ゲラゲラ
278デフォルトの名無しさん
2019/09/17(火) 23:19:18.73ID:Ps8IF7R/ DogやCatに自身のタイプを返す機能をつけるか、typeidを使ってループをフィルタすればいい
279蟻人間 ◆T6xkBnTXz7B0
2019/09/17(火) 23:20:21.52ID:vrvr50SL dynamic_castでダウンキャスト失敗すればNULLが買える。一個800円。
280デフォルトの名無しさん
2019/09/17(火) 23:20:27.62ID:f5N3Fp86 それで完成品は100年後か?
281デフォルトの名無しさん
2019/09/17(火) 23:20:52.26ID:iQJ8U52u 初心者スレだし、解答欲しいです。
282デフォルトの名無しさん
2019/09/17(火) 23:21:58.70ID:f5N3Fp86 バカのうんちくは回しコピペと同じw
283デフォルトの名無しさん
2019/09/17(火) 23:22:25.46ID:iQJ8U52u284デフォルトの名無しさん
2019/09/17(火) 23:23:03.14ID:Ps8IF7R/ for(auto a : animals){
if(typeid(a) == typeid(Dog*){
}
}
if(typeid(a) == typeid(Dog*){
}
}
285デフォルトの名無しさん
2019/09/17(火) 23:23:37.07ID:f5N3Fp86 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
286蟻人間 ◆T6xkBnTXz7B0
2019/09/17(火) 23:24:00.17ID:vrvr50SL dynamic_cast<Cat>(array[0]) == NULLだったらarray[0]はネコではない
287デフォルトの名無しさん
2019/09/17(火) 23:24:31.61ID:f5N3Fp86 || ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||
||. =ねらー三原則= ||
|| 1.助けない ||
|| 2.教えない 。 ∧_∧ いいですね。
|| 3.関わらない\ (゚Д゚,,)
||________⊂⊂ |
∧ ∧ ∧ ∧ ∧ ∧ | ̄ ̄ ̄ ̄|
( ∧ ∧ ( ∧ ∧ ( ∧ ∧ | |
〜(_( ∧ ∧ __( ∧ ∧__( ∧ ∧ ̄ ̄ ̄
〜(_( ∧ ∧_( ∧ ∧_( ∧ ∧ は〜い、先生。
〜(_( ,,)〜(_( ,,)〜(_( ,,)
〜(___ノ 〜(___ノ 〜(___ノ
||. =ねらー三原則= ||
|| 1.助けない ||
|| 2.教えない 。 ∧_∧ いいですね。
|| 3.関わらない\ (゚Д゚,,)
||________⊂⊂ |
∧ ∧ ∧ ∧ ∧ ∧ | ̄ ̄ ̄ ̄|
( ∧ ∧ ( ∧ ∧ ( ∧ ∧ | |
〜(_( ∧ ∧ __( ∧ ∧__( ∧ ∧ ̄ ̄ ̄
〜(_( ∧ ∧_( ∧ ∧_( ∧ ∧ は〜い、先生。
〜(_( ,,)〜(_( ,,)〜(_( ,,)
〜(___ノ 〜(___ノ 〜(___ノ
288蟻人間 ◆T6xkBnTXz7B0
2019/09/17(火) 23:24:40.10ID:vrvr50SL dynamic_cast<Cat*>(array[0]) == NULLだったらarray[0]はネコではない
289デフォルトの名無しさん
2019/09/17(火) 23:27:47.60ID:iQJ8U52u290デフォルトの名無しさん
2019/09/17(火) 23:41:03.11ID:4Zel//hf >>289
それなら条件に該当するエントリのポインタを抜き出した配列を作ってループすればいいんじゃないか?
ループ内の処理が並列化する価値があるくらいコストかかるなら、ポインタを抽出してコピーするコストは無視できるかと思われる。
それなら条件に該当するエントリのポインタを抜き出した配列を作ってループすればいいんじゃないか?
ループ内の処理が並列化する価値があるくらいコストかかるなら、ポインタを抽出してコピーするコストは無視できるかと思われる。
291デフォルトの名無しさん
2019/09/18(水) 00:08:00.90ID:yNiXaOMn292デフォルトの名無しさん
2019/09/18(水) 12:06:57.92ID:L8SHYgAR >>266
C#スレでマルチしてないかお前
C#スレでマルチしてないかお前
293デフォルトの名無しさん
2019/09/18(水) 20:26:23.65ID:yNiXaOMn >>292
してないやでー
してないやでー
294デフォルトの名無しさん
2019/09/22(日) 11:43:54.30ID:LQCFANDg > Animal *array[10] = {NULL};
20年以上前に配列要素を一つ以上書かないといけない処理系があったな
タイムスリップでもしてきたか
20年以上前に配列要素を一つ以上書かないといけない処理系があったな
タイムスリップでもしてきたか
295デフォルトの名無しさん
2019/09/22(日) 11:53:00.80ID:y42gsAly Animal *array[10] = {p0, p1, p2};
だとすると
array[0] 〜 array[2] は p0〜p2 になるが
array[3] 以降は全部 NULL で FA?
だとすると
array[0] 〜 array[2] は p0〜p2 になるが
array[3] 以降は全部 NULL で FA?
296デフォルトの名無しさん
2019/09/22(日) 16:44:01.11ID:dRs63Jnx >>295
引数の無いコンストラクター呼ばれる
引数の無いコンストラクター呼ばれる
297デフォルトの名無しさん
2019/09/22(日) 16:45:05.27ID:zrmuC8G0 char *array[10] = {p0, p1, p2};
だとすると
array[0] 〜 array[2] は p0〜p2 になるが
array[3] 以降は全部 NULL で FA?
だとすると
array[0] 〜 array[2] は p0〜p2 になるが
array[3] 以降は全部 NULL で FA?
298デフォルトの名無しさん
2019/09/22(日) 17:27:15.07ID:kTa1SMwh >>296
ポインタだぞ?
ポインタだぞ?
299デフォルトの名無しさん
2019/09/22(日) 18:52:04.08ID:9/tlWbjv >>294
Cだと今でもダメだから、それ見たんじゃないの?
Cだと今でもダメだから、それ見たんじゃないの?
300デフォルトの名無しさん
2019/09/22(日) 19:39:28.11ID:KmeF3kAh >>298
ポンタってローソンのカード?
ポンタってローソンのカード?
301デフォルトの名無しさん
2019/10/01(火) 17:46:09.39ID:yQHk6Pyq Windows の普通のソフトのインストーラは Program Files 以下に適当なフォルダを作ってそこにファイルをまとめて入れるけど、
コマンドラインアプリの場合ってどうしてる?
GUI アプリと同じようにフォルダに突っ込んで環境変数 PATH を設定するってのが標準的なやり方だと思うけど、
そういうのが増えてくると PATH が長大になって嫌な感じなので、なんかうまい方法ってないもんかな?
C/C++ とは直接の関係がなくてスマソ。 どのスレがベストかわからんかったもんで。
コマンドラインアプリの場合ってどうしてる?
GUI アプリと同じようにフォルダに突っ込んで環境変数 PATH を設定するってのが標準的なやり方だと思うけど、
そういうのが増えてくると PATH が長大になって嫌な感じなので、なんかうまい方法ってないもんかな?
C/C++ とは直接の関係がなくてスマソ。 どのスレがベストかわからんかったもんで。
302デフォルトの名無しさん
2019/10/01(火) 19:01:46.51ID:HsilaFth 環境変数なんて入れずに叩くときにフルパス入れりゃいいだけでは?
303デフォルトの名無しさん
2019/10/01(火) 19:48:41.05ID:yQHk6Pyq >>302
フルパスを前提にすると連携しづらい場合が出てくるんよ。
「このバッチファイルを実行するにはこのソフトとこのソフトを入れてね!」
みたいなことをやろうとすると、想定してたのと違うフォルダにインストールしてるだけで破綻してしまう。
32bit のアプリケーションって 32bit 版の Windows だと Program Files に入るけど
64bit 版の Windows だと Program Files (x86) 入るようにするのが基本的な作法じゃん?
それだけでも違ってしまうけど
システムドライブとは違うドライブにアプリケーションをインストールしたりする運用をやってる人は意外にいるので、
インストール先を選択させずに固定するってのも縛りが強いかなぁと思うし。
どこにインストールしてでも同じように使えるようにするには PATH くらいしか選択肢がなくなる。
でも嫌。 っていう話。
フルパスを前提にすると連携しづらい場合が出てくるんよ。
「このバッチファイルを実行するにはこのソフトとこのソフトを入れてね!」
みたいなことをやろうとすると、想定してたのと違うフォルダにインストールしてるだけで破綻してしまう。
32bit のアプリケーションって 32bit 版の Windows だと Program Files に入るけど
64bit 版の Windows だと Program Files (x86) 入るようにするのが基本的な作法じゃん?
それだけでも違ってしまうけど
システムドライブとは違うドライブにアプリケーションをインストールしたりする運用をやってる人は意外にいるので、
インストール先を選択させずに固定するってのも縛りが強いかなぁと思うし。
どこにインストールしてでも同じように使えるようにするには PATH くらいしか選択肢がなくなる。
でも嫌。 っていう話。
304デフォルトの名無しさん
2019/10/01(火) 20:00:47.20ID:gawiB1ps 20年以上前からある問題だな
Windowsではその辺は未だにグダグダだと認識している
Windowsではその辺は未だにグダグダだと認識している
305デフォルトの名無しさん
2019/10/01(火) 22:13:00.30ID:sghBprd5 >>303
設定でその外部アプリへのパス指定できるようにすれば?
インストール先固定、環境変数追加、レジストリ追加よりユーザーに指定させるほうが個人的には好き
というかこの三種のような方法をとるアプリはそもそもインストールを躊躇する
設定でその外部アプリへのパス指定できるようにすれば?
インストール先固定、環境変数追加、レジストリ追加よりユーザーに指定させるほうが個人的には好き
というかこの三種のような方法をとるアプリはそもそもインストールを躊躇する
306デフォルトの名無しさん
2019/10/01(火) 23:27:11.07ID:D6lr/hhZ コマンドラインアプリでコンソールから起動 バッチファイルから呼び出し etc
実行ファイルの検索順位に依存しまくるからにゃぁ
実行ファイルの検索順位に依存しまくるからにゃぁ
307デフォルトの名無しさん
2019/10/01(火) 23:54:08.52ID:yQHk6Pyq app paths をコマンドラインでも適用してくれよって思ってる。
309デフォルトの名無しさん
2019/10/02(水) 12:49:56.03ID:55+aQRnY > 32bit のアプリケーションって 32bit 版の Windows だと Program Files に入るけど
> 64bit 版の Windows だと Program Files (x86) 入るようにするのが基本的な作法じゃん?
> それだけでも違ってしまうけど
違わない
32bitアプリケーションからは
Program Filesしか見えない
実際はProgram Files (x86)をアクセスしてる訳だが
そんなことは32bitアプリケーション側は知らなくて良いし知らない方が良い
> 64bit 版の Windows だと Program Files (x86) 入るようにするのが基本的な作法じゃん?
> それだけでも違ってしまうけど
違わない
32bitアプリケーションからは
Program Filesしか見えない
実際はProgram Files (x86)をアクセスしてる訳だが
そんなことは32bitアプリケーション側は知らなくて良いし知らない方が良い
310デフォルトの名無しさん
2019/10/16(水) 18:22:59.77ID:imXCztCz class A{
public:
B b
}
class B{
…
}
の時、Aのコンストラクタなどで b = new B; とすると、
このbはAのクラス内で使えますが、Aのデストラクタが走る時に、
bも一緒に消えるのでしょうか。
それとも別途に delete b が必要なのでしょうか。
public:
B b
}
class B{
…
}
の時、Aのコンストラクタなどで b = new B; とすると、
このbはAのクラス内で使えますが、Aのデストラクタが走る時に、
bも一緒に消えるのでしょうか。
それとも別途に delete b が必要なのでしょうか。
311デフォルトの名無しさん
2019/10/16(水) 18:24:40.90ID:uv22jov9 Aのデストラクタにdelete bを書く
312デフォルトの名無しさん
2019/10/16(水) 18:27:03.37ID:imXCztCz 一緒に消えないのですか。どうもありがとうございました。
313はちみつ餃子 ◆8X2XSCHEME
2019/10/16(水) 18:36:34.82ID:d1R3XcHH >>310-312
A のコンストラクタ内で例外が送出されると delete b が実行されない可能性があるのでなるべくならスマートポインタを使うのが望ましいし楽。
A のコンストラクタ内で例外が送出されると delete b が実行されない可能性があるのでなるべくならスマートポインタを使うのが望ましいし楽。
314デフォルトの名無しさん
2019/10/16(水) 18:43:49.83ID:6mvmnwRf B b; と定義したなら、b = new B;が不要で、Aのデストラクタ実行時にbも一緒に消える。
B* b; と定義したなら >>311 だが、わざわざポインタで定義するのは
コピーコンストラクタ等々自前で定義しなきゃならんのでお勧めしない。
スマポならAのデストラクタ実行時にbも一緒に消えるけど、
shared_ptrはコピー時に共有されてしまうし、unique_ptrはコピーできなくなる。
B* b; と定義したなら >>311 だが、わざわざポインタで定義するのは
コピーコンストラクタ等々自前で定義しなきゃならんのでお勧めしない。
スマポならAのデストラクタ実行時にbも一緒に消えるけど、
shared_ptrはコピー時に共有されてしまうし、unique_ptrはコピーできなくなる。
315310
2019/10/16(水) 18:53:13.17ID:imXCztCz なるほど。B* bで書いたつもりが間違ってました。
しかしA内でbを使い回すなら、B b の方が良さそうですね。
どうもありがとうございました。
しかしA内でbを使い回すなら、B b の方が良さそうですね。
どうもありがとうございました。
316蟻人間 ◆T6xkBnTXz7B0
2019/10/22(火) 20:10:13.74ID:+0Lq2R8m C++相談室 part145
https://mevius.5ch.net/test/read.cgi/tech/1568362404/
から移住しました。
YappyCamという録画ソフトを作っています。
https://github.com/katahiromz/YappyCam
よろしくお願いします。
https://mevius.5ch.net/test/read.cgi/tech/1568362404/
から移住しました。
YappyCamという録画ソフトを作っています。
https://github.com/katahiromz/YappyCam
よろしくお願いします。
317デフォルトの名無しさん
2019/10/23(水) 00:02:04.30ID:FSIo0WLO 多分スレチな話題だけど
高速化目的で固定小数点数クラス作って満足してた所に、コンパイラの設定で浮動小数点モデルをfastにしたら何倍も速度差つけられたんだが
どういう原理でそうなるのかわからない 調べても中々資料出てこないし
誰か教えて下しい
高速化目的で固定小数点数クラス作って満足してた所に、コンパイラの設定で浮動小数点モデルをfastにしたら何倍も速度差つけられたんだが
どういう原理でそうなるのかわからない 調べても中々資料出てこないし
誰か教えて下しい
318はちみつ餃子 ◆8X2XSCHEME
2019/10/23(水) 01:44:13.82ID:GER+FSVM >>317
現代では浮動小数点はハードウェア (CPU) のサポートがあるので丸め方の一貫性とか捨ててめいっぱいに CPU の機能を利用したら速いよ。
現代では浮動小数点はハードウェア (CPU) のサポートがあるので丸め方の一貫性とか捨ててめいっぱいに CPU の機能を利用したら速いよ。
319蟻人間 ◆T6xkBnTXz7B0
2019/10/23(水) 02:19:12.55ID:DFr4VJRt 昔、インテルの一部のCPUにfloating pointの処理に不具合があって、それで高い精度が求められるプログラムでは、ソフトで対応できるようなコンパイラが作られたらしい(要出展?)。
320蟻人間 ◆T6xkBnTXz7B0
2019/10/23(水) 02:24:10.56ID:DFr4VJRt321デフォルトの名無しさん
2019/10/23(水) 07:13:23.64ID:chxy1JWV ARMのEABIとは逆方向の流れだな
322デフォルトの名無しさん
2019/10/23(水) 09:00:32.48ID:FSIo0WLO >>318-320
thx!
thx!
323蟻人間 ◆T6xkBnTXz7B0
2019/10/23(水) 12:36:36.18ID:bxABcYeD 記憶媒体の性能を計測してみた。
https://github.com/katahiromz/YappyCam/blob/master/tests/diskrate/diskrate.cpp
SSDでデータを取得。
https://twitter.com/katahiromz/status/1186558848393285633
HDDでデータ取得。
https://twitter.com/katahiromz/status/1186848186737905664
https://twitter.com/5chan_nel (5ch newer account)
https://github.com/katahiromz/YappyCam/blob/master/tests/diskrate/diskrate.cpp
SSDでデータを取得。
https://twitter.com/katahiromz/status/1186558848393285633
HDDでデータ取得。
https://twitter.com/katahiromz/status/1186848186737905664
https://twitter.com/5chan_nel (5ch newer account)
324蟻人間 ◆T6xkBnTXz7B0
2019/10/23(水) 13:01:09.43ID:bxABcYeD SSDは早い。400MB/sec近い。
HDDは遅い。100MB/secくらい。
音声に加えて画像も出力することを考慮すると、音声出力の実際の性能は50MB/sec以下だろう。
音声を最高の品質にすると、10msecごとに音声データがおよそ3900バイトあるようだ。1秒では390000バイト、390KB/secになる。余裕のよっちゃんだ。
HDDは遅い。100MB/secくらい。
音声に加えて画像も出力することを考慮すると、音声出力の実際の性能は50MB/sec以下だろう。
音声を最高の品質にすると、10msecごとに音声データがおよそ3900バイトあるようだ。1秒では390000バイト、390KB/secになる。余裕のよっちゃんだ。
325蟻人間 ◆T6xkBnTXz7B0
2019/10/23(水) 13:08:27.27ID:DFr4VJRt 記憶媒体やOSはときどきフリーズすることがある。0.5秒フリーズしても耐えられるようにするには、390KB*0.5==195KB。
少なくともこれだけのバッファが必要になる。余裕を持って事前にリングバッファ400KBを用意することにする。
少なくともこれだけのバッファが必要になる。余裕を持って事前にリングバッファ400KBを用意することにする。
326蟻人間 ◆T6xkBnTXz7B0
2019/10/23(水) 13:12:48.38ID:DFr4VJRt 一度にファイルに書き込むデータは100KBにする。このデータ量は小さすぎても性能が下がるし、大きすぎると流れが止まってしまう。
327蟻人間 ◆T6xkBnTXz7B0
2019/10/23(水) 13:25:45.62ID:bxABcYeD アプリ起動時に音声消費スレッドを起動する。イベントハンドルで音声データが車で待つ。イベントが来たら、音声データを少しずつファイルに吐き出して、消費する。全部消費したら再びイベントを待つ。これの繰り返し。
328蟻人間 ◆T6xkBnTXz7B0
2019/10/23(水) 13:37:23.16ID:bxABcYeD (間違いがあったら指摘してね、よろぴく)
329デフォルトの名無しさん
2019/10/23(水) 14:54:53.56ID:JzA6/vMp 引っ越したんなら質問も引っ越せよ
330デフォルトの名無しさん
2019/10/23(水) 15:27:52.17ID:dG0kuu8/ >>328
ここはお前のメモ帳ではなく掲示板だ
ここはお前のメモ帳ではなく掲示板だ
331蟻人間 ◆T6xkBnTXz7B0
2019/10/24(木) 20:49:36.30ID:hL+vNXS/ 長く録画してると、画像と音声のタイミングがずれる。
WM_TIMERのせいか?
WM_TIMERのせいか?
332蟻人間 ◆T6xkBnTXz7B0
2019/10/24(木) 21:21:54.34ID:ZzyW2UAB WM_TIMERの精度が低いから音ずれが起きている。
QPCと別スレッドで書き直し。
QPCと別スレッドで書き直し。
333蟻人間 ◆T6xkBnTXz7B0
2019/10/24(木) 22:15:20.99ID:hL+vNXS/ std::chrono使ってみるか。
334デフォルトの名無しさん
2019/10/24(木) 22:48:01.86ID:se7EzpzH 何のタイミングを作ろうとしてる?
リアルタイムに録画したデータをストレージに保存するんだよね?
リアルタイムに録画したデータをストレージに保存するんだよね?
335蟻人間 ◆T6xkBnTXz7B0
2019/10/24(木) 23:08:40.74ID:ZzyW2UAB スクリーンショットを定期的に撮るタイミングだよ。
336蟻人間 ◆T6xkBnTXz7B0
2019/10/24(木) 23:14:06.35ID:ZzyW2UAB どうもタイミングの累積誤差があって、ゲームのWinDepthで試すと動画では音が遅れるみたいなんだ。
337デフォルトの名無しさん
2019/10/24(木) 23:17:05.32ID:se7EzpzH 録画した後、それを再生するとずれていくといこと?
それとも狙った時間でスクショをキャプチャできないという意味?
それとも狙った時間でスクショをキャプチャできないという意味?
338デフォルトの名無しさん
2019/10/25(金) 09:14:50.02ID:cKRHja93 >>336
WindowsMediaPlayer起動しながらやってみたらどうなる?
WindowsMediaPlayer起動しながらやってみたらどうなる?
339蟻人間 ◆T6xkBnTXz7B0
2019/10/25(金) 13:15:44.76ID:OgTxIR48 Visual Studio 2017だと音ズレはなくなった。
MSYS2のデバッグバージョンでは少しずつ音がずれる。
WinDepth のSTAGE 2にいくと0.5秒ほどずれる。
MSYS2のデバッグバージョンでは少しずつ音がずれる。
WinDepth のSTAGE 2にいくと0.5秒ほどずれる。
340蟻人間 ◆T6xkBnTXz7B0
2019/10/25(金) 13:28:08.21ID:OgTxIR48 MSYS2のリリースバージョンでも音ズレなくなった。
ありがとうございます。
https://github.com/katahiromz/YappyCam/blob/master/YappyCam.cpp#L75
これがPictureConsumerThreadProc (映像消費スレッド)。
https://github.com/katahiromz/YappyCam/blob/master/YappyCam.cpp#L158
これがPictureProducerThreadProc (映像生成スレッド)。
次はパフォーマンスを出来る限り高めないといけない。
ありがとうございます。
https://github.com/katahiromz/YappyCam/blob/master/YappyCam.cpp#L75
これがPictureConsumerThreadProc (映像消費スレッド)。
https://github.com/katahiromz/YappyCam/blob/master/YappyCam.cpp#L158
これがPictureProducerThreadProc (映像生成スレッド)。
次はパフォーマンスを出来る限り高めないといけない。
341蟻人間 ◆T6xkBnTXz7B0
2019/10/25(金) 14:06:51.29ID:OgTxIR48 CreateThreadはCRTと一緒に使っちゃいけないらしいから、_beginthreadexで書き直しだ。
342蟻人間 ◆T6xkBnTXz7B0
2019/10/25(金) 16:19:18.72ID:OgTxIR48 https://twitter.com/katahiromz/status/1187629168042708992
画面切り替え(フルスクリーンゲーム)のときにSegmentation faultが発生する。。。
まずいぞまずいぞ。。。
https://twitter.com/5chan_nel (5ch newer account)
画面切り替え(フルスクリーンゲーム)のときにSegmentation faultが発生する。。。
まずいぞまずいぞ。。。
https://twitter.com/5chan_nel (5ch newer account)
343蟻人間 ◆T6xkBnTXz7B0
2019/10/25(金) 16:30:53.82ID:OgTxIR48 https://twitter.com/katahiromz/status/1187632297601716225
これ見て原因わかりますか?
https://twitter.com/5chan_nel (5ch newer account)
これ見て原因わかりますか?
https://twitter.com/5chan_nel (5ch newer account)
344蟻人間 ◆T6xkBnTXz7B0
2019/10/25(金) 17:01:41.65ID:OgTxIR48 PT_SCREENCAPにBITMAPチェックを入れたら直った。
画面にごみが残るのはどうにかならないかなあ?
画面にごみが残るのはどうにかならないかなあ?
345蟻人間 ◆T6xkBnTXz7B0
2019/10/25(金) 18:50:20.70ID:VkouAEbH フレーム落ちはしてないから、性能の問題ではない。たぶんフレームと音声のタイミングの違いだろう。音声の方が長い場合は音声を削ることも検討する。
346デフォルトの名無しさん
2019/10/25(金) 18:53:10.78ID:cKRHja93 >>338はどうなんよ?
347蟻人間 ◆T6xkBnTXz7B0
2019/10/25(金) 19:06:40.11ID:OgTxIR48348デフォルトの名無しさん
2019/10/25(金) 19:36:22.67ID:q8W1xqeq あらかじめMediaPlayerを起動しておくと
あら不思議なぜか動作が軽い
っていうのは昔から有名な検証方法の一つ
あら不思議なぜか動作が軽い
っていうのは昔から有名な検証方法の一つ
349デフォルトの名無しさん
2019/10/25(金) 20:00:49.22ID:VxINcxQ3 スレチのキチガイを飼い慣らすのは止めてください
350デフォルトの名無しさん
2019/10/25(金) 20:38:50.75ID:StYWqeWG どうせ過疎スレ
351デフォルトの名無しさん
2019/10/25(金) 22:23:03.54ID:MULKQLsl >>347
Windowsのタイマーはmsecのオーダーは出ない(Linuxもだ)
それしかビデオのタイミング作る手段がないならタイムスタンプ管理すべきだ
またPCではそもそもハードウェア的にビデオとオーディオは同期してる保証がない
その前提を踏まえてつくる必要がある
オーディオもビデオもキャプチャしたタイミングでタイムスタンプを取得して同様にファイルに保存する
再生するときにそのタイムスタンプを比較してビデオが±0.5フレームずれてきたら
フレームをスキップかリピートして調整する
オーディオを基準に考えるのがポイントだ
最後にWindows10では画面録画は標準機能だ
Windowsのタイマーはmsecのオーダーは出ない(Linuxもだ)
それしかビデオのタイミング作る手段がないならタイムスタンプ管理すべきだ
またPCではそもそもハードウェア的にビデオとオーディオは同期してる保証がない
その前提を踏まえてつくる必要がある
オーディオもビデオもキャプチャしたタイミングでタイムスタンプを取得して同様にファイルに保存する
再生するときにそのタイムスタンプを比較してビデオが±0.5フレームずれてきたら
フレームをスキップかリピートして調整する
オーディオを基準に考えるのがポイントだ
最後にWindows10では画面録画は標準機能だ
352デフォルトの名無しさん
2019/10/25(金) 22:35:35.48ID:cKRHja93 >>347
とりあえずやってみたらいいのに
とりあえずやってみたらいいのに
354デフォルトの名無しさん
2019/10/25(金) 22:56:14.57ID:APY4ctz9 timeBeginPeriod使えで済む話だろう
355蟻人間 ◆T6xkBnTXz7B0
2019/10/26(土) 11:07:21.59ID:Q5f3+aYX356蟻人間 ◆T6xkBnTXz7B0
2019/10/26(土) 14:53:06.64ID:Q5f3+aYX これで終わり、、、じゃないよ。
プラグインで時刻表示と猫耳ができるまで終わらないぞ。
プラグインで時刻表示と猫耳ができるまで終わらないぞ。
357デフォルトの名無しさん
2019/10/26(土) 15:23:17.18ID:a/Ne+y1n 蟻人間のらくがき帳になってしまった
358蟻人間 ◆T6xkBnTXz7B0
2019/10/26(土) 15:30:57.98ID:Q5f3+aYX プラグインを実装するには自作のPluginFrameworkを参考にする。
これもC++/Win32で書かれている。
PluginFramework
https://github.com/katahiromz/PluginFramework
拡張子は.yapでいいだろう。拡張子こそ違うが、プラグインファイルの中身はDLLファイルと同じ。LoadLibraryで読み込めるはずだ。
これもC++/Win32で書かれている。
PluginFramework
https://github.com/katahiromz/PluginFramework
拡張子は.yapでいいだろう。拡張子こそ違うが、プラグインファイルの中身はDLLファイルと同じ。LoadLibraryで読み込めるはずだ。
360デフォルトの名無しさん
2019/10/26(土) 22:31:16.45ID:Gui6HX0l クラスの中の処理を別のプロセスのプログラムに行わせたいんですけどどのような方法があるでしょうか
64bit環境のプログラムにインターフェースのみを提供するクラスがあって、中の処理を32bitのプログラムに行わせたいです
クラスは状態を保持する必要があるので呼び出す度にプログラムを実行することはできません
64bit環境のプログラムにインターフェースのみを提供するクラスがあって、中の処理を32bitのプログラムに行わせたいです
クラスは状態を保持する必要があるので呼び出す度にプログラムを実行することはできません
361デフォルトの名無しさん
2019/10/26(土) 22:31:33.65ID:Gui6HX0l windows環境です
362デフォルトの名無しさん
2019/10/26(土) 22:38:25.84ID:SyjizfQh まずお前が何を試してどうだったか書いて
364デフォルトの名無しさん
2019/10/26(土) 22:44:08.74ID:w/PE+z55 >>363
呼び出される側のプログラムはどのように待機するべきですか?
呼び出される側のプログラムはどのように待機するべきですか?
365デフォルトの名無しさん
2019/10/26(土) 23:34:00.80ID:fKw1xQJ9 dllインジェクションの話?
366蟻人間 ◆T6xkBnTXz7B0
2019/10/26(土) 23:43:30.80ID:0HLEEd3+ コマンドライン引数経由でファイルマッピングハンドルの値を受け取る、もしくはPostMessageでハンドルの値を受け取る。
クリップボードを使ってもいいし、ファイルを経由してもいい。
クリップボードを使ってもいいし、ファイルを経由してもいい。
367蟻人間 ◆T6xkBnTXz7B0
2019/10/26(土) 23:44:43.73ID:0HLEEd3+ WM_COPYDATAは生のデータを送信できる。
368デフォルトの名無しさん
2019/10/27(日) 17:20:04.24ID:IkTaChA0 自由に変更できるならsocket使ってTCP(UDP)portで待機
369デフォルトの名無しさん
2019/10/27(日) 17:20:36.84ID:IkTaChA0 ANTさんはNimやってない訳?
371蟻人間 ◆T6xkBnTXz7B0
2019/10/27(日) 19:33:52.69ID:irXhIBVc 最近はRustとElixirがブームらしいが、私は相変わらずC++。
372蟻人間 ◆T6xkBnTXz7B0
2019/10/27(日) 22:03:41.19ID:cNZwDfUU カメラアプリのプラグインを設計しないといけない。要件定義から。
OpenCVのcv::Matを受け取り、何らかの画像処理をする。今考えているのはフィルタープラグインと監視役プラグイン。
時刻表示フィルターと猫耳フィルターは必ず実装する。監視役は、何かが発生したら、管理者権限で保護されたコマンド列(Command*.bat)を実行する。
フィルターは処理の順序が大事だから、プラグインを順序付けしないといけない。
プラグインは自作のPluginFrameworkをチューニングして使用する。
OpenCVのcv::Matを受け取り、何らかの画像処理をする。今考えているのはフィルタープラグインと監視役プラグイン。
時刻表示フィルターと猫耳フィルターは必ず実装する。監視役は、何かが発生したら、管理者権限で保護されたコマンド列(Command*.bat)を実行する。
フィルターは処理の順序が大事だから、プラグインを順序付けしないといけない。
プラグインは自作のPluginFrameworkをチューニングして使用する。
373蟻人間 ◆T6xkBnTXz7B0
2019/10/27(日) 22:11:26.78ID:cNZwDfUU 読み込んだプラグインは有効か無効かを選べる。プラグインの順序も変えられる。そこでプラグインを管理するダイアログが必要だ。
そのダイアログはメインメニューからアクセスできる。ダイアログからプラグインの名前やバージョン情報にアクセスできるようにリストビューを使用する。
読み込んだ全てのプラグインが有効であるとは限らない。有効なプラグインは、プラグインを表す文字列のリストで記録する。高速にアクセスするためにさらにプラグインのインデックスのリストを使用する。
そのダイアログはメインメニューからアクセスできる。ダイアログからプラグインの名前やバージョン情報にアクセスできるようにリストビューを使用する。
読み込んだ全てのプラグインが有効であるとは限らない。有効なプラグインは、プラグインを表す文字列のリストで記録する。高速にアクセスするためにさらにプラグインのインデックスのリストを使用する。
374蟻人間 ◆T6xkBnTXz7B0
2019/10/27(日) 22:34:37.57ID:cNZwDfUU 順序の変更には上・下ボタンを使用する。
有効・無効の切り替えはリストビューのチェックボックスを使用する。
時刻表示にはcv::putTextを使用する。
拡張子は.yapで決まり。exeと同じ場所に置く。
有効・無効の切り替えはリストビューのチェックボックスを使用する。
時刻表示にはcv::putTextを使用する。
拡張子は.yapで決まり。exeと同じ場所に置く。
375蟻人間 ◆T6xkBnTXz7B0
2019/10/31(木) 20:42:35.84ID:ssZYzg5C YappyCamプラグイン実装。
https://github.com/katahiromz/YappyCam
https://github.com/katahiromz/YappyCamPlugins
https://twitter.com/katahiromz/status/1189869665251553280
何か追加してほしいプラグインがあったら教えてね。
https://twitter.com/5chan_nel (5ch newer account)
https://github.com/katahiromz/YappyCam
https://github.com/katahiromz/YappyCamPlugins
https://twitter.com/katahiromz/status/1189869665251553280
何か追加してほしいプラグインがあったら教えてね。
https://twitter.com/5chan_nel (5ch newer account)
376蟻人間 ◆T6xkBnTXz7B0
2019/11/03(日) 12:41:34.03ID:nr4jSbTs https://github.com/katahiromz/YappyCam/blob/master/PluginFramework.cpp#L25
ドライバ関数を通じてDLLからEXEの関数にアクセスできる。凄いだろ?
ドライバ関数を通じてDLLからEXEの関数にアクセスできる。凄いだろ?
377デフォルトの名無しさん
2019/11/11(月) 09:09:46.18ID:TRmuSqs3 完全初心者です
苦しんで覚えるC言語という初心者サイトを終わらせたら
次になにかおすすめサイトor本をやるべきなどありますか?
とりあえず義務教育に組み込まれるということで
何か作れるという体験をしてみたいのですが
苦しんで覚えるC言語という初心者サイトを終わらせたら
次になにかおすすめサイトor本をやるべきなどありますか?
とりあえず義務教育に組み込まれるということで
何か作れるという体験をしてみたいのですが
378デフォルトの名無しさん
2019/11/11(月) 09:12:12.48ID:lxCWwdCX 作れ
どの言語でもそれが最短かそれに近い高効率
どの言語でもそれが最短かそれに近い高効率
379デフォルトの名無しさん
2019/11/11(月) 12:29:24.77ID:bjD92kdR Rust, Elixir は、小さめのサイズの本が出たから、簡単に読める。
その代わり、情報は少ない
Rustプログラミング入門、酒井 和哉、2019/10/13
小さめのサイズの本で、初心者向け。
簡単すぎるから、たぶん、かなり情報が少なそうw
プログラミングElixir、2016
著者は「プログラミングRuby」のDave Thomas
Elixir = Ruby + Rails + Erlang VM
Elixir は関数型言語で、状態を持たず、並行処理が得意
Elixir で並列に動く、小プロセスはデータを共有しない。
10万の小プロセスを、0.6秒で起動できて、すべてのCPUコアを使いつくす
これで、スレッドと状態を持つ地獄から、おさらば!
その代わり、情報は少ない
Rustプログラミング入門、酒井 和哉、2019/10/13
小さめのサイズの本で、初心者向け。
簡単すぎるから、たぶん、かなり情報が少なそうw
プログラミングElixir、2016
著者は「プログラミングRuby」のDave Thomas
Elixir = Ruby + Rails + Erlang VM
Elixir は関数型言語で、状態を持たず、並行処理が得意
Elixir で並列に動く、小プロセスはデータを共有しない。
10万の小プロセスを、0.6秒で起動できて、すべてのCPUコアを使いつくす
これで、スレッドと状態を持つ地獄から、おさらば!
380デフォルトの名無しさん
2019/11/11(月) 12:32:20.68ID:2oMqNNOD >並行処理が得意
そんなもん今どきの言語なら皆そうなんだが?
いい加減スレ違いの書き込みはやめろ
ここはC/C++スレだ
そんなもん今どきの言語なら皆そうなんだが?
いい加減スレ違いの書き込みはやめろ
ここはC/C++スレだ
381デフォルトの名無しさん
2019/11/11(月) 13:44:52.51ID:dWj5v9Wo >>377
終わってから考えろ
終わってから考えろ
382デフォルトの名無しさん
2019/11/11(月) 16:13:50.62ID:JcIJLOOR 義務教育を受けてる若者なのか、教える立場の教師なのか、
はたまた我が子の勉強を心配する教育ママか。
とりあえず義務教育でCは使わないと思うよ。
しかし、このスレッドも意外に見てる人がいるのね。
はたまた我が子の勉強を心配する教育ママか。
とりあえず義務教育でCは使わないと思うよ。
しかし、このスレッドも意外に見てる人がいるのね。
383デフォルトの名無しさん
2019/11/11(月) 16:30:36.69ID:nmrg3hQp 義務教育課程のプログラミング教育はフローチャート書いて終わりだよ
384デフォルトの名無しさん
2019/11/11(月) 17:08:28.39ID:rlOgmRK8 それでいいよ
問題を分解して論理立てて解決する力
が必要なのであって構文とかどうでもいい
だから擬似言語でも良いし図だけでもいい
問題を分解して論理立てて解決する力
が必要なのであって構文とかどうでもいい
だから擬似言語でも良いし図だけでもいい
385デフォルトの名無しさん
2019/11/11(月) 17:12:08.97ID:dWj5v9Wo パヨチン教師に論理的思考ωを教えさせるのは無理やろ
>>385
kwsk
kwsk
387デフォルトの名無しさん
2019/11/11(月) 21:28:40.68ID:+nZ+GxSE >>377
完全初心者で作ってみるのがまず目標ならscratch辺りが無難じゃないかな?取っつきやすくプログラミングの基本に触れられると思うよ。
初心者がCから始めても作る喜びを見つける前に細かなところで躓きを繰り返して挫折する率が高いと思う。
入門書一冊読んだ時点でその知識を組み合わせてなんか試してみようと自発的に思い付くとか、文字だけの画面で入力した数字を並び替えただけで喜びを感じられるとかなら、向いているとは思うけど。
完全初心者で作ってみるのがまず目標ならscratch辺りが無難じゃないかな?取っつきやすくプログラミングの基本に触れられると思うよ。
初心者がCから始めても作る喜びを見つける前に細かなところで躓きを繰り返して挫折する率が高いと思う。
入門書一冊読んだ時点でその知識を組み合わせてなんか試してみようと自発的に思い付くとか、文字だけの画面で入力した数字を並び替えただけで喜びを感じられるとかなら、向いているとは思うけど。
388デフォルトの名無しさん
2019/11/12(火) 09:36:03.48ID:uG6HIbdY >知識を組み合わせてなんか試してみようと自発的に思い付く
コピペしか出来ないkidsには無理
コピペしか出来ないkidsには無理
389デフォルトの名無しさん
2019/11/12(火) 10:16:48.75ID:L22oXPxY 初心者にマウント取るの楽しいー!
390デフォルトの名無しさん
2019/11/12(火) 11:56:52.41ID:tiISvNIN 初心者にマウントとるしか出来ない無自覚kidsには無理
391デフォルトの名無しさん
2019/11/13(水) 01:32:22.16ID:hjs0qnAg >>389,390
救いようのないバカ
救いようのないバカ
392デフォルトの名無しさん
2019/11/13(水) 08:59:42.98ID:G4amaIT4 >>391
救いたくもならないバカ
救いたくもならないバカ
393デフォルトの名無しさん
2019/11/13(水) 10:20:21.80ID:OceCV+VL 馬鹿には無理
394はちみつ餃子 ◆8X2XSCHEME
2019/11/13(水) 15:20:35.33ID:B91T1gla 本格的にやる気はないやつにも最低限の知恵を与える (義務教育) ってのと
学ぶ意欲があって学ぶってのは別物だよ。
学ぶ意欲があって学ぶってのは別物だよ。
395デフォルトの名無しさん
2019/12/20(金) 17:01:42.60ID:mI5I/WU7 これからc++に手を出そうという人間に、江添氏の入門サイトもしくはその書籍化本は向いてますか?
いきなりヘッダファイルまとめて、コンパイルオプションに設定してて、たしかに記述減るけどありなのかがよくわかりません
いきなりヘッダファイルまとめて、コンパイルオプションに設定してて、たしかに記述減るけどありなのかがよくわかりません
396デフォルトの名無しさん
2019/12/20(金) 17:32:42.71ID:VlcbOuJw397デフォルトの名無しさん
2019/12/20(金) 17:42:09.99ID:mI5I/WU7398デフォルトの名無しさん
2019/12/20(金) 17:47:54.25ID:VlcbOuJw Java で import *;
399はちみつ餃子 ◆8X2XSCHEME
2019/12/20(金) 18:50:13.84ID:smtL92ik >>395
意味がわかってるならやりたいようにやっていいよ。
「プラグラマがやりたいことをさまたげない」という意味のことは D&E に書いてある。
言語仕様としてはさまたげないという意味なのでやった結果がクソになっても自己責任だけど。
そのあたりは言語仕様がどうこうよりも設計の話になるんじゃないかなぁ。
まあまずは言語を理解しないことにはどうにもならんので、
いい感じの作法は後回しでもいいでしょ。
(そういってずっと後回しにし続けるのはよくある話なのでちゃんと計画を立てて学習しような!)
意味がわかってるならやりたいようにやっていいよ。
「プラグラマがやりたいことをさまたげない」という意味のことは D&E に書いてある。
言語仕様としてはさまたげないという意味なのでやった結果がクソになっても自己責任だけど。
そのあたりは言語仕様がどうこうよりも設計の話になるんじゃないかなぁ。
まあまずは言語を理解しないことにはどうにもならんので、
いい感じの作法は後回しでもいいでしょ。
(そういってずっと後回しにし続けるのはよくある話なのでちゃんと計画を立てて学習しような!)
400デフォルトの名無しさん
2019/12/20(金) 20:36:03.32ID:PIQAyvT8 はちみつが江添を腐すのは意外だな
401はちみつ餃子 ◆8X2XSCHEME
2019/12/21(土) 01:13:26.24ID:hBrPM7yJ402デフォルトの名無しさん
2019/12/21(土) 21:42:45.92ID:r9u4FEpO >>401
正にその入門の本探しで迷宮入りしてるところに、江添氏の本を見たので、そういうのもありなのかと思っての質問でした
作法にこだわって肝心な部分を落としてたら意味がない(作法を無視して良いというわけではなく)のは確かなので、本読み手を動かしていきます
アドバイスありがとうございます
正にその入門の本探しで迷宮入りしてるところに、江添氏の本を見たので、そういうのもありなのかと思っての質問でした
作法にこだわって肝心な部分を落としてたら意味がない(作法を無視して良いというわけではなく)のは確かなので、本読み手を動かしていきます
アドバイスありがとうございます
403デフォルトの名無しさん
2019/12/21(土) 21:53:38.39ID:Pmk2U2LB 別にそこまで言語文法と作法がバッティングするわけでもないし、両方やったらいいとしか言いようがない。
何を心配してるんだか。
何を心配してるんだか。
404デフォルトの名無しさん
2019/12/21(土) 22:06:25.82ID:/C2Zxfa9 カネの心配だろ
どの本がいいか=どれを買えばいいか だ
どの本がいいか=どれを買えばいいか だ
405はちみつ餃子 ◆8X2XSCHEME
2019/12/22(日) 16:56:47.47ID:0CTeJT4Z だいたいの作法にはそれなりの理由があるけど、
言語を理解せずに作法を学んでもただそうするということだけが頭に残って教条的になりやすい気がするんだよね。
完璧に言語を理解する必要はないけどほどほどには理解してから作法に入った方が良くない?
言語を理解せずに作法を学んでもただそうするということだけが頭に残って教条的になりやすい気がするんだよね。
完璧に言語を理解する必要はないけどほどほどには理解してから作法に入った方が良くない?
406デフォルトの名無しさん
2019/12/22(日) 17:17:17.16ID:x1zpVDy3 質問者は江添の示す作法に疑問を持ってんだからその理屈はおかしい
407デフォルトの名無しさん
2019/12/22(日) 17:30:35.07ID:WxFIsXHD とりあえずこうする!じゃなくて
自分が納得して辿りついた方法はこれ
の方がいいよね
自分が納得して辿りついた方法はこれ
の方がいいよね
408はちみつ餃子 ◆8X2XSCHEME
2019/12/22(日) 18:00:49.87ID:0CTeJT4Z >>406
あ〜〜そゆことか。 江添本でやってるわけね。
https://ezoeryou.github.io/cpp-intro/#%E3%83%98%E3%83%83%E3%83%80%E3%83%BC%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E7%9C%81%E7%95%A5
その前提をわかってなかった。 すまぬ。
わかってる人からするとこれは説明の便宜のためであって作法を示すものではないことがわかるけど、
入門書の冒頭でやっちゃうのは思い切りが良すぎるな。
あ〜〜そゆことか。 江添本でやってるわけね。
https://ezoeryou.github.io/cpp-intro/#%E3%83%98%E3%83%83%E3%83%80%E3%83%BC%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E7%9C%81%E7%95%A5
その前提をわかってなかった。 すまぬ。
わかってる人からするとこれは説明の便宜のためであって作法を示すものではないことがわかるけど、
入門書の冒頭でやっちゃうのは思い切りが良すぎるな。
409デフォルトの名無しさん
2019/12/23(月) 12:35:08.34ID:sEnpgkKc 禿添を擁護する気は無いが
そもそも他の入門書だって
#include はおまじないとか言って
お茶を濁してるレベルなのを考えれば
(見た目のインパクトは知ってる人が見てそう思うだけで)
初心者には大した違いは無い
そもそも他の入門書だって
#include はおまじないとか言って
お茶を濁してるレベルなのを考えれば
(見た目のインパクトは知ってる人が見てそう思うだけで)
初心者には大した違いは無い
410デフォルトの名無しさん
2019/12/23(月) 17:22:38.49ID:cv9cp49U 思い切りがいいのはgotoの説明があるところダゾ
411デフォルトの名無しさん
2019/12/23(月) 17:31:52.28ID:7PnpYzan goto否定は時代遅れ
412デフォルトの名無しさん
2019/12/23(月) 17:56:04.90ID:yUC4LEa+ 肯定するもんではない
413デフォルトの名無しさん
2019/12/23(月) 18:23:13.68ID:FZMFlrDL gotoの是非ではなくスパゲッティコードの是非
414デフォルトの名無しさん
2019/12/23(月) 20:32:41.60ID:JFzkr+Zj gotoアレルギーは悪
多様も悪
多様も悪
415デフォルトの名無しさん
2019/12/23(月) 20:38:42.86ID:Dm8g2GT6 gotoが悪とか言ってるやつの脳は
武器があるから戦争がおこるんだ!
っていうパヨク脳と同じ構造
武器があるから戦争がおこるんだ!
っていうパヨク脳と同じ構造
416デフォルトの名無しさん
2019/12/23(月) 21:29:45.76ID:kZpvALBe >>413
スパゲッティは困るのが本人限定でない限りは非でいいだろう。問題はgotoのどんな使い方までがスパゲッティにならないかだけど合意を得られる共通認識はないから、組織のルールに合わせるくらいしかないかも。
スパゲッティは困るのが本人限定でない限りは非でいいだろう。問題はgotoのどんな使い方までがスパゲッティにならないかだけど合意を得られる共通認識はないから、組織のルールに合わせるくらいしかないかも。
417デフォルトの名無しさん
2019/12/23(月) 23:14:04.93ID:VCFgqBQo 深いところからの抜け出しはわかる
飛び込みは……ヤバイ
飛び込みは……ヤバイ
418デフォルトの名無しさん
2019/12/23(月) 23:42:38.10ID:qDrReXNq プロは使うぞ goto
419デフォルトの名無しさん
2019/12/24(火) 01:18:53.63ID:qpZ25SUC switchとgoto組み合わせてステートマシン作るのよくやってる。
420デフォルトの名無しさん
2019/12/24(火) 03:33:33.92ID:4c9jV6+e 何重にもネストしたforの真っ只中にぶっこんでくgotoとかじゃない限り
そこまで可読性が悪くなるってことはないかな。
そこまで可読性が悪くなるってことはないかな。
421デフォルトの名無しさん
2019/12/24(火) 06:58:18.67ID:cUFUrp77 gotoネタまだやってんのか
初心者に使い方を教えれば終わりだよ
初心者に使い方を教えれば終わりだよ
所詮 goto は関数内でジャンプするだけだから、たいしたスパゲッティにはならないのでは?
むしろ setjmp()/longjmp() 大好き人間のほうが怖い…
むしろ setjmp()/longjmp() 大好き人間のほうが怖い…
424デフォルトの名無しさん
2019/12/24(火) 18:39:15.66ID:IBUEMR4t setjmp/longjmpって具体的に使われてるプロジェクト今ある?
426デフォルトの名無しさん
2019/12/25(水) 16:23:59.62ID:Jr8g24A7 bool readShaderSource(const char *name,std::vector<GLchar> &buffer){
//ファイルなし
if(name == NULL) return false;
//ソースファイルを開く
std::ifstream file(name,std::ios::binary);
if(file.fail()){
//開けなかった場合
std::cerr << "Error: Can't open source file: " << name << std::endl;
return false;
}
// 以下読み込み部分の為省略
}
Macでこんな感じのコードを書いてるのですが、実行ファイルをターミナルから
相対パスで実行すると成功し、Finderからダブルクリックすると別ウィンドウのターミナルが出て
Last login: ~~
$[実行ファイルの絶対パス] ; exit;
"Can't open Source File [ファイル名]"と出てしまいます。
絶対パスと相対パスでファイル読み込みの挙動が変わるのでしょうか?
調べてもそれっぽい情報が出てこず……もし思い当たる方がいたらお願いします。
ちなみに読み込みファイルはOpenGLのShaderです。
//ファイルなし
if(name == NULL) return false;
//ソースファイルを開く
std::ifstream file(name,std::ios::binary);
if(file.fail()){
//開けなかった場合
std::cerr << "Error: Can't open source file: " << name << std::endl;
return false;
}
// 以下読み込み部分の為省略
}
Macでこんな感じのコードを書いてるのですが、実行ファイルをターミナルから
相対パスで実行すると成功し、Finderからダブルクリックすると別ウィンドウのターミナルが出て
Last login: ~~
$[実行ファイルの絶対パス] ; exit;
"Can't open Source File [ファイル名]"と出てしまいます。
絶対パスと相対パスでファイル読み込みの挙動が変わるのでしょうか?
調べてもそれっぽい情報が出てこず……もし思い当たる方がいたらお願いします。
ちなみに読み込みファイルはOpenGLのShaderです。
427デフォルトの名無しさん
2019/12/25(水) 16:34:37.25ID:TfD43SqC カレントディレクトリでググって。
428デフォルトの名無しさん
2019/12/25(水) 16:34:37.50ID:ZI663GBY まず、端末とFinder は、異なる!
Windows のExplorer で言えば、拡張子に対して、開くアプリが関連付けられている。
漏れの場合、.txt なら、TeraPad で開く
関連付けられていないと、どのアプリで開きますか? と聞いてくる
Windows のExplorer で言えば、拡張子に対して、開くアプリが関連付けられている。
漏れの場合、.txt なら、TeraPad で開く
関連付けられていないと、どのアプリで開きますか? と聞いてくる
429デフォルトの名無しさん
2019/12/25(水) 20:11:17.23ID:Jr8g24A7 >>427
すみません、言われたことをよく考えたら重要な説明抜けてました
mainの中で先ほどの関数が使われるのは、
const GLuint program(loadProgram("point.vert","point.frag"));
という部分であり、ここで読み込まれている
GLuint loadProgram(const char *vert,const char *frag))
の内部に先ほどのコードがあります。
上の"point.vert"と"point.frag"を"./point.vert"、"./point.frag"に変えたりしましたがダメでした。
/User/~~~ による絶対指定なら動いたのですが、それだと別ファイルに移動した時使えなくなるので
ファイルの階層などを変えても動くようにしたいです。
>>428
とりあえずfileコマンドの結果は
Cのソースファイル(main.cpp): c program text, UTF-8 Unicode text
同ファイル内から読み込んでいるヘッダ(Matrix.hなど): C++ source text, UTF-8 Unicode text
読み込んでいるシェーダーファイル(上記の返答レスの二つ): c program text, ASCII text
実行ファイル: Mach-O 64-bit executable x86_64
dSYMファイル(実行と同時に生成された): directory(IOSの情報ファイル)
という感じです。
実行ファイルなので開くアプリはデフォでterminal、他はバイナリエディタで開けます。
すみません、言われたことをよく考えたら重要な説明抜けてました
mainの中で先ほどの関数が使われるのは、
const GLuint program(loadProgram("point.vert","point.frag"));
という部分であり、ここで読み込まれている
GLuint loadProgram(const char *vert,const char *frag))
の内部に先ほどのコードがあります。
上の"point.vert"と"point.frag"を"./point.vert"、"./point.frag"に変えたりしましたがダメでした。
/User/~~~ による絶対指定なら動いたのですが、それだと別ファイルに移動した時使えなくなるので
ファイルの階層などを変えても動くようにしたいです。
>>428
とりあえずfileコマンドの結果は
Cのソースファイル(main.cpp): c program text, UTF-8 Unicode text
同ファイル内から読み込んでいるヘッダ(Matrix.hなど): C++ source text, UTF-8 Unicode text
読み込んでいるシェーダーファイル(上記の返答レスの二つ): c program text, ASCII text
実行ファイル: Mach-O 64-bit executable x86_64
dSYMファイル(実行と同時に生成された): directory(IOSの情報ファイル)
という感じです。
実行ファイルなので開くアプリはデフォでterminal、他はバイナリエディタで開けます。
430デフォルトの名無しさん
2019/12/25(水) 20:28:55.00ID:KX6i+Zbe >>429
カレントディレクトリの概念は分かったの?
プログラムを何らかの方法で起動したときに、そのプログラムはどこかのディレクトリを「現在位置」として処理を行う。
だからプログラム中でファイルを指定するときに絶対パスではない書き方、つまり相対パス(point.vertや./point.vertという書き方)で指定すると、それは現在位置から見てその名前の場所にあるファイルを指す。
macの環境は詳しくないけど、terminalから実行したならカレントディレクトリはterminal上のカレントディレクトリだろうし、finderから実行したらプログラムの実行ファイルがある場所だろう。
そこと、開きたいファイルの位置関係を確認して、適切な相対パスを指定してみて。
カレントディレクトリの概念は分かったの?
プログラムを何らかの方法で起動したときに、そのプログラムはどこかのディレクトリを「現在位置」として処理を行う。
だからプログラム中でファイルを指定するときに絶対パスではない書き方、つまり相対パス(point.vertや./point.vertという書き方)で指定すると、それは現在位置から見てその名前の場所にあるファイルを指す。
macの環境は詳しくないけど、terminalから実行したならカレントディレクトリはterminal上のカレントディレクトリだろうし、finderから実行したらプログラムの実行ファイルがある場所だろう。
そこと、開きたいファイルの位置関係を確認して、適切な相対パスを指定してみて。
431デフォルトの名無しさん
2019/12/25(水) 20:45:23.56ID:ZI663GBY >>429
loadProgram と言う名前から想像すると、
特定のディレクトリだけから、ファイルを探すとか?
カレントディレクトリ内からは、探さないとか?
絶対パスなら読めるのなら、絶対パスへ変換すれば?
例えば、ruby -e 'puts $:'
と、Ruby でライブラリの探索パス・ロードパスを表示すると、
その中に、カレントディレクトリは入っていない
他には、エラーの前後で、カレントディレクトリがどこにあるか、確認すれば?
loadProgram と言う名前から想像すると、
特定のディレクトリだけから、ファイルを探すとか?
カレントディレクトリ内からは、探さないとか?
絶対パスなら読めるのなら、絶対パスへ変換すれば?
例えば、ruby -e 'puts $:'
と、Ruby でライブラリの探索パス・ロードパスを表示すると、
その中に、カレントディレクトリは入っていない
他には、エラーの前後で、カレントディレクトリがどこにあるか、確認すれば?
432デフォルトの名無しさん
2019/12/25(水) 20:48:27.13ID:88EUoeVm まず相対パスを絶対パスに変換してどうなるか確認したらいいんでないの
433デフォルトの名無しさん
2019/12/25(水) 21:06:23.06ID:KX6i+Zbe434デフォルトの名無しさん
2019/12/25(水) 21:07:02.85ID:KX6i+Zbe 上のレスは>>431宛だった
435デフォルトの名無しさん
2019/12/25(水) 22:03:46.49ID:R9J1PIns iOSのシミュレータで実行するアプリ??(IOSとか書いてるから
それだったらfstreamには絶対パスを渡すしかなかったはず
あんま自信ないので違ってたらすまん
それだったらfstreamには絶対パスを渡すしかなかったはず
あんま自信ないので違ってたらすまん
436デフォルトの名無しさん
2019/12/25(水) 22:09:17.12ID:ulJiubw3 ほんとruby君はどこのスレでも邪魔しかしないね
437デフォルトの名無しさん
2019/12/25(水) 22:18:35.22ID:ZI663GBY Ruby なら簡単!
これだけでカレントディレクトリが分かるw
p Dir.pwd
これだけでカレントディレクトリが分かるw
p Dir.pwd
438デフォルトの名無しさん
2019/12/25(水) 23:47:22.85ID:Jr8g24A7 >>430
カレントディレクトリは多分terminal上での起動でもfinderでも同じです。
426が分かりづらい文章で申し訳ないのですが、なぜかクリックした時
新規にterminalのウィンドウが出て実行ファイルまでの絶対パスまで出てきたので。
terminal上での起動方法はカレントディレクトリに移動してからの"$ ./実行ファイル"です
>>432
一応./とか../とか新規ディレクトリ作ってその中にぶち込むとかはやったんですが、それでも
結果は変わりませんでした。改めて自分で見ても分かりづらいのですが、429の9行目の/User/~~
というのが読み込み部分を絶対パスにしたやつで、その場合はFinderからでも読み込めました。
>>435
OpenGLで簡単な描画をするやつです。
ビルドが
c++ main.cpp -g -Wall -std=c++11 -I/usr/local/include -L/usr/local/lib -lglfw3 \
-lGLEW -framework OpenGL -framework CoreVideo -framework IOKit -framework Cocoa
とかそんな感じでIOKitが入ってるので多分そうかもしれません、入門書
(ttp://marina.sys.wakayama-u.ac.jp/~tokoi/GLFWdraft.pdf)のコピペです。
もしかしてMacでOpenGLを動かす場合って全てiOS対応しなきゃいけないんでしょうか…?
後遅いかもしれませんが長文&多レスと先ほどのお礼を言い忘れててすみません。
非常に稚拙な文章ですが、質問に答えてくださってありがとうございます。
カレントディレクトリは多分terminal上での起動でもfinderでも同じです。
426が分かりづらい文章で申し訳ないのですが、なぜかクリックした時
新規にterminalのウィンドウが出て実行ファイルまでの絶対パスまで出てきたので。
terminal上での起動方法はカレントディレクトリに移動してからの"$ ./実行ファイル"です
>>432
一応./とか../とか新規ディレクトリ作ってその中にぶち込むとかはやったんですが、それでも
結果は変わりませんでした。改めて自分で見ても分かりづらいのですが、429の9行目の/User/~~
というのが読み込み部分を絶対パスにしたやつで、その場合はFinderからでも読み込めました。
>>435
OpenGLで簡単な描画をするやつです。
ビルドが
c++ main.cpp -g -Wall -std=c++11 -I/usr/local/include -L/usr/local/lib -lglfw3 \
-lGLEW -framework OpenGL -framework CoreVideo -framework IOKit -framework Cocoa
とかそんな感じでIOKitが入ってるので多分そうかもしれません、入門書
(ttp://marina.sys.wakayama-u.ac.jp/~tokoi/GLFWdraft.pdf)のコピペです。
もしかしてMacでOpenGLを動かす場合って全てiOS対応しなきゃいけないんでしょうか…?
後遅いかもしれませんが長文&多レスと先ほどのお礼を言い忘れててすみません。
非常に稚拙な文章ですが、質問に答えてくださってありがとうございます。
439デフォルトの名無しさん
2019/12/26(木) 00:25:36.72ID:qMazsM0J すまんそれならiOS関係無いな
カレントディレクトリがどうなってるか、MacOSのAPIで取って
それを表示してみてターミナルとFinderでどう違うか確認した方がいいかと
カレントディレクトリがどうなってるか、MacOSのAPIで取って
それを表示してみてターミナルとFinderでどう違うか確認した方がいいかと
440デフォルトの名無しさん
2019/12/26(木) 00:44:53.30ID:mIZi4PgB MacってBSDらしいじゃん
多分じゃなくて、getcwd()すればいいんじゃ
>カレントディレクトリに移動して
どこにいても、今いるところがcurrentなのだが
多分じゃなくて、getcwd()すればいいんじゃ
>カレントディレクトリに移動して
どこにいても、今いるところがcurrentなのだが
441デフォルトの名無しさん
2019/12/26(木) 00:51:48.47ID:aYxazJyl ファイル読み込みをそのまま生成に変更してみ
カレントディレクトリちゃんと考慮してないよ相対パスと絶対パスでファイル生成される場所かわるよ
カレントディレクトリちゃんと考慮してないよ相対パスと絶対パスでファイル生成される場所かわるよ
442デフォルトの名無しさん
2019/12/26(木) 01:09:15.00ID:uS8pvwi2 >>438
Finder上でダブルクリックで起動する場合はカレントディレクトリはホームディレクトリだったように思うよ。
ダブルクリックで起動したいなら、
#!/bin/sh
cd "$(dirname "$0")"
./program
と書いたprogram.commandをprogramと同じ場所に作ってchmod +xし、それから起動するとよい。
program.commandのあるディレクトリに移動してからプログラムを移動するシェルスクリプトだから、確実に
カレントディレクトリをprogramのあるディレクトリに変更できる。
Finder上でダブルクリックで起動する場合はカレントディレクトリはホームディレクトリだったように思うよ。
ダブルクリックで起動したいなら、
#!/bin/sh
cd "$(dirname "$0")"
./program
と書いたprogram.commandをprogramと同じ場所に作ってchmod +xし、それから起動するとよい。
program.commandのあるディレクトリに移動してからプログラムを移動するシェルスクリプトだから、確実に
カレントディレクトリをprogramのあるディレクトリに変更できる。
443デフォルトの名無しさん
2019/12/26(木) 01:14:40.83ID:T0QuicHn Ruby なら、File.expand_path で、相対パスを絶対パスへ変換できる
相対パスでエラーになるなら、それを絶対パスへ変換すれば?
相対パスでエラーになるなら、それを絶対パスへ変換すれば?
444デフォルトの名無しさん
2019/12/26(木) 01:17:24.37ID:91oPsedU Ruby ならって情報意味ないから消えて
445デフォルトの名無しさん
2019/12/26(木) 01:18:31.55ID:hx3t0oVF >>439 >>440
とりあえず実行ファイルの入ってるディレクトリ名はsampleで、
カレントディレクトリに移動して~というのはterminalでそこまで移動した
という意味です、念の為付け加えたのですが説明がヘタクソ故分かりづらくてすみません。
そして言われた通り
getcwd(pathname, PATHNAME_SIZE);
fprintf(stdout,"現在のファイルパス:%s\n", pathname);
をmainの最初にぶち込んだところ。
ターミナルでの実行では
現在のファイルパス: /Users/username/program/GLFW_tutorial/sample/sample
finderでの実行では
finderからsample内の実行ファイルをダブルクリックするとterminalのウィンドウが出て
Last login: [前回のログイン情報]
username:~ usename$ /Users/username/中略/実行ファイル ; exit;
現在のファイルパス:/Users/username
Error: Can't open source file: point.vert
Error: Can't open source file: point.frag
とterminal上に表示されました。
finderの最初の方で実行ファイルまでの絶対パスが出てたので、多分同じところ開いてると
思い込んでましたがなぜか /User/username になってたみたいです
素人の先入観で余計な一手間を掛けさせてしまって申し訳ありません orz
とりあえず実行ファイルの入ってるディレクトリ名はsampleで、
カレントディレクトリに移動して~というのはterminalでそこまで移動した
という意味です、念の為付け加えたのですが説明がヘタクソ故分かりづらくてすみません。
そして言われた通り
getcwd(pathname, PATHNAME_SIZE);
fprintf(stdout,"現在のファイルパス:%s\n", pathname);
をmainの最初にぶち込んだところ。
ターミナルでの実行では
現在のファイルパス: /Users/username/program/GLFW_tutorial/sample/sample
finderでの実行では
finderからsample内の実行ファイルをダブルクリックするとterminalのウィンドウが出て
Last login: [前回のログイン情報]
username:~ usename$ /Users/username/中略/実行ファイル ; exit;
現在のファイルパス:/Users/username
Error: Can't open source file: point.vert
Error: Can't open source file: point.frag
とterminal上に表示されました。
finderの最初の方で実行ファイルまでの絶対パスが出てたので、多分同じところ開いてると
思い込んでましたがなぜか /User/username になってたみたいです
素人の先入観で余計な一手間を掛けさせてしまって申し訳ありません orz
446デフォルトの名無しさん
2019/12/26(木) 04:42:31.39ID:T0QuicHn Ruby なら、あちこちに、p Dir.pwd
って書けば、その時点のカレントディレクトリがどこか、すぐわかる
それに、File.expand_path で、相対パスを絶対パスへ変換できるし
何でも、p を付けるだけで、分かるから!
エラーを解決する速さが、桁違い!
C/C++ とかは、ポインターもあるし、1週間ぐらい解決できないのも、ザラ。
効率が悪い
って書けば、その時点のカレントディレクトリがどこか、すぐわかる
それに、File.expand_path で、相対パスを絶対パスへ変換できるし
何でも、p を付けるだけで、分かるから!
エラーを解決する速さが、桁違い!
C/C++ とかは、ポインターもあるし、1週間ぐらい解決できないのも、ザラ。
効率が悪い
447デフォルトの名無しさん
2019/12/26(木) 04:48:44.82ID:91oPsedU 消えろ
448430
2019/12/26(木) 06:51:13.58ID:CYmUjjjA449デフォルトの名無しさん
2019/12/26(木) 09:04:48.57ID:cN+Hl7PN450デフォルトの名無しさん
2019/12/26(木) 11:32:31.02ID:qmNoWNu8 CどころかOSすらまともに使えないような香具師は
まずpythonで練習汁
話はそれからだ
まずpythonで練習汁
話はそれからだ
451426
2019/12/26(木) 11:47:02.89ID:hx3t0oVF >>442,448,449
(安価打ちすぎると書き込めないらしいのでひとまとめになります)
ありがとうございました、書き忘れてましたが無事解決しました!
とりあえず442さんのやり方と449さんのやり方両方で成功しました、
430さんのレスがきっかけでカレントディレクトリについて考えることになったのでありがとうございます!
長文&稚拙な説明で長い間付き合わせてしまいましたが、
懇切丁寧に解説してくださった皆様方にはただただ感謝の極みですm(_ _)m
(安価打ちすぎると書き込めないらしいのでひとまとめになります)
ありがとうございました、書き忘れてましたが無事解決しました!
とりあえず442さんのやり方と449さんのやり方両方で成功しました、
430さんのレスがきっかけでカレントディレクトリについて考えることになったのでありがとうございます!
長文&稚拙な説明で長い間付き合わせてしまいましたが、
懇切丁寧に解説してくださった皆様方にはただただ感謝の極みですm(_ _)m
452デフォルトの名無しさん
2019/12/26(木) 12:51:22.31ID:DjlxxgLR c++20対応してる処理系てどれ?
453デフォルトの名無しさん
2019/12/26(木) 14:08:21.39ID:AOHRGRKj clが全く対応してないのは知ってる。
454デフォルトの名無しさん
2019/12/26(木) 15:03:20.65ID:91oPsedU VCは一部対応してる
455デフォルトの名無しさん
2019/12/27(金) 11:59:00.73ID:mPCTTnxc どっちやねん
456デフォルトの名無しさん
2019/12/27(金) 14:20:44.04ID:rOhR0D35457デフォルトの名無しさん
2019/12/27(金) 14:23:56.07ID:eT+8Od/E コンセプト使おうと思ってgccビルドしたけど、ビルド成功に満足して結局何もしてない
458デフォルトの名無しさん
2019/12/27(金) 18:15:17.64ID:XdsZzS9X > ビルド成功に満足して結局何もしてない
あるあるやな
あるあるやな
459デフォルトの名無しさん
2019/12/27(金) 18:26:52.15ID:SnoWmlYG じゃあ話はかんたんだ
gccの改造をすればいい
gccの改造をすればいい
460デフォルトの名無しさん
2019/12/28(土) 08:02:42.09ID:YMDBWz/J gccは真っ先に規格に対応するけど、
コード品質が糞すぎて結局商用には使えない
コード品質が糞すぎて結局商用には使えない
461デフォルトの名無しさん
2019/12/28(土) 14:03:33.98ID:YMDBWz/J ubuntuでapt install clangをさっきインストールしてみた。
gccで正常に動くプログラムが動作しないんで調べてみると
#pragma omp parallel
で使ってるomp_get_thread_num()がスレッドidを0しか返してない。
スレッドそのものは指定した数だけ、立ち上がってるのにどのスレッドも0しか返してないんだけどなんで?
gccで正常に動くプログラムが動作しないんで調べてみると
#pragma omp parallel
で使ってるomp_get_thread_num()がスレッドidを0しか返してない。
スレッドそのものは指定した数だけ、立ち上がってるのにどのスレッドも0しか返してないんだけどなんで?
462デフォルトの名無しさん
2019/12/28(土) 16:04:39.76ID:y9mZ+5If それが返すのはスレッドIDじゃなくない?
463デフォルトの名無しさん
2019/12/28(土) 16:11:50.22ID:c5TG1bir OpenMP知らないのに関数名だけ見てレスしただろ
464デフォルトの名無しさん
2019/12/28(土) 16:14:16.51ID:y9mZ+5If 知ってるけど関数間違えてた
465デフォルトの名無しさん
2019/12/28(土) 17:13:12.18ID:YMDBWz/J #pragma omp parallel num_threads(16)
{
#pragma omp critical
{
cerr << "thnum = "<< omp_get_thread_num()<"\n";
}
}
単にこれだけ。
gccは問題ないのに
clangが 0 しか返さない。
clangのエラーメッセージがよさげなんで乗り換えたいんだけど
{
#pragma omp critical
{
cerr << "thnum = "<< omp_get_thread_num()<"\n";
}
}
単にこれだけ。
gccは問題ないのに
clangが 0 しか返さない。
clangのエラーメッセージがよさげなんで乗り換えたいんだけど
466デフォルトの名無しさん
2019/12/28(土) 17:15:58.80ID:izuDiHMA スレッド出来てるならコンパイルオプションじゃないよなあ
467デフォルトの名無しさん
2019/12/28(土) 18:59:17.80ID:wFzdDG/T omp_get_thread_num always returns 0
で調べてみて
で調べてみて
468デフォルトの名無しさん
2019/12/29(日) 00:45:01.76ID:DJG0a+qG clang の omp 解決しました
469デフォルトの名無しさん
2020/01/01(水) 11:25:57.89ID:EQq3rigy Win10上のVS2019でもParallel Studio2020でも、
ubuntuのgccでもコンパイル&実行できる、コンソールプログラムを書きました。
標準で勝手にリンクされるライブラリ以外にライブラリの指定などは一切行っていないのですが、
Parallel Studioでコンパイルしたものだけ、実行直後すぐに終了されてしまうので、
デバッガで実行させると、
序数270がダイナミック ライブラリから見つかりませんでした
と表示されます。
どなたかこの件で情報お持ちじゃないですか?
ちなみにVSでもネイティブ/WSL ubuntuのgccでは正しく実行できています
ubuntuのgccでもコンパイル&実行できる、コンソールプログラムを書きました。
標準で勝手にリンクされるライブラリ以外にライブラリの指定などは一切行っていないのですが、
Parallel Studioでコンパイルしたものだけ、実行直後すぐに終了されてしまうので、
デバッガで実行させると、
序数270がダイナミック ライブラリから見つかりませんでした
と表示されます。
どなたかこの件で情報お持ちじゃないですか?
ちなみにVSでもネイティブ/WSL ubuntuのgccでは正しく実行できています
470デフォルトの名無しさん
2020/01/01(水) 11:38:25.85ID:UDgnGpGd >>469Intellのなんかをインストすればok
471デフォルトの名無しさん
2020/01/01(水) 11:40:01.97ID:tqBP4ADq .def 使えば解決するはず
472デフォルトの名無しさん
2020/01/01(水) 12:17:27.05ID:EQq3rigy >>470
今コンパイルして動かないので、dllのチェックはしてるんだろうと思いましたが、
void
main(){
cout << "Hello World\n";
}
はインテルでも何の問題もなく動いたのでdllが足りないんだと思います
今コンパイルして動かないので、dllのチェックはしてるんだろうと思いましたが、
void
main(){
cout << "Hello World\n";
}
はインテルでも何の問題もなく動いたのでdllが足りないんだと思います
473デフォルトの名無しさん
2020/01/01(水) 12:54:53.74ID:kPvcajv8 いまさらながら、std::vector::swap がC++14までnoexceptじゃなかったことに気付いた。
今までvectorをメンバに持つクラスのmoveコンストラクタ/代入の中でswapを使って
しれっとnoexceptを付けてたけど、C++11では本来どうすべきだったんだろう。
今までvectorをメンバに持つクラスのmoveコンストラクタ/代入の中でswapを使って
しれっとnoexceptを付けてたけど、C++11では本来どうすべきだったんだろう。
474デフォルトの名無しさん
2020/01/01(水) 14:11:16.43ID:Y/jFplKd swapを例外吐くように実装するほうが難しそう…
>>469
これかしら
https://software.intel.com/en-us/articles/redistributable-libraries-for-intel-c-and-fortran-2019-compilers-for-windows
>>469
これかしら
https://software.intel.com/en-us/articles/redistributable-libraries-for-intel-c-and-fortran-2019-compilers-for-windows
475デフォルトの名無しさん
2020/01/01(水) 15:11:33.16ID:kPvcajv8476デフォルトの名無しさん
2020/01/01(水) 15:40:05.94ID:MYEeMeEE noexcepつける理由ってほぼ自己満足だよな
unwindの最適化気にするぐらいなら例外禁止にするわ
unwindの最適化気にするぐらいなら例外禁止にするわ
477デフォルトの名無しさん
2020/01/01(水) 16:29:22.59ID:kPvcajv8478はちみつ餃子 ◆8X2XSCHEME
2020/01/01(水) 17:53:46.55ID:6jqQqgz1 C++17 からは noexcept 指定は型の一部ってことに変更されてる。
(noexcept から非 noexcept への型変換は有りだが逆は駄目。 まあ無理にキャストすればできなくはないだろうけど……。)
型が合わなきゃコンパイルエラーだ。
各種ライブラリとの組み合わせの関係で否応なく気にしなきゃならんってこともあるんじゃないの?
(noexcept から非 noexcept への型変換は有りだが逆は駄目。 まあ無理にキャストすればできなくはないだろうけど……。)
型が合わなきゃコンパイルエラーだ。
各種ライブラリとの組み合わせの関係で否応なく気にしなきゃならんってこともあるんじゃないの?
479デフォルトの名無しさん
2020/01/03(金) 12:36:25.83ID:umaZYxrI Intel Compiler 19.1の序数270エラー解決しません Help me
480デフォルトの名無しさん
2020/01/03(金) 14:13:50.99ID:FKz36Fkl >>479
だから、intelのmathmaticsライブラリをインストしろ
だから、intelのmathmaticsライブラリをインストしろ
481デフォルトの名無しさん
2020/01/03(金) 19:33:04.88ID:umaZYxrI MKLですか?
482デフォルトの名無しさん
2020/01/04(土) 11:34:30.60ID:fWyFLqKp mkl2019というか
インテルコンパイラツール 2019なんかをインストールすると
Visual Studio16.4環境を破壊するよ
単にコンパイラ環境だけでなくプルダウンメニューの内容とかも破壊してしまう。
VS 16.4以降はParallel Studio 2020以降じゃないと対応しない
インテルコンパイラツール 2019なんかをインストールすると
Visual Studio16.4環境を破壊するよ
単にコンパイラ環境だけでなくプルダウンメニューの内容とかも破壊してしまう。
VS 16.4以降はParallel Studio 2020以降じゃないと対応しない
483デフォルトの名無しさん
2020/01/04(土) 20:26:44.77ID:WECvYau6 副作用で草
484デフォルトの名無しさん
2020/01/05(日) 00:12:30.19ID:HA4RDQkA 環境破壊とかグレタ嬢に報告しないといかんな
485デフォルトの名無しさん
2020/01/05(日) 15:10:03.49ID:cAxs9Xlp >>480
知りもしないでいい加減なレスすんなアホ
知りもしないでいい加減なレスすんなアホ
486デフォルトの名無しさん
2020/01/06(月) 13:40:33.49ID:Q/9nqAWN487デフォルトの名無しさん
2020/01/08(水) 16:50:37.82ID:3hPXf+vV >>486
parallel Studio 2020えコンパイルに必要なライブラリ一式がすべてそろってるのに
わざわざ別途mklなんか必要あるかよ。わかってんのか馬鹿たれ。
しかも今,mkl2019しか入手できない中、
最新VSにインストしたら不具合起こすことわかってる2019ツールのインストすすめてどうすんだアホ
死ね情弱ゴミ
夢でも見てんのか?
parallel Studio 2020えコンパイルに必要なライブラリ一式がすべてそろってるのに
わざわざ別途mklなんか必要あるかよ。わかってんのか馬鹿たれ。
しかも今,mkl2019しか入手できない中、
最新VSにインストしたら不具合起こすことわかってる2019ツールのインストすすめてどうすんだアホ
死ね情弱ゴミ
夢でも見てんのか?
488デフォルトの名無しさん
2020/01/08(水) 23:18:09.28ID:qsayucr9 人を罵倒せずにいられない人っているよね
489デフォルトの名無しさん
2020/01/09(木) 08:33:01.04ID:pwu9e7aL 他では自信がないんでしょうね
490デフォルトの名無しさん
2020/01/13(月) 12:28:29.10ID:Tr5rZ1p8 テンプレートテンプレートパラメタに関する質問です。
こういうのはどう書けばいいのでしょうか?
以下はコンパイラできないんですが、
意図としては
テンプレート引数の型を関数引数として使いたい。
そして、テンプレートテンプレート引数の型Xを返したい
Xの型としてはデフォルトで'+'が定義されているdouble とか intが入ります
template < template<typename X> class L, template<typename X> class R>
X &
Func(const L<X> & l, const R<X> & r)
{
return l + r;
}
こういうのはどう書けばいいのでしょうか?
以下はコンパイラできないんですが、
意図としては
テンプレート引数の型を関数引数として使いたい。
そして、テンプレートテンプレート引数の型Xを返したい
Xの型としてはデフォルトで'+'が定義されているdouble とか intが入ります
template < template<typename X> class L, template<typename X> class R>
X &
Func(const L<X> & l, const R<X> & r)
{
return l + r;
}
491デフォルトの名無しさん
2020/01/13(月) 12:49:13.64ID:Tr5rZ1p8 コンパイラできないじゃなく
コンパイルできない
です
L<X>の部分をどう書けばいいのかわからないんです。
ところで、
clangってデフォルトテンプレート引数を正しく処理できないんですね
template< typename T = int>
class C{
};
・・・・
C x;
がエラーになってしまう。
C<> x; と書けばokです
gccは<>がなくてもokです
コンパイルできない
です
L<X>の部分をどう書けばいいのかわからないんです。
ところで、
clangってデフォルトテンプレート引数を正しく処理できないんですね
template< typename T = int>
class C{
};
・・・・
C x;
がエラーになってしまう。
C<> x; と書けばokです
gccは<>がなくてもokです
492デフォルトの名無しさん
2020/01/13(月) 12:56:31.05ID:A/MByXKy Xが何者か書いてない
Xが型ならtypename Xを<>の中に付け足すべし
Xが型ならtypename Xを<>の中に付け足すべし
493デフォルトの名無しさん
2020/01/13(月) 13:00:00.75ID:A/MByXKy template<template<typename X> L>
はtemplate<template<typename> L>と同じでXはなんの意味も持たない
はtemplate<template<typename> L>と同じでXはなんの意味も持たない
494デフォルトの名無しさん
2020/01/13(月) 13:11:53.50ID:A/MByXKy classが抜けてた
495デフォルトの名無しさん
2020/01/13(月) 13:33:15.28ID:Tr5rZ1p8 >Xが型ならtypename Xを<>の中に付け足すべし
Func(const L<teypename X> & l, const R<teypename X> & r)
ってこと???
テンプレート引数の X の型を返すのはどうすればいいんですかね?
Func(const L<teypename X> & l, const R<teypename X> & r)
ってこと???
テンプレート引数の X の型を返すのはどうすればいいんですかね?
496デフォルトの名無しさん
2020/01/13(月) 13:38:01.62ID:A/MByXKy template<typename X,
template<typename> class L,
template<typename> class R>
X Func(const L<X>& l,const R<X>& r)
template<typename> class L,
template<typename> class R>
X Func(const L<X>& l,const R<X>& r)
497デフォルトの名無しさん
2020/01/13(月) 13:44:12.54ID:Tr5rZ1p8 >>492
>Xが型ならtypename Xを<>の中に付け足すべし
Func(const L<double> & l, const R<double> & r)
と具体的にXを書く必要があるってことでしょーか?
>Xが型ならtypename Xを<>の中に付け足すべし
Func(const L<double> & l, const R<double> & r)
と具体的にXを書く必要があるってことでしょーか?
498デフォルトの名無しさん
2020/01/13(月) 14:14:22.42ID:Tr5rZ1p8499デフォルトの名無しさん
2020/01/13(月) 14:26:44.12ID:Tr5rZ1p8 Funcが2項演算
X operator+ (const L<X> &l, const L<X> &r)
だと
template < typename X,
template<typename> typename L,
template<typename> typename R>
は,clangで
invalid operands to binary expressionになりますね。
X operator+ (const L<X> &l, const L<X> &r)
だと
template < typename X,
template<typename> typename L,
template<typename> typename R>
は,clangで
invalid operands to binary expressionになりますね。
500デフォルトの名無しさん
2020/01/13(月) 15:21:33.84ID:Tr5rZ1p8 https://faithandbrave.hateblo.jp/entry/20081003/1223026720
ここにある
floatを例えばdoubleとかintとか汎用性を持たせたい
Vector<double> x;
Vector<double> y;
Vector<double> z;
Vector<double> t;
で
t= x+y+z;
という計算ができるようにしたい。
このとき
template <typename T>
class Vector{
ここに式テンプレート一切合切をメンバに持たせる
};
と定義して、式テンプレートの一切合切をVectorクラスのメンバとしてしまえば、うまくいくことがわかりましたが、
式テンプレートを独立させると、2項演算の型情報"float" をどう渡せばいいのか困っています。
2項演算の一番最初に呼ばれる
template <class L, class R>
Expression<L, Plus, R> operator+(const L& lhs, const R& rhs)
ここにfloatやdoubleの型情報を埋め込むにはどうすればいいのか?
ってことになると思うんですが。
ここにある
floatを例えばdoubleとかintとか汎用性を持たせたい
Vector<double> x;
Vector<double> y;
Vector<double> z;
Vector<double> t;
で
t= x+y+z;
という計算ができるようにしたい。
このとき
template <typename T>
class Vector{
ここに式テンプレート一切合切をメンバに持たせる
};
と定義して、式テンプレートの一切合切をVectorクラスのメンバとしてしまえば、うまくいくことがわかりましたが、
式テンプレートを独立させると、2項演算の型情報"float" をどう渡せばいいのか困っています。
2項演算の一番最初に呼ばれる
template <class L, class R>
Expression<L, Plus, R> operator+(const L& lhs, const R& rhs)
ここにfloatやdoubleの型情報を埋め込むにはどうすればいいのか?
ってことになると思うんですが。
501デフォルトの名無しさん
2020/01/14(火) 12:00:41.65ID:AM8t1N0H C++に108ある苦行の一つ、テンプレートの明示的特殊化
502デフォルトの名無しさん
2020/01/14(火) 12:10:40.04ID:AAWN8rY8 108で済むのか?
503デフォルトの名無しさん
2020/01/14(火) 12:53:30.61ID:KjTpusiu Vector内にtype持たせるなりget_type構造体作って特殊化で取るなりして合わないものをenable_ifで弾くなり
operator +の特殊化を書くなりいくらでもやり方はある
operator +の特殊化を書くなりいくらでもやり方はある
504デフォルトの名無しさん
2020/01/14(火) 13:00:30.38ID:Sh3SY+TQ 簡単に描けないと意味が無い
505デフォルトの名無しさん
2020/01/14(火) 13:05:03.28ID:KjTpusiu ETがそんな簡単に書けるわけねーだろ
506デフォルトの名無しさん
2020/01/14(火) 17:54:11.46ID:3su9tm6y >>500
そのサイトをちょっと読んでみたんだけど、LとRがすでにfloatやdoubleの型情報を持っているように思うのですが。
そのサイトをちょっと読んでみたんだけど、LとRがすでにfloatやdoubleの型情報を持っているように思うのですが。
507デフォルトの名無しさん
2020/01/14(火) 18:39:49.77ID:3su9tm6y508デフォルトの名無しさん
2020/01/15(水) 09:17:00.06ID:kgDFfipS >>506
完成形はサイトの一番最後にある
Expression , Plus , operator+
で、operator+ -> Expression -> Plusの順で呼ばれる、
operator+ に演算型(floatやdouble)がないので、ExpressionとPlusのfloatが自動的に選択されてしまう。
一番はじめのoperator+にデータ型を識別する仕組みを入れてそれを引き継いでいくか、
ExpressionとPlus内部でデータ型を認識することが必要だと思うんだけど?
2項演算でなければ3つの型を並べれば済むのにと思ってました。
>>507
using valu_type か
めっちゃ参考になります。
てかこれでほぼ解決です。
聞いて良かった。ありがとうございました
完成形はサイトの一番最後にある
Expression , Plus , operator+
で、operator+ -> Expression -> Plusの順で呼ばれる、
operator+ に演算型(floatやdouble)がないので、ExpressionとPlusのfloatが自動的に選択されてしまう。
一番はじめのoperator+にデータ型を識別する仕組みを入れてそれを引き継いでいくか、
ExpressionとPlus内部でデータ型を認識することが必要だと思うんだけど?
2項演算でなければ3つの型を並べれば済むのにと思ってました。
>>507
using valu_type か
めっちゃ参考になります。
てかこれでほぼ解決です。
聞いて良かった。ありがとうございました
509デフォルトの名無しさん
2020/01/15(水) 15:44:09.21ID:0mJheqXR なんでこの子そんなに上からなんだろ。
510デフォルトの名無しさん
2020/01/15(水) 22:41:08.06ID:kgDFfipS どこが上から?
511デフォルトの名無しさん
2020/01/15(水) 22:55:31.27ID:CBF4WmsT ちょっと賢そうだから嫉妬してる感
512デフォルトの名無しさん
2020/01/15(水) 23:10:31.17ID:kgDFfipS 見下して質問やレスした箇所がどこかわからん。
513503
2020/01/16(木) 10:42:26.08ID:CVktcrTk514430
2020/01/16(木) 11:28:05.62ID:0X0XQobn もしかすると文字でのコミュニケーションが下手なだけかも。直接対話しているならイントネーションやニュアンスで伝わるものが文字では伝わらない、誤解され得る、ということが分かってないとか。
「〜思うのですが。」ではなく「〜思うのですが、どうでしょうか?」と書けば言い返しているのではなく疑問点を質問していると明確になるのにね。
「〜思うのですが。」ではなく「〜思うのですが、どうでしょうか?」と書けば言い返しているのではなく疑問点を質問していると明確になるのにね。
515デフォルトの名無しさん
2020/01/16(木) 11:29:06.76ID:0X0XQobn >>514の名前欄は間違いなので無視してください
516デフォルトの名無しさん
2020/01/16(木) 11:36:45.85ID:N6AzyVRW int main() {
while(1) {
if (kbhit()) return -1;
}
}
while(1) {
if (kbhit()) return -1;
}
}
517デフォルトの名無しさん
2020/01/16(木) 13:18:13.07ID:lpjDYSs5 環境はMac Mojave10.14.6、VScodeは1.14.1
clang,gccはApple LLVM version 10.0.1 (clang-1001.0.46.4)です。
他VScodeの設定で"clang.cxxflags": [
"-std=c++17"
]
としています。
VScodeを使っていて、/Users/[USERNAME]/PATH/にある
c.cppというファイルを右上の矢印でコンパイルしてたら急に
cd "/Users/[USERNAME]/[PATH]/" && runFiles=`ls *.cpp` &&
g++ -std=c++17 `echo ${runFiles}` -o c && "/Users/[USERNAME]/[PATH]/"c
duplicate symbol _main in:
/var/folders/fy/0rw1xdjd3csf2v8nzp2wb4vc0000gn/T/c-216688.o
/var/folders/fy/0rw1xdjd3csf2v8nzp2wb4vc0000gn/T/d-c0a03b.o
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
というエラーが出てきました。
対応するにもこの/var/folders/fy/以下にあるファイル群がなんなのか分かりません、
どうすれば良いのでしょうか。
clang,gccはApple LLVM version 10.0.1 (clang-1001.0.46.4)です。
他VScodeの設定で"clang.cxxflags": [
"-std=c++17"
]
としています。
VScodeを使っていて、/Users/[USERNAME]/PATH/にある
c.cppというファイルを右上の矢印でコンパイルしてたら急に
cd "/Users/[USERNAME]/[PATH]/" && runFiles=`ls *.cpp` &&
g++ -std=c++17 `echo ${runFiles}` -o c && "/Users/[USERNAME]/[PATH]/"c
duplicate symbol _main in:
/var/folders/fy/0rw1xdjd3csf2v8nzp2wb4vc0000gn/T/c-216688.o
/var/folders/fy/0rw1xdjd3csf2v8nzp2wb4vc0000gn/T/d-c0a03b.o
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
というエラーが出てきました。
対応するにもこの/var/folders/fy/以下にあるファイル群がなんなのか分かりません、
どうすれば良いのでしょうか。
518蟻人間 ◆T6xkBnTXz7B0
2020/01/16(木) 13:27:47.37ID:xhLhfq9D519デフォルトの名無しさん
2020/01/16(木) 14:34:35.42ID:vo+Ub67N520デフォルトの名無しさん
2020/01/16(木) 14:39:29.98ID:vo+Ub67N521デフォルトの名無しさん
2020/01/16(木) 14:50:56.26ID:sHruIOmX 乞田川
乞田型
乞田首
乞田型
乞田首
522513
2020/01/16(木) 16:00:48.56ID:CVktcrTk523デフォルトの名無しさん
2020/01/16(木) 16:06:03.64ID:CVktcrTk524デフォルトの名無しさん
2020/01/16(木) 16:21:00.89ID:vo+Ub67N >>522
やっぱりな
auto一発ですむ話に
>>503
>Vector内にtype持たせるなりget_type構造体作って特殊化で取るなりして合わないものをenable_ifで弾くなり
>operator +の特殊化を書くなりいくらでもやり方はある
こういう寝言ほざいてたんだな。
質問者は
>>500
>Vector<double> x;
>Vector<double> y;
>Vector<double> z;
>Vector<double> t;
>t= x+y+z;
>という計算ができるようにしたい。
>式テンプレートの一切合切をVectorクラスのメンバとしてしまえば、うまくいくことがわかりましたが、
>式テンプレートを独立させると、2項演算の型情報"float" をどう渡せばいいのか困っています。
やっぱりな
auto一発ですむ話に
>>503
>Vector内にtype持たせるなりget_type構造体作って特殊化で取るなりして合わないものをenable_ifで弾くなり
>operator +の特殊化を書くなりいくらでもやり方はある
こういう寝言ほざいてたんだな。
質問者は
>>500
>Vector<double> x;
>Vector<double> y;
>Vector<double> z;
>Vector<double> t;
>t= x+y+z;
>という計算ができるようにしたい。
>式テンプレートの一切合切をVectorクラスのメンバとしてしまえば、うまくいくことがわかりましたが、
>式テンプレートを独立させると、2項演算の型情報"float" をどう渡せばいいのか困っています。
525デフォルトの名無しさん
2020/01/16(木) 16:21:26.81ID:vo+Ub67N >>522
つづき
内部に
type持たせるも何も
auto
operator[](std::size_t i) const{
return Op::Apply(l_[i], r_[i]);
}
として、
struct Plus{
struct Plus
{
template <typename T>
とするだけで、
質問者のやりたいことはいくらでも出来ますがなにか。
お前自身低レベルの極みなんだよ馬鹿たれ
つづき
内部に
type持たせるも何も
auto
operator[](std::size_t i) const{
return Op::Apply(l_[i], r_[i]);
}
として、
struct Plus{
struct Plus
{
template <typename T>
とするだけで、
質問者のやりたいことはいくらでも出来ますがなにか。
お前自身低レベルの極みなんだよ馬鹿たれ
526デフォルトの名無しさん
2020/01/16(木) 16:23:29.03ID:vo+Ub67N527デフォルトの名無しさん
2020/01/16(木) 16:27:23.02ID:CVktcrTk 質問者は型情報を渡したいと言ってるだろうが
お前のやり方だと要素ごとのbitwise orとか実装するときに困るんだよアホ(多分他にも困る場面あるはず
整数だろうが浮動少数点数だろうが表記が同じ演算ならお前の言うそれでいいけどな
お前のやり方だと要素ごとのbitwise orとか実装するときに困るんだよアホ(多分他にも困る場面あるはず
整数だろうが浮動少数点数だろうが表記が同じ演算ならお前の言うそれでいいけどな
528デフォルトの名無しさん
2020/01/16(木) 16:28:28.38ID:CVktcrTk あと
>オマエ何様のつもりだ。
>匿名掲示板でいったいどんな言葉使いを期待してるんだアホww
そっくりそのまま返すわキチガイが
>オマエ何様のつもりだ。
>匿名掲示板でいったいどんな言葉使いを期待してるんだアホww
そっくりそのまま返すわキチガイが
529デフォルトの名無しさん
2020/01/16(木) 16:33:49.27ID:vo+Ub67N530デフォルトの名無しさん
2020/01/16(木) 16:39:34.67ID:CVktcrTk >Op::Apply(l_[i], r_[i]); の型がvalu_typeの型そのものってことがわかってない
お前の言ってるそれは>>506そのもの
そういや俺operator +の特殊化とか書いてたけど
Applyの方だな
あとオーバーロードが抜けてた
お前の言ってるそれは>>506そのもの
そういや俺operator +の特殊化とか書いてたけど
Applyの方だな
あとオーバーロードが抜けてた
531デフォルトの名無しさん
2020/01/16(木) 16:40:27.48ID:vo+Ub67N532デフォルトの名無しさん
2020/01/16(木) 16:42:45.67ID:vo+Ub67N >>530
はぁ?
Op::Apply(l_[i], r_[i]); が型情報もってるのにわざわざクラス内部に不要なtype実装させてどーするつもりだと言ってるんだよ低脳
日本語わからんのかアホ
お前は日本語の勉強からやり直せ
はぁ?
Op::Apply(l_[i], r_[i]); が型情報もってるのにわざわざクラス内部に不要なtype実装させてどーするつもりだと言ってるんだよ低脳
日本語わからんのかアホ
お前は日本語の勉強からやり直せ
533デフォルトの名無しさん
2020/01/16(木) 16:44:58.53ID:vo+Ub67N アホさらしあげ
>>522
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ
変わるんだようすらバカ
autoにするだけで質問者の解決だ。ばかたれ
>>522
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ
変わるんだようすらバカ
autoにするだけで質問者の解決だ。ばかたれ
534デフォルトの名無しさん
2020/01/16(木) 16:47:00.45ID:CVktcrTk まじめんどくせぇこいつ
俺はtypeだのvalue_typeだの余計な要件増やすことを良い実装だとは思ってないぞ
>>506を挙げてそれに言い返してるのを批判的に言ったのはそれが理由
お前がドヤ顔でautoとか言い出す前からな
俺はtypeだのvalue_typeだの余計な要件増やすことを良い実装だとは思ってないぞ
>>506を挙げてそれに言い返してるのを批判的に言ったのはそれが理由
お前がドヤ顔でautoとか言い出す前からな
535デフォルトの名無しさん
2020/01/16(木) 16:52:26.75ID:CVktcrTk536デフォルトの名無しさん
2020/01/16(木) 17:42:18.71ID:ZhNhElM8 で、ID:vo+Ub67N は逃げたの?
いつものイチャモンつけるしか能が無いクズだろうけど
そんな暇があったら最初からちゃんと答えてやれよゴミが
いつものイチャモンつけるしか能が無いクズだろうけど
そんな暇があったら最初からちゃんと答えてやれよゴミが
537デフォルトの名無しさん
2020/01/16(木) 19:09:23.03ID:goTqdxUb 外野が喚いて質問者が迷惑するパターン?
538デフォルトの名無しさん
2020/01/16(木) 19:24:24.34ID:J+/qaxiI >>518
ご返信ありがとうございます、とりあえず言われたことに関係ありそうなことを
調べたのですが、自分のファイルにそういった感じの文法ミスがあるのかは
分かりませんでした。一応短いのでエラー吐いたソースコード貼っておきます。
#include <algorithm>
#include <iostream>
using namespace std;
int main() {
int N;
cin >> N;
int a[N];
for (int i = 0; i < N; i++) cin >> a[i];
long long ans = 0;
for (int i = 1; i <= 3000; i++) {
long long sum = 0;
for (int j = 0; j < N; j++) sum += a[j] % i;
ans = max(ans, sum);
}
cout << ans << endl;
return 0;
}
後、以前コンパイルできていたプログラムで同様の手順を試しにやってみたら、
同様の症状が起こって実行ファイルが消えました。
>>523
申し訳ありません、無知だったので色々調べたのですがエントリポイントという物が
よく分かりませんでした。気がつかないうちに何かまずいところ弄って他のプログラムと
開始アドレスが被ったとかそんな感じでしょうか?
ご返信ありがとうございます、とりあえず言われたことに関係ありそうなことを
調べたのですが、自分のファイルにそういった感じの文法ミスがあるのかは
分かりませんでした。一応短いのでエラー吐いたソースコード貼っておきます。
#include <algorithm>
#include <iostream>
using namespace std;
int main() {
int N;
cin >> N;
int a[N];
for (int i = 0; i < N; i++) cin >> a[i];
long long ans = 0;
for (int i = 1; i <= 3000; i++) {
long long sum = 0;
for (int j = 0; j < N; j++) sum += a[j] % i;
ans = max(ans, sum);
}
cout << ans << endl;
return 0;
}
後、以前コンパイルできていたプログラムで同様の手順を試しにやってみたら、
同様の症状が起こって実行ファイルが消えました。
>>523
申し訳ありません、無知だったので色々調べたのですがエントリポイントという物が
よく分かりませんでした。気がつかないうちに何かまずいところ弄って他のプログラムと
開始アドレスが被ったとかそんな感じでしょうか?
539蟻人間 ◆T6xkBnTXz7B0
2020/01/16(木) 19:36:20.45ID:AwrKlCOf *.cppにより、エントリポイントのmain関数を2つコンパイルしたんではないか?
540蟻人間 ◆T6xkBnTXz7B0
2020/01/16(木) 19:38:26.02ID:AwrKlCOf 1つのフォルダには1つのプロジェクトにした方がいいのかも。
541デフォルトの名無しさん
2020/01/16(木) 19:38:35.95ID:ZhNhElM8 >>538
エントリポイントっていうのはそこでいうmain関数のことね
それが複数作られてるとエラーになる
そのソースコードをヘッダファイルに書いててそれを複数のファイルでインクルードしてるとか
あるいは他にもmain関数を定義してる余計なソースコードがあるとかそういうのが原因だとおも
エントリポイントっていうのはそこでいうmain関数のことね
それが複数作られてるとエラーになる
そのソースコードをヘッダファイルに書いててそれを複数のファイルでインクルードしてるとか
あるいは他にもmain関数を定義してる余計なソースコードがあるとかそういうのが原因だとおも
542デフォルトの名無しさん
2020/01/16(木) 19:40:09.05ID:ZhNhElM8 リロードしてなくて被った
543デフォルトの名無しさん
2020/01/16(木) 20:19:17.16ID:J+/qaxiI544デフォルトの名無しさん
2020/01/16(木) 20:26:56.83ID:J+/qaxiI 申し訳ありません、今VScodeのsetting.jsonを確認したらいつの間にか
"code-runner.executorMap": {
"cpp": "cd $dir && runFiles=`ls *.cpp` && g++ -std=c++17 `echo ${runFiles}` -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
},
が書かれてました。恐らくですが、最近別の機会でc++17のオプションを使う時にそのまま他の方の
設定を写していたのと最近一つのファイル内に複数のフォルダ作ることが無かったからだと思います。
昼から何度も長文でお騒がせして申し訳ありませんでしたorz
エントリポイントに関しては大変参考になりました。
"code-runner.executorMap": {
"cpp": "cd $dir && runFiles=`ls *.cpp` && g++ -std=c++17 `echo ${runFiles}` -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
},
が書かれてました。恐らくですが、最近別の機会でc++17のオプションを使う時にそのまま他の方の
設定を写していたのと最近一つのファイル内に複数のフォルダ作ることが無かったからだと思います。
昼から何度も長文でお騒がせして申し訳ありませんでしたorz
エントリポイントに関しては大変参考になりました。
545デフォルトの名無しさん
2020/01/17(金) 10:27:22.98ID:fMuYUnvE >>522
戻り値の型をテンプレートにするのってどうするの
戻り値の型をテンプレートにするのってどうするの
546デフォルトの名無しさん
2020/01/17(金) 14:15:38.50ID:GiayRj2a Tかautoでいんじゃね
あるいはdecltype
あるいはdecltype
547デフォルトの名無しさん
2020/01/17(金) 14:18:21.61ID:fMuYUnvE 戻り値Tで関数オーバーロード出来る?
548デフォルトの名無しさん
2020/01/17(金) 14:37:12.74ID:GiayRj2a 戻り値が違うだけだと無理よ
549デフォルトの名無しさん
2020/01/17(金) 14:39:16.16ID:GiayRj2a あ、戻り値だけ指定させる関数テンプレートならオーバーロードしなくても
その関数テンプレート一つでいける
ただし推論できないので呼び出すときにテンプレート引数の指定は必須
その関数テンプレート一つでいける
ただし推論できないので呼び出すときにテンプレート引数の指定は必須
550デフォルトの名無しさん
2020/01/17(金) 18:48:04.18ID:PzZl0Asa autoと型指定で同じコードに落ちるとは限らないというか、おそらく同じコードにならないので、よく考える必要があると思います。
551はちみつ餃子 ◆8X2XSCHEME
2020/01/19(日) 01:28:50.10ID:pwo1VM/U decltype(auto) とも使い分けが必要なの本当にアレだよな……
552デフォルトの名無しさん
2020/01/20(月) 10:42:02.42ID:CUHpWb/I ptrってなんて読むん
553デフォルトの名無しさん
2020/01/20(月) 11:17:45.19ID:wNCym70P ポインタ
554デフォルトの名無しさん
2020/01/20(月) 11:47:15.83ID:rZl1icD3 ハリー・ポッター
555デフォルトの名無しさん
2020/01/20(月) 11:52:47.26ID:quHzxrTX ペトリザラ
556デフォルトの名無しさん
2020/01/20(月) 12:52:13.10ID:CUHpWb/I ずっと脳内でピトラって読んでたがポインタか
ありがとう
ありがとう
557デフォルトの名無しさん
2020/01/20(月) 13:19:51.66ID:0GX6odYx int_ptr
INT_PTR
*int
全部違う型?
INT_PTR
*int
全部違う型?
558デフォルトの名無しさん
2020/01/20(月) 13:20:08.19ID:0GX6odYx int *
ですすんまそ
ですすんまそ
559はちみつ餃子 ◆8X2XSCHEME
2020/01/20(月) 15:13:06.58ID:UOBRzIUl >>557
INT_PTR は Windows SDK で定義されてるやつのことだと思うけど、
標準で言うところの intptr_t に相当するやつ。
int のポインタじゃなくて、ポインタを格納できる (のに充分な幅がある) int っていう意味。
INT_PTR は Windows SDK で定義されてるやつのことだと思うけど、
標準で言うところの intptr_t に相当するやつ。
int のポインタじゃなくて、ポインタを格納できる (のに充分な幅がある) int っていう意味。
560デフォルトの名無しさん
2020/01/20(月) 15:46:05.19ID:UDU8umXR >>507
これって2項間はいけるけど
v=l+z+w;
とか3項間以上の場合
typename L::value_type
operator[](std::size_t i) const{
・・・
}
ここで、コンパイル通らないんじゃないの?
+wの部分で(l+z)::valu_typeを参照し、
class Expressionで宣言されてないvalu_typeを参照することになってエラーになるはず。
auto
operator[](std::size_t i) const{
・・・
}
では何の問題もない。
これって2項間はいけるけど
v=l+z+w;
とか3項間以上の場合
typename L::value_type
operator[](std::size_t i) const{
・・・
}
ここで、コンパイル通らないんじゃないの?
+wの部分で(l+z)::valu_typeを参照し、
class Expressionで宣言されてないvalu_typeを参照することになってエラーになるはず。
auto
operator[](std::size_t i) const{
・・・
}
では何の問題もない。
561デフォルトの名無しさん
2020/01/20(月) 15:51:26.28ID:UDU8umXR562デフォルトの名無しさん
2020/01/20(月) 15:58:55.44ID:UDU8umXR 一応
gcc 9.1で確認してみた
error: no type named ‘value_type’ in ‘class Expression<Vector<int>, Plus, Vector<int>
>’
11 | typename L::value_type operator[](std::size_t i) const
だな。
>>507のコードはコンパイルすら通らない間違いコードだ。
gcc 9.1で確認してみた
error: no type named ‘value_type’ in ‘class Expression<Vector<int>, Plus, Vector<int>
>’
11 | typename L::value_type operator[](std::size_t i) const
だな。
>>507のコードはコンパイルすら通らない間違いコードだ。
563デフォルトの名無しさん
2020/01/20(月) 16:08:08.21ID:UDU8umXR コンパイル通らないってのは
以下を追加したときの話ね
Vector<int> w{ 5, 4, 3 };
v = l + r +w;
2項間では通るが3項間以上の式では通らない。
ex-templateを使うメリットが全くないコードが>>507
以下を追加したときの話ね
Vector<int> w{ 5, 4, 3 };
v = l + r +w;
2項間では通るが3項間以上の式では通らない。
ex-templateを使うメリットが全くないコードが>>507
564デフォルトの名無しさん
2020/01/20(月) 17:26:42.62ID:UDU8umXR auto
operator[](std::size_t i) const{
とせず、value_type直接指定でいくためには
class expressionの中で
もう一度
using value_type = typename L:value_type;
を宣言して、
value_type
operator[](size_t i) const{
・・・
}
で多項間でも問題なくいけるはず。
operator[](std::size_t i) const{
とせず、value_type直接指定でいくためには
class expressionの中で
もう一度
using value_type = typename L:value_type;
を宣言して、
value_type
operator[](size_t i) const{
・・・
}
で多項間でも問題なくいけるはず。
565デフォルトの名無しさん
2020/01/21(火) 18:43:12.30ID:of4oLLe2566デフォルトの名無しさん
2020/01/21(火) 22:39:57.57ID:jv9UY41A567デフォルトの名無しさん
2020/01/21(火) 22:42:13.76ID:jv9UY41A568デフォルトの名無しさん
2020/01/21(火) 23:33:50.08ID:oeYN0gBf え?
SIMDで並列化できたら電力あたりのパフォーマンスはあがるぞ
ETと比べるものとは思わないが
SIMDで並列化できたら電力あたりのパフォーマンスはあがるぞ
ETと比べるものとは思わないが
569デフォルトの名無しさん
2020/01/22(水) 10:04:13.26ID:RE1hbZ/o >>566
お前大して攻撃的でもない書き込みにすぐ喧嘩売ってイキるの辞めたほうがいいよ
俺はETとSIMD両方使って自作の線形代数ライブラリ(4行4列まで限定だが)作った上で言ってる
恥書く前に謝っとけよ
>能力不足をHWに補ってもらわないとな
アホだろお前、ETがSIMD以上に速度上がると思ってんの?
>ETと比べるものとは思わないが
確かに速度が目当てと勝手に限定してたね
お前大して攻撃的でもない書き込みにすぐ喧嘩売ってイキるの辞めたほうがいいよ
俺はETとSIMD両方使って自作の線形代数ライブラリ(4行4列まで限定だが)作った上で言ってる
恥書く前に謝っとけよ
>能力不足をHWに補ってもらわないとな
アホだろお前、ETがSIMD以上に速度上がると思ってんの?
>ETと比べるものとは思わないが
確かに速度が目当てと勝手に限定してたね
570デフォルトの名無しさん
2020/01/22(水) 10:18:16.91ID:s6VTVCIo 最近のコンパイラならETできれいに展開しておけば
勝手にはSIMD化してくれんじゃない?
勝手にはSIMD化してくれんじゃない?
571デフォルトの名無しさん
2020/01/22(水) 10:27:28.86ID:RE1hbZ/o Intelのは使ったことないんで知らんけど、VCだと基本そういうのは期待できないよ
(最適化かけたEigenのコードの逆アセでも見てみればわかる)
単一の要素の計算にxmmレジスタ使ってはくれるけど並列にやってくれることは無い
SIMDに収まる範囲のベクトルなら、手動できっちりSIMD使いつつ
インターフェースを使いやすくするのは普通に出来るから先にそうした方がいい
(最適化かけたEigenのコードの逆アセでも見てみればわかる)
単一の要素の計算にxmmレジスタ使ってはくれるけど並列にやってくれることは無い
SIMDに収まる範囲のベクトルなら、手動できっちりSIMD使いつつ
インターフェースを使いやすくするのは普通に出来るから先にそうした方がいい
572デフォルトの名無しさん
2020/01/22(水) 12:20:19.61ID:mLtdNNMm573デフォルトの名無しさん
2020/01/27(月) 00:16:58.09ID:kzLo5KUi class vec2
{
{
574デフォルトの名無しさん
2020/01/28(火) 10:57:31.95ID:/YDDbz91 // >>573
}
}
575デフォルトの名無しさん
2020/01/28(火) 15:18:36.74ID:PrwWvwu0 // >>574
;
;
576デフォルトの名無しさん
2020/01/29(水) 08:49:45.27ID:RKbTXMV3 なんかわろた
577デフォルトの名無しさん
2020/01/29(水) 13:23:40.81ID:zE4LbE2k >>575
:q!
:q!
578はちみつ餃子 ◆8X2XSCHEME
2020/01/29(水) 17:06:53.33ID:F1ZVbYEm は? C-x C-c だが。
579デフォルトの名無しさん
2020/01/29(水) 19:14:06.94ID:cVCtJzaf >>577
保存しないで抜けるんじゃないw
保存しないで抜けるんじゃないw
580デフォルトの名無しさん
2020/01/31(金) 16:53:29.94ID:Hjj/uk/N g++やclangで-std=c++17オプションをterminal、VScode共に一括で
デフォルトにしたいのですが何か良い方法ってありませんか?
環境はMac OS Mojaveです
デフォルトにしたいのですが何か良い方法ってありませんか?
環境はMac OS Mojaveです
581デフォルトの名無しさん
2020/01/31(金) 22:24:21.02ID:I/eJOw0W >>569
それがどうした?
4x4?それが自慢か雑魚野郎
こっちは自由にサイズ変更可能な行列演算ライブラリを20年以上前から仕事で使ってる。
そして一定サイズ以上の行列乗算では式テンプレートではまったくパフォーマンス向上できないこともわかってる。
土下座すんのはテメエなんだよ一知半解の低脳野郎
ちなみに>>500のサイトにあるBlitzの有名なコードだが、operator=内部で =r(i.j)などとして、行列乗算(each productではなく)に拡張した場合、
式テンプレートを使用しない方式と比べて100x100行列なら1000倍以上の速度低下を引き起こす
>アホだろお前、ETがSIMD以上に速度上がると思ってんの?
はぁ? 異なるHW条件持ち出してきて速度向上ほざいてアホの極みか低脳
それがどうした?
4x4?それが自慢か雑魚野郎
こっちは自由にサイズ変更可能な行列演算ライブラリを20年以上前から仕事で使ってる。
そして一定サイズ以上の行列乗算では式テンプレートではまったくパフォーマンス向上できないこともわかってる。
土下座すんのはテメエなんだよ一知半解の低脳野郎
ちなみに>>500のサイトにあるBlitzの有名なコードだが、operator=内部で =r(i.j)などとして、行列乗算(each productではなく)に拡張した場合、
式テンプレートを使用しない方式と比べて100x100行列なら1000倍以上の速度低下を引き起こす
>アホだろお前、ETがSIMD以上に速度上がると思ってんの?
はぁ? 異なるHW条件持ち出してきて速度向上ほざいてアホの極みか低脳
582デフォルトの名無しさん
2020/01/31(金) 22:45:37.50ID:I/eJOw0W >>569
あぁ
言い忘れてたわ式テンプレートは一時領域コピー時間の削減と言う意味で3項以上と書いてるわけだが、
一時領域の必要ない2項でメリットがあるというなら挙げてミロよ低脳www
寝ぼけんな雑魚野郎
あぁ
言い忘れてたわ式テンプレートは一時領域コピー時間の削減と言う意味で3項以上と書いてるわけだが、
一時領域の必要ない2項でメリットがあるというなら挙げてミロよ低脳www
寝ぼけんな雑魚野郎
583デフォルトの名無しさん
2020/01/31(金) 23:43:58.62ID:HzrC4w9c 団子だろ
584デフォルトの名無しさん
2020/01/31(金) 23:56:24.08ID:I/eJOw0W >>479
#pragma omp critical
使ってるコードで同じエラー出たわ
criticalセクションが無ければこのエラーは出ない
無くしたら動かんけどww
19.1のバグやね
まだ、気づいてない人多いんだろな検索してもヒットしない
#pragma omp critical
使ってるコードで同じエラー出たわ
criticalセクションが無ければこのエラーは出ない
無くしたら動かんけどww
19.1のバグやね
まだ、気づいてない人多いんだろな検索してもヒットしない
585デフォルトの名無しさん
2020/02/01(土) 04:58:28.47ID:sDMEFbxi >>581
ずいぶん反論に時間がかかったなw
>20年以上前から仕事で”使ってる”
作った側ではないなら実装時の問題とかには疎いんじゃねーの?
>Blitzの有名なコード
Blitzのコードとかどっかに書いてたか?
Blitzのソース読んだことないんで具体的にどのヘッダか示してくれるか
というかあんなクソ単純な説明のためのサンプルと同等のコードとは考えにくいが
>100x100行列なら1000倍以上の速度低下を引き起こす
へー。で??
俺別にETを絶賛などしてないんだが
質問者の話もそういう可変要素のやつじゃなかったよね
>異なるHW条件持ち出してきて
お前が
>能力不足をHWに補ってもらわないとなww
とかアホなこと抜かしたからだろ
ずいぶん反論に時間がかかったなw
>20年以上前から仕事で”使ってる”
作った側ではないなら実装時の問題とかには疎いんじゃねーの?
>Blitzの有名なコード
Blitzのコードとかどっかに書いてたか?
Blitzのソース読んだことないんで具体的にどのヘッダか示してくれるか
というかあんなクソ単純な説明のためのサンプルと同等のコードとは考えにくいが
>100x100行列なら1000倍以上の速度低下を引き起こす
へー。で??
俺別にETを絶賛などしてないんだが
質問者の話もそういう可変要素のやつじゃなかったよね
>異なるHW条件持ち出してきて
お前が
>能力不足をHWに補ってもらわないとなww
とかアホなこと抜かしたからだろ
586デフォルトの名無しさん
2020/02/01(土) 05:17:20.41ID:sDMEFbxi >>582
>一時領域の必要ない2項でメリットがあるというなら挙げてミロよ低脳www
2項で一時領域が必要ないのはRVO前提にしてんだろうけど
お前コンストラクタしか頭に無いだろ
あと、よっぽど自信がおありのようだから質問してやるが
上に挙がってたコード例のようなやり方でバカ正直に行列の乗算のような計算を
仮に3項以上でやると重大な問題が起きるわけだが、それが何か即答できるよな?
>一時領域の必要ない2項でメリットがあるというなら挙げてミロよ低脳www
2項で一時領域が必要ないのはRVO前提にしてんだろうけど
お前コンストラクタしか頭に無いだろ
あと、よっぽど自信がおありのようだから質問してやるが
上に挙がってたコード例のようなやり方でバカ正直に行列の乗算のような計算を
仮に3項以上でやると重大な問題が起きるわけだが、それが何か即答できるよな?
587デフォルトの名無しさん
2020/02/01(土) 07:35:36.44ID:tav2AwxI 最適化、高速化は具体的な用途とセットじゃないと語っても意味がない
要素ごとに演算すれば良い巨大ベクタと
1個の結果を得るのに広範囲にアクセスしなきゃならない巨大行列の乗算
全然違う話
要素ごとに演算すれば良い巨大ベクタと
1個の結果を得るのに広範囲にアクセスしなきゃならない巨大行列の乗算
全然違う話
588デフォルトの名無しさん
2020/02/01(土) 07:57:11.83ID:sDMEFbxi 大きな行列の場合、高速化手法なんて他にいくつもあるからね(詳しくはないが
それ以前になぜ遅くなるのかも分かってない&ET以前にSIMDと言われて
「能力不足をHWに補ってもらわないとなww」とか(ライブラリ実装したことある立場ではないにもかかわらず)
平気で言える時点で、20年仕事でってのは嘘だろう
C++かじっただけのどこかの暇な学生だろ
それ以前になぜ遅くなるのかも分かってない&ET以前にSIMDと言われて
「能力不足をHWに補ってもらわないとなww」とか(ライブラリ実装したことある立場ではないにもかかわらず)
平気で言える時点で、20年仕事でってのは嘘だろう
C++かじっただけのどこかの暇な学生だろ
589デフォルトの名無しさん
2020/02/01(土) 08:20:06.35ID:tav2AwxI HWを使わない最適化(高速化)なんてあり得ないからね
SIMD、スレッド、キャッシュ、(GPU、FPGA、...)
これらを有効に使うのが最適化
SIMD、スレッド、キャッシュ、(GPU、FPGA、...)
これらを有効に使うのが最適化
590デフォルトの名無しさん
2020/02/01(土) 08:23:05.35ID:tav2AwxI 高速化はどうでも良くて単に楽に書きたいだけならC/C++は向いてない
591デフォルトの名無しさん
2020/02/01(土) 12:22:48.15ID:TULylXcw >>589
アルゴリズムはハード非依存と言っていいでしょ
アルゴリズムはハード非依存と言っていいでしょ
592デフォルトの名無しさん
2020/02/01(土) 13:49:03.18ID:eXUHWthh 「ソフトウェアに対して本当に真剣な人は、独自のハードウェアを作るべきだ。」
アラン・ケイ
アラン・ケイ
593デフォルトの名無しさん
2020/02/02(日) 23:42:11.49ID:vTjBAXNr >>591
ある段階まではね。
ある段階まではね。
594デフォルトの名無しさん
2020/02/03(月) 08:23:47.39ID:Ns1a0i+O595デフォルトの名無しさん
2020/02/03(月) 08:56:52.32ID:MWPuXKWI 除算回数を減らすチューニングなんかはHW依存と言えるんじゃない?
596デフォルトの名無しさん
2020/02/03(月) 12:02:25.38ID:62FLJlST 触ったこと無い人には説明しても判らんやろて
597デフォルトの名無しさん
2020/02/03(月) 12:33:05.83ID:n2ny0GIb 極端なこというと、量子コンピュータ向けアルゴリズムはHWが量子コンピュータであることが前提
HWとSW合わせて1つの装置だから
HWとSW合わせて1つの装置だから
598デフォルトの名無しさん
2020/02/03(月) 15:01:01.85ID:Exvuz9nd599デフォルトの名無しさん
2020/02/03(月) 15:46:17.64ID:MWPuXKWI >>598
いや、計算量も変わるしアルゴリズムでもあるけど?
いや、計算量も変わるしアルゴリズムでもあるけど?
600デフォルトの名無しさん
2020/02/03(月) 17:07:19.92ID:Exvuz9nd601デフォルトの名無しさん
2020/02/03(月) 17:13:32.87ID:Si1aHG26 ビッグオーが変わるようなのはアルゴリズムの違いだろうけど
ビッグオーがそのままで計算量だけが変わるのはどっちとも言いがたい
ビッグオーがそのままで計算量だけが変わるのはどっちとも言いがたい
602デフォルトの名無しさん
2020/02/03(月) 17:33:31.72ID:MWPuXKWI >>600
より除算回数の少ないアルゴリズムを選択することは現状のCPUは除算が遅いことに対応するわけだからHW依存と言えなくもない
この主張に対してそういった選択はアルゴリズムでもなければオーダーもかわらないと反論しているのですか?
より除算回数の少ないアルゴリズムを選択することは現状のCPUは除算が遅いことに対応するわけだからHW依存と言えなくもない
この主張に対してそういった選択はアルゴリズムでもなければオーダーもかわらないと反論しているのですか?
603デフォルトの名無しさん
2020/02/03(月) 23:27:39.99ID:Ns1a0i+O 特異な例を持ち出しても一般論を否定できないっての
604デフォルトの名無しさん
2020/02/03(月) 23:33:51.85ID:e9E2NTEb 計算量のオーダーが変わらないアルゴリズム的最適化なんていくらでもあるよ
605デフォルトの名無しさん
2020/02/04(火) 00:20:58.43ID:mQynHgib 有限の並列度の並列化ってオーダー変わらないけどワザワザ並列化可能なアルゴリズム使うよね
606デフォルトの名無しさん
2020/02/04(火) 00:29:54.04ID:A8BeWHVj どうせO(n)だから配列丸コピしても問題なしっていう馬鹿を思い出したわ。
607デフォルトの名無しさん
2020/02/04(火) 00:37:14.93ID:mQynHgib と言うか最適なオーダーのアルゴリズムなんて殆んど既知だから、オーダー変わるような最適化ってあんまりないよね
608デフォルトの名無しさん
2020/02/04(火) 12:35:39.06ID:SyKO2BA6 車輪の再発明は良く批判されるけど
素数を列挙するプログラムなんて
既に判ってる素数はテーブル参照するのが最適なのに
なんで毎回計算して地球環境破壊に貢献してる訳?
素数を列挙するプログラムなんて
既に判ってる素数はテーブル参照するのが最適なのに
なんで毎回計算して地球環境破壊に貢献してる訳?
609デフォルトの名無しさん
2020/02/04(火) 12:47:30.21ID:GNpMFwh2 ROM容量にはテーブル化は最適ではない
610デフォルトの名無しさん
2020/02/04(火) 12:48:27.46ID:t2uF8z+f 競技ルール的なアレじゃね
611デフォルトの名無しさん
2020/02/04(火) 13:48:07.39ID:4xoSX3tu 「ROM容量にはテーブル化は最適ではない」
典型的な論点ずらし
典型的な論点ずらし
612デフォルトの名無しさん
2020/02/04(火) 16:52:46.33ID:t6zt27Qb >>608
素数の話はどっから出てきた?
アルゴリズムの例として挙げたのかも知れんが、
別のスレッドで最近見た気のする話題なので投稿する場を間違えたのかと。
実用プログラムでは「車輪の再発明」は上手いやり方じゃないけど、
低レベルの部分から組み上げたほうが理解が深まるって面はあるでしょ。
素数の話はどっから出てきた?
アルゴリズムの例として挙げたのかも知れんが、
別のスレッドで最近見た気のする話題なので投稿する場を間違えたのかと。
実用プログラムでは「車輪の再発明」は上手いやり方じゃないけど、
低レベルの部分から組み上げたほうが理解が深まるって面はあるでしょ。
613デフォルトの名無しさん
2020/02/04(火) 16:53:25.40ID:GNpMFwh2 お前が何を論じたいかとか
知るか
知るか
614デフォルトの名無しさん
2020/02/04(火) 17:26:23.15ID:MKouw6om 車輪の再発明は学習に最適
615デフォルトの名無しさん
2020/02/05(水) 00:16:57.41ID:GCTF3gV7616デフォルトの名無しさん
2020/02/05(水) 01:36:02.88ID:RkJ0eyiK >>615
悔しそうですねw
悔しそうですねw
617デフォルトの名無しさん
2020/02/05(水) 04:53:06.88ID:GCTF3gV7 夜中まで大変だなw
618デフォルトの名無しさん
2020/02/05(水) 13:53:11.70ID:rzfrqein バイナリデータを、文字列に変換して保持しようとした場合、素直に16進数表記にするのがよい?
データ量倍になるけど
データ量倍になるけど
619デフォルトの名無しさん
2020/02/05(水) 14:09:47.25ID:ox5K4d9e おまえがやりたいようにやればいいとおもう
620デフォルトの名無しさん
2020/02/05(水) 14:22:22.31ID:ElBlpF/h Base64
621デフォルトの名無しさん
2020/02/05(水) 14:32:42.49ID:rzfrqein622デフォルトの名無しさん
2020/02/05(水) 15:41:12.41ID:zWcxLf4u それでいいんだw
623デフォルトの名無しさん
2020/02/05(水) 16:07:18.33ID:ImPcpEtv それでいいなら%Xで出力するのでも良い気がするね
base64にすると単純な16進表記よりデータ量増えるし、%Xなら余分なライブラリもいらないし
まぁどっちでもいいんだろうけど
base64にすると単純な16進表記よりデータ量増えるし、%Xなら余分なライブラリもいらないし
まぁどっちでもいいんだろうけど
624デフォルトの名無しさん
2020/02/05(水) 16:08:34.43ID:ImPcpEtv 嘘言ったわ、base64は6ビットごとに1文字だからデータはこっちのほうが小さいか
625デフォルトの名無しさん
2020/02/05(水) 16:54:58.67ID:2rKdW1Ec 8bit→HEX2桁→2倍
8bit→Base64→4/3倍
やろ
一定数以上桁が必要なのでpaddingとかあるし100%ではないが
8bit→Base64→4/3倍
やろ
一定数以上桁が必要なのでpaddingとかあるし100%ではないが
626デフォルトの名無しさん
2020/02/05(水) 18:52:50.41ID:hYuejzNd base64なんかビットシフトとテーブルだけで簡単に実装できるし依存ライブラリ増やす必要もないのでは
627デフォルトの名無しさん
2020/02/05(水) 19:13:05.48ID:PZ/5vknB 16進数派
628デフォルトの名無しさん
2020/02/05(水) 19:23:50.17ID:2rKdW1Ec データ量にもよるけど
"\x00\x00\x00\x00..." が一番楽じゃね
"\x00\x00\x00\x00..." が一番楽じゃね
629デフォルトの名無しさん
2020/02/05(水) 19:35:11.50ID:hYuejzNd 何のためにテキストに変換したいのかがわからんとなんとも言えんな
目的によって使える文字種も違うからな
目的によって使える文字種も違うからな
630デフォルトの名無しさん
2020/02/05(水) 19:41:08.83ID:PZ/5vknB Base64で良いって言ってるんだから
終了
終了
631デフォルトの名無しさん
2020/02/05(水) 23:15:38.55ID:NEouxGwD Base64 は、HTML でもよく使う
Base64の文字列で、PNG/JPEG画像を、HTMLファイルに直接埋め込める
<img src="data:image/png;base64,xxxxx..." />
Base64の文字列で、PNG/JPEG画像を、HTMLファイルに直接埋め込める
<img src="data:image/png;base64,xxxxx..." />
632デフォルトの名無しさん
2020/02/06(木) 00:01:41.26ID:7WdfZf7H base64って7bit通信路通すためのもんでしょ?
textにするならヒューマンリーダブルにするのが無難だと思うけど
そうじゃなけりゃバイナリでいいじゃん
と思った
まぁ好きにしなよ
textにするならヒューマンリーダブルにするのが無難だと思うけど
そうじゃなけりゃバイナリでいいじゃん
と思った
まぁ好きにしなよ
633デフォルトの名無しさん
2020/02/06(木) 00:07:14.11ID:/W9iMVJD ヒューマンリーダブル
634はちみつ餃子 ◆8X2XSCHEME
2020/02/06(木) 01:02:03.98ID:jSrTrJa0 ish みたいなやつで UTF-8 を利用したのをどっかで見たことある
635デフォルトの名無しさん
2020/02/06(木) 06:43:09.85ID:bk3hpXlE >>632は一体何を主張してるんだろう…
636デフォルトの名無しさん
2020/02/06(木) 06:44:20.62ID:bk3hpXlE637デフォルトの名無しさん
2020/02/06(木) 10:19:44.96ID:s0z6ZqT0 テキストファイルを結合してishでデコードしてえっちなMAGファイルを見てた人は手をあげなさい
638デフォルトの名無しさん
2020/02/06(木) 13:08:45.50ID:sNihMBVC ishはBase64と違って誤り訂正あるやん?
639デフォルトの名無しさん
2020/02/06(木) 13:22:34.72ID:euRWcwLl ソーセージのだけ覚えてる
640デフォルトの名無しさん
2020/02/07(金) 02:44:46.72ID:FDFOp562 boost::serializationがお手軽にシリアライズできて便利だなと使いまくってたら、
map系コンテナがあると一気に性能落ちるっぽいんですが、これって当たり前ですかね?
protocol buffersなどの他のシリアライザに替えて解決するものでもなさそうだし、どうしたもんかな…
map系コンテナがあると一気に性能落ちるっぽいんですが、これって当たり前ですかね?
protocol buffersなどの他のシリアライザに替えて解決するものでもなさそうだし、どうしたもんかな…
641デフォルトの名無しさん
2020/02/07(金) 11:04:33.34ID:j3f+aFgv >>637
here!
here!
642デフォルトの名無しさん
2020/02/07(金) 11:15:10.05ID:0A6dyGR7 独学で組み込みやりたいんだが…
643デフォルトの名無しさん
2020/02/07(金) 11:40:38.84ID:PWhN+bN7 圧縮してからBase64すればbitチェックも出来てサイズも減って一石二鳥
644デフォルトの名無しさん
2020/02/07(金) 12:16:58.36ID:qwopp/ku >>642
やればいいんじゃないかな
やればいいんじゃないかな
645デフォルトの名無しさん
2020/02/07(金) 12:29:23.66ID:/AlUflk/646デフォルトの名無しさん
2020/02/07(金) 12:30:00.98ID:VWyX2qgb 今の組み込みは環境整いすぎてハード触ってる感ないよね
647デフォルトの名無しさん
2020/02/07(金) 12:35:41.88ID:8FC0VQS8 小規模CPUなら全て自力のコードで書けるよ
648デフォルトの名無しさん
2020/02/07(金) 12:47:59.75ID:0A6dyGR7 Arduinoでいい?
649デフォルトの名無しさん
2020/02/07(金) 13:15:59.26ID:j+3lGBli いいんじゃない?なんでわざわざ聞くのかわからんが
650デフォルトの名無しさん
2020/02/07(金) 13:20:18.59ID:8FC0VQS8 自力が好きならまずは
PICフルアセンブラ
PICフルアセンブラ
651デフォルトの名無しさん
2020/02/07(金) 13:31:27.53ID:0A6dyGR7 制御的な知識は多少あるから今更Lチカやってもなぁって感じだ
652デフォルトの名無しさん
2020/02/07(金) 13:47:41.14ID:8FC0VQS8 PIC=Lチカ
かよ
かよ
653デフォルトの名無しさん
2020/02/07(金) 13:51:42.69ID:PWhN+bN7 条件後出しするなとあれほど
板チ
板チ
654デフォルトの名無しさん
2020/02/07(金) 14:39:32.66ID:aI41PDC9 >>642
SPRESENSE、Arduinoよりスペックが高いからあまり制約を考えずに触れるからいいよ
SPRESENSE、Arduinoよりスペックが高いからあまり制約を考えずに触れるからいいよ
655デフォルトの名無しさん
2020/02/07(金) 18:25:14.52ID:tbpxydmI 組み込みって難しそうなのに年収は総じて低めだよね
オラオラ系Webプログラマとかのほうがマシだったりするし
なんか世知辛い
オラオラ系Webプログラマとかのほうがマシだったりするし
なんか世知辛い
656デフォルトの名無しさん
2020/02/07(金) 20:39:09.61ID:Dpv8aBJv 組み込みで出来る人は多分大企業メーカーのR&Dに転職してっちゃうんじゃないかな。
なんとなくのイメージだけど、組み込みプログラミングが必要な製品の品質管理を考えると、
請負組み込みの会社に開発を頼める範囲ってごく簡単な部分に限られそうだから、
単価が低い仕事が多くなっちゃうのかも。
なんとなくのイメージだけど、組み込みプログラミングが必要な製品の品質管理を考えると、
請負組み込みの会社に開発を頼める範囲ってごく簡単な部分に限られそうだから、
単価が低い仕事が多くなっちゃうのかも。
657デフォルトの名無しさん
2020/02/07(金) 22:46:17.85ID:k+IYFIKh まあコスト削減のために低スペックハード使うわけだしな。
658デフォルトの名無しさん
2020/02/08(土) 00:46:23.22ID:Q7LgS8OA オラオラ系というよりウェーイ系というほうが表現が適切だろう
ホームページ見ただけでウェーイって叫びながら意識高い開発してる姿が容易に想像できる
ホームページ見ただけでウェーイって叫びながら意識高い開発してる姿が容易に想像できる
659デフォルトの名無しさん
2020/02/08(土) 03:53:19.54ID:/OouxCiy いわゆるロクロ回してる系やな
660デフォルトの名無しさん
2020/02/08(土) 13:16:27.70ID:v1IBJgnW 京セラも陶器だったんやな
661デフォルトの名無しさん
2020/02/11(火) 18:11:48.90ID:poOKFhcK そもそもここで質問するのが適切か分からないのですが
とりあえずC++っぽいので分かる方がいたら教えてください。
とあるライブラリのビルドスクリプトを叩いたところ以下のようなエラーが出ました。
```
略/filesystem.hpp:784:13: error: no member named 'make_absolute' in 'std::__1::__fs::filesystem::path'
略
```
ファイル名からC++のコンパイルに失敗しているようなのでした。
普段は別の言語を触っておりC++は触ったことがありません。
調べた限り、ヘッダの二重読み込みでエラーになっているとのことでしたが
該当の `filesystem.hpp` には #pragma once が宣言されています。
環境はMacOS 10.15.3で、とりあえず途中でgccを入れ直したりしましたがやはり同じところでコケます。
Mac上で #pragma once が機能するように環境を設定するにはどうしたら良いでしょうか。
よろしくお願い致します。
とりあえずC++っぽいので分かる方がいたら教えてください。
とあるライブラリのビルドスクリプトを叩いたところ以下のようなエラーが出ました。
```
略/filesystem.hpp:784:13: error: no member named 'make_absolute' in 'std::__1::__fs::filesystem::path'
略
```
ファイル名からC++のコンパイルに失敗しているようなのでした。
普段は別の言語を触っておりC++は触ったことがありません。
調べた限り、ヘッダの二重読み込みでエラーになっているとのことでしたが
該当の `filesystem.hpp` には #pragma once が宣言されています。
環境はMacOS 10.15.3で、とりあえず途中でgccを入れ直したりしましたがやはり同じところでコケます。
Mac上で #pragma once が機能するように環境を設定するにはどうしたら良いでしょうか。
よろしくお願い致します。
662661
2020/02/11(火) 18:13:22.88ID:poOKFhcK 貼り付けるエラー文言間違い得ました。
```
略/filesystem.hpp:52:9: error: redefinition of 'path'
略
```
です。
```
略/filesystem.hpp:52:9: error: redefinition of 'path'
略
```
です。
663デフォルトの名無しさん
2020/02/11(火) 18:30:48.12ID:GpQNLMm4 >>661-662
とあるライブラリとか言わずにそのライブラリを示して。
初心者はどんな情報が必要か判断する能力がないので、情報を選別してはいかん。
情報を小出しにされるとイライラゲージが上昇しやすいから、
状況を再現可能な情報を提示することを心掛けて。
とあるライブラリとか言わずにそのライブラリを示して。
初心者はどんな情報が必要か判断する能力がないので、情報を選別してはいかん。
情報を小出しにされるとイライラゲージが上昇しやすいから、
状況を再現可能な情報を提示することを心掛けて。
664デフォルトの名無しさん
2020/02/11(火) 18:38:14.46ID:poOKFhcK >> 663
すみません、おっしゃる通りですね。
このライブラリのインストールになります。
github.com/WonderMediaProductions/Maya2glTF
すみません、おっしゃる通りですね。
このライブラリのインストールになります。
github.com/WonderMediaProductions/Maya2glTF
665デフォルトの名無しさん
2020/02/26(水) 08:41:15.23ID:PiyizPRV アンカもマトモに撃てないってアホじぇねえのコイツ
666デフォルトの名無しさん
2020/02/26(水) 11:09:35.39ID:wiEfavJ1 見ないで答えるけど
include path の順番がまずいんじゃね
include path の順番がまずいんじゃね
667デフォルトの名無しさん
2020/02/27(木) 10:57:15.88ID:RXnANkEf -----sample.h (classAは変更不可)
class A
{ private: virtual void funcX(void) = 0;
public: void funcY(void);
public: void funcZ(void);
};
class B : private A {・・・};
-----
このような関係性で
classBでfuncXとfuncY(内部でfuncXを使用)が不要、funcZが必要な場合
funcXをclassBに追加せずに済む方法があればいいのですが
funcXもclassBに追加するしかないですか?
class A
{ private: virtual void funcX(void) = 0;
public: void funcY(void);
public: void funcZ(void);
};
class B : private A {・・・};
-----
このような関係性で
classBでfuncXとfuncY(内部でfuncXを使用)が不要、funcZが必要な場合
funcXをclassBに追加せずに済む方法があればいいのですが
funcXもclassBに追加するしかないですか?
668デフォルトの名無しさん
2020/02/27(木) 11:17:47.73ID:R9m18Hk4 追加ってのがvtblに追加って意味ならそうだよ
669デフォルトの名無しさん
2020/02/27(木) 11:55:46.48ID:RX8iJBd3 継承しなければいい
670デフォルトの名無しさん
2020/02/27(木) 13:04:34.75ID:RXnANkEf671デフォルトの名無しさん
2020/02/27(木) 15:19:56.24ID:G6pyHvdg Icon とか継承したクラス造ろうとしたら protected 観たいなエラー出るのですが
無理やり継承する方法はありますか?
無理やり継承する方法はありますか?
672デフォルトの名無しさん
2020/02/27(木) 21:56:32.66ID:nCyLO+2A Ruby では、Forwardable モジュールで、
継承ではなく、包含を使って、インスタンス変数に委譲できる
使えるメソッドも、限定できる。
配列のメソッド中、指定した2つのメソッドだけが使える
@ary = [ ]
def_delegators( :@ary, :push, :pop )
継承ではなく、包含を使って、インスタンス変数に委譲できる
使えるメソッドも、限定できる。
配列のメソッド中、指定した2つのメソッドだけが使える
@ary = [ ]
def_delegators( :@ary, :push, :pop )
673デフォルトの名無しさん
2020/02/27(木) 22:15:25.36ID:IR/jNZBp 組み込みプログラマになりたいんだけどオススメの本とかあったら教えてください
674デフォルトの名無しさん
2020/02/27(木) 22:20:30.25ID:dsi+r0l9 組み込みって言っちゃうと範囲が相当広いと思うんだけど具体的に何か目指してるのとかあるの?
675デフォルトの名無しさん
2020/02/27(木) 22:22:34.36ID:IR/jNZBp 機械メーカーで製造やってるんどけどいつか組み込みシステムの部署に行きたいのです
676デフォルトの名無しさん
2020/02/27(木) 22:28:28.18ID:IR/jNZBp C言語は学生の頃少しやった程度ですが、苦Cや新明解C言語などの本で勉強し直しているところ
677デフォルトの名無しさん
2020/02/27(木) 22:31:05.04ID:nCyLO+2A 組み込みは、C
情報処理資格・エンベデッドの教科書を読めば?
情報処理資格・エンベデッドの教科書を読めば?
678デフォルトの名無しさん
2020/02/27(木) 22:33:26.60ID:IR/jNZBp >>677
いきなり難易度が高そうだ…
いきなり難易度が高そうだ…
679デフォルトの名無しさん
2020/02/27(木) 22:44:47.37ID:R9m18Hk4680デフォルトの名無しさん
2020/02/27(木) 23:05:06.65ID:IR/jNZBp >>679
29歳は若手ですか?
29歳は若手ですか?
681デフォルトの名無しさん
2020/02/27(木) 23:12:49.02ID:R9m18Hk4 >>680
転職で考えればまだポテンシャルで採ってもらえる年齢
まぁ30前半までだと思うけど
企業文化にもよるけど可能性はあるんじゃない?
だめもとでいってみて、ダメでもそれが将来のコネになるかもしれないのだから
情熱あるなら動いてみるのが正解だと思うよ
転職で考えればまだポテンシャルで採ってもらえる年齢
まぁ30前半までだと思うけど
企業文化にもよるけど可能性はあるんじゃない?
だめもとでいってみて、ダメでもそれが将来のコネになるかもしれないのだから
情熱あるなら動いてみるのが正解だと思うよ
682デフォルトの名無しさん
2020/02/27(木) 23:19:52.21ID:IR/jNZBp683デフォルトの名無しさん
2020/02/27(木) 23:24:42.92ID:dsi+r0l9 異動先の想定があるなら異動先の人間に聞くのが一番良いんじゃないかな?
話できる機会を作ってもらえるならポテンシャルやモチベーションを見せるチャンスにもなるし
組み込みって業種や企業で文化がだいぶ違うイメージだから自社内異動想定なら自社に目標合わせるのが一番だと思う
話できる機会を作ってもらえるならポテンシャルやモチベーションを見せるチャンスにもなるし
組み込みって業種や企業で文化がだいぶ違うイメージだから自社内異動想定なら自社に目標合わせるのが一番だと思う
684デフォルトの名無しさん
2020/02/27(木) 23:29:18.61ID:IR/jNZBp >>683
聞いたことあるんだけど、プログラミングできなくても設計書読めたらなんとかなりますよーって言われたなぁ。
聞いたことあるんだけど、プログラミングできなくても設計書読めたらなんとかなりますよーって言われたなぁ。
685デフォルトの名無しさん
2020/02/27(木) 23:30:08.12ID:DhCS2IXf686デフォルトの名無しさん
2020/02/27(木) 23:43:07.61ID:dsi+r0l9 >>684
個人的にはプログラミング的なことなんざ実務やってりゃ嫌でも身につくんでそんな気にしない
素養とか基礎知識はあったほうがそりゃいいけどね
どれくらい部署間の関係性が強いかわからんが他部署出身者はその部門のことをケアした提案とかができるからむしろ重宝するくらい
やる気ある人間にやらせたほうが結果的に効率上がるからそういうのは積極的に対応する
まぁとは言っても企業文化次第ではあるけどねー
個人的にはプログラミング的なことなんざ実務やってりゃ嫌でも身につくんでそんな気にしない
素養とか基礎知識はあったほうがそりゃいいけどね
どれくらい部署間の関係性が強いかわからんが他部署出身者はその部門のことをケアした提案とかができるからむしろ重宝するくらい
やる気ある人間にやらせたほうが結果的に効率上がるからそういうのは積極的に対応する
まぁとは言っても企業文化次第ではあるけどねー
687デフォルトの名無しさん
2020/02/28(金) 00:06:09.61ID:bgqQewMR >>682
勉強するのはもちろん構わない
でもしっかり勉強してから異動とか思ってたら機を逃すから注意ね
上でも言ってるとおり組み込みといっても千差万別で幅広い
組み込みlinuxかRTOSかぐらいは絞らないと
勉強するのはもちろん構わない
でもしっかり勉強してから異動とか思ってたら機を逃すから注意ね
上でも言ってるとおり組み込みといっても千差万別で幅広い
組み込みlinuxかRTOSかぐらいは絞らないと
688デフォルトの名無しさん
2020/02/28(金) 10:20:28.68ID:OpAeM4nJ PLC も組み込み系かな?
689デフォルトの名無しさん
2020/02/28(金) 23:31:02.28ID:KhVuQUrV float型からdouble型にキャストした際に値が変わってしまうのですが、一般にどうやって対処するのでしょうか。
float f4_sample_t =0.0002;
double f8_sample_t = (double)f4_sample_t;
とすると、0.0002を期待するのですが0.000199****となります。
↓のように、してみましたが0.00199**となってしまいました。
f8_sample_t=(double)((uint)(f4_sample_t*10000))/10000;
float f4_sample_t =0.0002;
double f8_sample_t = (double)f4_sample_t;
とすると、0.0002を期待するのですが0.000199****となります。
↓のように、してみましたが0.00199**となってしまいました。
f8_sample_t=(double)((uint)(f4_sample_t*10000))/10000;
690デフォルトの名無しさん
2020/02/28(金) 23:53:01.56ID:bgqQewMR >>689
簡単に言うと浮動小数の中身は2進数の小数
なのでもともと0.0002を正確に表せない
表示する際に人にわかりやすくするために10進数の小数に変換するが
そのとき何桁まで計算するかで変わってるように見える
簡単に言うと浮動小数の中身は2進数の小数
なのでもともと0.0002を正確に表せない
表示する際に人にわかりやすくするために10進数の小数に変換するが
そのとき何桁まで計算するかで変わってるように見える
691デフォルトの名無しさん
2020/02/29(土) 00:56:43.52ID:WzbNfV7+ 0.0002 は循環小数だなぁ。
十進数ではキリのよい小数でも二進数では正確に表せないのはよくあること。
誤差はあるものだという考えで扱わないといけない。
一般には double の仮数部は 52bit の精度だから、この精度の範囲を超えるような (浮動小数点の) 計算は諦めるしかない。
https://ja.wikipedia.org/wiki/%E5%80%8D%E7%B2%BE%E5%BA%A6%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0
そんでもって計算の内容次第では精度が失われることがあるから、そこらへんも注意が必要。
https://ja.wikipedia.org/wiki/%E8%AA%A4%E5%B7%AE#%E8%A8%88%E7%AE%97%E8%AA%A4%E5%B7%AE%E3%81%AE%E7%A8%AE%E9%A1%9E
どうやれば出来るという簡単なものではないのでちゃんとした専門書で学ばないといけないと思う。
浮動小数点で計算するのは諦めて速度も諦めるなら
十進小数ライブラリを作るか導入してもいいだろうし、
計算の内容によっては有理数型を導入するとか
まあ出来ることは色々とあるよ。
十進数ではキリのよい小数でも二進数では正確に表せないのはよくあること。
誤差はあるものだという考えで扱わないといけない。
一般には double の仮数部は 52bit の精度だから、この精度の範囲を超えるような (浮動小数点の) 計算は諦めるしかない。
https://ja.wikipedia.org/wiki/%E5%80%8D%E7%B2%BE%E5%BA%A6%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0
そんでもって計算の内容次第では精度が失われることがあるから、そこらへんも注意が必要。
https://ja.wikipedia.org/wiki/%E8%AA%A4%E5%B7%AE#%E8%A8%88%E7%AE%97%E8%AA%A4%E5%B7%AE%E3%81%AE%E7%A8%AE%E9%A1%9E
どうやれば出来るという簡単なものではないのでちゃんとした専門書で学ばないといけないと思う。
浮動小数点で計算するのは諦めて速度も諦めるなら
十進小数ライブラリを作るか導入してもいいだろうし、
計算の内容によっては有理数型を導入するとか
まあ出来ることは色々とあるよ。
692蟻人間 ◆T6xkBnTXz7B0
2020/02/29(土) 02:50:21.96ID:/KNqnMc5 固定小数点数や十進表現の選択肢もある。
693デフォルトの名無しさん
2020/02/29(土) 07:16:56.84ID:a4Xwg1lT floatからdoubleへの変換では値は変わらない
694デフォルトの名無しさん
2020/02/29(土) 08:19:49.16ID:WjxTYPok >>690-693
ありがとうございます。
現時点では理解できてないのですが、厳密に表現出来ない値があるという認識で良いでしょうか。
宣言時にdoubleで0.0002とする場合はその後の積和演算の誤差が問題にならないのですが、こちらの制約上でfloat入力しかできないのでキャストしています。
ありがとうございます。
現時点では理解できてないのですが、厳密に表現出来ない値があるという認識で良いでしょうか。
宣言時にdoubleで0.0002とする場合はその後の積和演算の誤差が問題にならないのですが、こちらの制約上でfloat入力しかできないのでキャストしています。
695デフォルトの名無しさん
2020/02/29(土) 08:23:33.95ID:a4Xwg1lT 厳密に表現出来ない値があるのは当たり前
floatやdoubleで表現出来る値は有限通りなんだから
floatやdoubleで表現出来る値は有限通りなんだから
696デフォルトの名無しさん
2020/02/29(土) 08:32:37.79ID:a4Xwg1lT floatの中身が元々10進数で簡単に表せる数という事がわかってるなら
doubleにするときに単純なキャストではなく
そういう補正を加えれば良い
10進7桁までならdouble精度に復元出来る
doubleにするときに単純なキャストではなく
そういう補正を加えれば良い
10進7桁までならdouble精度に復元出来る
698デフォルトの名無しさん
2020/02/29(土) 17:13:36.11ID:VpO1O9GW699デフォルトの名無しさん
2020/02/29(土) 23:21:10.14ID:6IdZMwnf 浮動小数点は、非連続・飛び飛び。
数値の間が、ものすごく小さいこともあるし、大きい事もある
よく起こるバグは、ソフト・サーバーなどは、連続して3日しか動かないというもの
float に、1ずつ足していくと、3日後には数値間が、1以上になって足せなくなる。
組み込みプログラマーは、こういう基礎的なことを、知らない香具師が多いw
しかも発見するのに、3日も掛かるから、テストで発見できないので、こういう製品が多いw
数値の間が、ものすごく小さいこともあるし、大きい事もある
よく起こるバグは、ソフト・サーバーなどは、連続して3日しか動かないというもの
float に、1ずつ足していくと、3日後には数値間が、1以上になって足せなくなる。
組み込みプログラマーは、こういう基礎的なことを、知らない香具師が多いw
しかも発見するのに、3日も掛かるから、テストで発見できないので、こういう製品が多いw
>>699
えーと、組み込みの人なら、そもそも float/double は昔は劇的に遅かったという名残があって最初から float/double を使わないんじゃないかな?
最近はそうじゃないのですか?
えーと、組み込みの人なら、そもそも float/double は昔は劇的に遅かったという名残があって最初から float/double を使わないんじゃないかな?
最近はそうじゃないのですか?
701デフォルトの名無しさん
2020/02/29(土) 23:38:03.03ID:wnKEWZ56 >>700
老害ですか?
老害ですか?
702デフォルトの名無しさん
2020/02/29(土) 23:50:06.95ID:uIzTDUXo 組み込みを一括りにしてる奴は見識が狭い井の中の蛙
704デフォルトの名無しさん
2020/03/01(日) 00:15:22.67ID:QmxFkZ5G 1ずつ足していく単純なカウンターにfloatを選ぶヤツがいるとも思えんが
組み込みだと特に
組み込みだと特に
705デフォルトの名無しさん
2020/03/01(日) 00:23:59.37ID:2kmwzB0g707デフォルトの名無しさん
2020/03/01(日) 13:19:26.60ID:WMkrI5AG 706
https://www.尼損.co.jp/dp/B00QR4JST2
https://www.尼損.co.jp/dp/B00QR4JST2
708デフォルトの名無しさん
2020/03/01(日) 22:54:47.39ID:NSpMdQYF たのしいRuby 第6版
Ruby 2.6 対応で、ベストセラー本
Ruby 2.6 対応で、ベストセラー本
709デフォルトの名無しさん
2020/03/03(火) 21:55:05.15ID:jgFG2YH5 >>708
トイレットペーパー代わりに良いね
トイレットペーパー代わりに良いね
710デフォルトの名無しさん
2020/03/04(水) 09:42:13.15ID:hHbt2ovK マスゴミもトイペ買えずに困ってる一般庶民(それもあやしいが)の家訪問して
もうこの一本しかないの?今日一日持たない!とか取材してる暇あったら
本社ビルの在庫数本でも持って行って渡してやればいいんだよ
災害報道のときもいつも思うわ
マスゴミが本気で心配するなら新聞紙で尻ふけばいいとか本当の事言えば良いのにな
もうこの一本しかないの?今日一日持たない!とか取材してる暇あったら
本社ビルの在庫数本でも持って行って渡してやればいいんだよ
災害報道のときもいつも思うわ
マスゴミが本気で心配するなら新聞紙で尻ふけばいいとか本当の事言えば良いのにな
711デフォルトの名無しさん
2020/03/04(水) 09:46:49.16ID:+mh63BBw まずお前がやってから言え
712デフォルトの名無しさん
2020/03/04(水) 10:55:34.93ID:3tlRzDBf こんだけ災害の多い日本で備蓄なしのやつって頭悪すぎでしょ
713デフォルトの名無しさん
2020/03/05(木) 04:17:48.51ID:E3z3OjjV 自作クラスのインスタンスを大量に作成したのち破棄したのですが、Linuxのtopコマンドで見ると
メモリを掴んだままでどれだけ待っても解放してくれません。これはいわゆるメモリリークでしょうか?
作成したインスタンスのデストラクタが全て走っていることはプリント文をかまして確認してますが、
「デストラクタが走ったからそのインスタンスのメモリは解放される」と思うのは間違いでしょうか?
メモリを掴んだままでどれだけ待っても解放してくれません。これはいわゆるメモリリークでしょうか?
作成したインスタンスのデストラクタが全て走っていることはプリント文をかまして確認してますが、
「デストラクタが走ったからそのインスタンスのメモリは解放される」と思うのは間違いでしょうか?
714デフォルトの名無しさん
2020/03/05(木) 06:42:53.16ID:cV+8pcak >>713
そのプログラムは動きつづけてるのかな。
プロセスが生きてるなら、そのプロセス自身で再利用できるように
OSに返さないで、と言うかOSが取り戻さないで残してることはあるでしょ。
いよいよ他のプロセスで使うメモリが減ってきたところで
「あのプロセスから返却されたメモリがあったはず」と
OSが本当に取り立てる、と。
変な擬人化をした、厳密とは言い難い説明だけど。
そのプログラムは動きつづけてるのかな。
プロセスが生きてるなら、そのプロセス自身で再利用できるように
OSに返さないで、と言うかOSが取り戻さないで残してることはあるでしょ。
いよいよ他のプロセスで使うメモリが減ってきたところで
「あのプロセスから返却されたメモリがあったはず」と
OSが本当に取り立てる、と。
変な擬人化をした、厳密とは言い難い説明だけど。
715デフォルトの名無しさん
2020/03/05(木) 06:44:44.35ID:zdEofaoY 本当にリークだったりして
716デフォルトの名無しさん
2020/03/05(木) 10:32:20.81ID:ZZWMeQXX >>714
プログラムは全インスタンス解放後にstd::chrono::secondsでスリープかけていて
2GBほど掴んだメモリが半日経ってもそのままでした
こういうのもシステム起因の挙動なのでしょうか?
プログラムは全インスタンス解放後にstd::chrono::secondsでスリープかけていて
2GBほど掴んだメモリが半日経ってもそのままでした
こういうのもシステム起因の挙動なのでしょうか?
717デフォルトの名無しさん
2020/03/05(木) 11:03:11.50ID:2gUuzrSw718デフォルトの名無しさん
2020/03/05(木) 13:46:12.81ID:866E1Ujc 他のプログラムで多量に確保してみれば?
719デフォルトの名無しさん
2020/03/05(木) 14:55:04.52ID:LYrzkUWd720デフォルトの名無しさん
2020/03/05(木) 16:41:49.18ID:ZZWMeQXX721デフォルトの名無しさん
2020/03/05(木) 17:13:53.55ID:ywFWHxIm OSからのリクエストと返却はコスト高だから
ランタイムのアロケーターが握ったままでOSには返さない
OSへ返すタイミングはプロセスが終わるとき、という実装は割りとありえそう
ランタイムのアロケーターが握ったままでOSには返さない
OSへ返すタイミングはプロセスが終わるとき、という実装は割りとありえそう
722デフォルトの名無しさん
2020/03/05(木) 18:22:39.16ID:ZZWMeQXX お礼を言うのを忘れてました
回答くれた方ありがとうございました
回答くれた方ありがとうございました
723デフォルトの名無しさん
2020/03/05(木) 18:46:09.59ID:LYrzkUWd725デフォルトの名無しさん
2020/03/06(金) 23:01:27.31ID:+gnSZkOM CとC++ってなんで一緒にされていることが多いの?
726デフォルトの名無しさん
2020/03/07(土) 00:18:58.16ID:OUVuA7Mu 一緒に使うことが多いから
じゃね?
じゃね?
727デフォルトの名無しさん
2020/03/07(土) 08:11:04.10ID:bdrHDbLb 他の言語同士に比べて類似してる部分が多いだけに、
Cでの動作はこう、しかしC++では違う、みたいな情報の有用性が高いから、かも。
少なくとも、こういう質問と回答のようなスレッドでは。
Cでの動作はこう、しかしC++では違う、みたいな情報の有用性が高いから、かも。
少なくとも、こういう質問と回答のようなスレッドでは。
728デフォルトの名無しさん
2020/03/07(土) 08:55:37.01ID:gWhxXX2s ならC言語勉強するならC++もやれってことか?
729デフォルトの名無しさん
2020/03/07(土) 10:45:02.41ID:XLWmxUUx c++の方ではcとの互換性を大きな要素として挙げてるからな。
元々cの前処理での言語拡張が始まりだし。
cの方はもう切り離して一緒にされたくないだろうが。
元々cの前処理での言語拡張が始まりだし。
cの方はもう切り離して一緒にされたくないだろうが。
730デフォルトの名無しさん
2020/03/07(土) 16:29:47.82ID:jUFqUInS C が C++ との非互換を最小限にするってのは大きな方針になってるよ。
少なくとも C99 の時点では。
http://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf#page=11
ただし「C を C++ にしたいわけではない」みたいな文言もある。
C2X のドラフトを見る限りでも C++ に追従すると取れる変更は結構ある。
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n2478.pdf
C++ を使う上で改めて C を学ぶ必要はないが、
仕様としてはつかず離れずを維持し続けるのは C の側も是としている。
少なくとも C99 の時点では。
http://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf#page=11
ただし「C を C++ にしたいわけではない」みたいな文言もある。
C2X のドラフトを見る限りでも C++ に追従すると取れる変更は結構ある。
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n2478.pdf
C++ を使う上で改めて C を学ぶ必要はないが、
仕様としてはつかず離れずを維持し続けるのは C の側も是としている。
731デフォルトの名無しさん
2020/03/07(土) 16:53:11.21ID:wgBH55a3 いや、コンストラクタやデストラクタが暗黙で動く時点で全然違う言語でしょ。。
解釈を 2、3層入れてやっと表面上は同じように動くみたいな状況なわけでさ。
その辺誤魔化すからロクでもないことが起きるんだよ。
解釈を 2、3層入れてやっと表面上は同じように動くみたいな状況なわけでさ。
その辺誤魔化すからロクでもないことが起きるんだよ。
732デフォルトの名無しさん
2020/03/07(土) 17:26:14.19ID:jUFqUInS733デフォルトの名無しさん
2020/03/07(土) 18:33:23.15ID:RZgTMQsN734デフォルトの名無しさん
2020/03/07(土) 18:38:46.76ID:RZgTMQsN C++2017の電子本が無料らしい
Embarcaderoからメール来た
Embarcaderoからメール来た
735デフォルトの名無しさん
2020/03/07(土) 20:21:56.03ID:V3yrok8D Cから始めてC++に移行した時は
クラス・継承(仮想関数)・例外・new,deleteをもっと早く知りたかったわ
クラス・継承(仮想関数)・例外・new,deleteをもっと早く知りたかったわ
736デフォルトの名無しさん
2020/03/08(日) 06:17:37.40ID:OioMZJ5n =0
737デフォルトの名無しさん
2020/03/10(火) 21:03:25.71ID:4I7RYXwm 組み込みシステム部に転属したくてC言語の勉強してたんだけど、使ってる言語はC++とJAVAって聞いて萎えてる。
738デフォルトの名無しさん
2020/03/10(火) 21:27:52.91ID:ez/DBx9r それならCそんな無駄じゃないような
739デフォルトの名無しさん
2020/03/10(火) 21:35:56.80ID:3+CC2Qsy C言語が出来るってのが最低条件なんだろう
ついでにその部署には「この門をくぐる者は一切の希望を捨てよ」とか書いてないか?
ついでにその部署には「この門をくぐる者は一切の希望を捨てよ」とか書いてないか?
740デフォルトの名無しさん
2020/03/10(火) 21:38:36.13ID:4I7RYXwm741デフォルトの名無しさん
2020/03/10(火) 21:39:52.01ID:ez/DBx9r まあ確かに、例えば変数の宣言がいちいちスコープの最初とか今更考えられんな
742デフォルトの名無しさん
2020/03/10(火) 21:40:37.65ID:4I7RYXwm JAVAとC++ならどっちからやるべきなのだろうか
743デフォルトの名無しさん
2020/03/10(火) 21:47:57.73ID:3+CC2Qsy 一か月でJavaをやりその次の一か月はC++をやる
さらに5月からはもう一度Javaをやって六月からはC++をやる
そして7月にはC言語をやる
さらに5月からはもう一度Javaをやって六月からはC++をやる
そして7月にはC言語をやる
744デフォルトの名無しさん
2020/03/10(火) 21:50:37.20ID:808QYtU8 >>742
両方書いている者としては、java は virtual 付きで、C++ なら p = new XXX, p->property, p->method() と書く気持ちと思想で p.property, p.method() と書いておれば間違いないです
それと、コンストラクタの書き方、基底クラスの呼びかたは毎回お手本をみています
両方同時にやって混乱するようではセンスを疑います
両方書いている者としては、java は virtual 付きで、C++ なら p = new XXX, p->property, p->method() と書く気持ちと思想で p.property, p.method() と書いておれば間違いないです
それと、コンストラクタの書き方、基底クラスの呼びかたは毎回お手本をみています
両方同時にやって混乱するようではセンスを疑います
746デフォルトの名無しさん
2020/03/10(火) 21:59:27.15ID:EBgJJlCp C++対応してるプロゲートみたいなサイトってないの?
747デフォルトの名無しさん
2020/03/10(火) 22:01:39.03ID:rLdwFfVF 俺、変数宣言は関数の頭じゃないとコンパイル通らない環境なんだがw
GUIつうかOSからして無いんだがw
組み込みってひとまとめに言っても範囲広すぎるからもう少し具体的な情報無いとアドバイスしづらいよね
GUIつうかOSからして無いんだがw
組み込みってひとまとめに言っても範囲広すぎるからもう少し具体的な情報無いとアドバイスしづらいよね
748デフォルトの名無しさん
2020/03/10(火) 22:07:13.07ID:3+CC2Qsy 相互参照がかんたんな方からやればいいんだよ
749デフォルトの名無しさん
2020/03/10(火) 22:18:40.36ID:HIU8QCM9 >>747
C99 に対応してないコンパイラってことか。
理屈の上では実際のメモリの確保は関数の頭にまとめてしまえばいいから
実行時のリソースが限られていても関係なく出来るはずなんだが、
マイナーな環境だとコンパイラもまともなものがなかったりするんだよな……。
C99 に対応してないコンパイラってことか。
理屈の上では実際のメモリの確保は関数の頭にまとめてしまえばいいから
実行時のリソースが限られていても関係なく出来るはずなんだが、
マイナーな環境だとコンパイラもまともなものがなかったりするんだよな……。
750デフォルトの名無しさん
2020/03/10(火) 22:20:49.11ID:808QYtU8 >>743
おれとしてはc++から始めることをおすすめするな
javaから入るとc++でもjavaの作り方をずっと引きずる
そういう人数多く見てる
それだと組み込みでつらい場合が考えられる
ただしc++極めるのはまず無理なので
適当なところで打ち切る必要はある
おれとしてはc++から始めることをおすすめするな
javaから入るとc++でもjavaの作り方をずっと引きずる
そういう人数多く見てる
それだと組み込みでつらい場合が考えられる
ただしc++極めるのはまず無理なので
適当なところで打ち切る必要はある
751デフォルトの名無しさん
2020/03/10(火) 22:22:24.15ID:EBgJJlCp C++勉強するなら江添亮のやつがいいのか?
>>751
かつては、旧版独習C++ でstd::string を再実装する練習問題に出会うまで黙々と読んでいくことを薦めていましたが、確かに今となっては旧版独習はC++が古過ぎるでしょうね
江添さんは、私も今読んでいる最中です、もう少ししたらお勧めできるかどうかわかるかと思います
かつては、旧版独習C++ でstd::string を再実装する練習問題に出会うまで黙々と読んでいくことを薦めていましたが、確かに今となっては旧版独習はC++が古過ぎるでしょうね
江添さんは、私も今読んでいる最中です、もう少ししたらお勧めできるかどうかわかるかと思います
753デフォルトの名無しさん
2020/03/10(火) 22:58:14.28ID:4I7RYXwm ありがとう
754デフォルトの名無しさん
2020/03/10(火) 23:02:41.52ID:rLdwFfVF >>749
コストのためにハードが固定化され、ハードが決まってるからCPUも固定でコンパイラもそれに依存
ハードの更新なんて5年に1回あるかどうかだし、更新されてもROM容量が16MBに増えました!程度とかだしねぇ
ツール類はPC上で動けばいいからそっち方面触ってないと技術的に取り残される
つっても未だにMFCで新規ツール作るような人もいるけどねw
まぁ業界によってはこんな組み込みだって居るんだよって程度で
コストのためにハードが固定化され、ハードが決まってるからCPUも固定でコンパイラもそれに依存
ハードの更新なんて5年に1回あるかどうかだし、更新されてもROM容量が16MBに増えました!程度とかだしねぇ
ツール類はPC上で動けばいいからそっち方面触ってないと技術的に取り残される
つっても未だにMFCで新規ツール作るような人もいるけどねw
まぁ業界によってはこんな組み込みだって居るんだよって程度で
755デフォルトの名無しさん
2020/03/10(火) 23:27:10.68ID:EBgJJlCp 江添亮VS柴田望洋
756デフォルトの名無しさん
2020/03/10(火) 23:41:21.31ID:HIU8QCM9 >>751
新しい仕様も考慮しているまともな C++ 入門書は少ないのでその中では十分に良いと思う。
紙でなくてよければ無料で読めるし、とりあえずこれで始めても損にはならんのじゃないかな。
https://ezoeryou.github.io/cpp-intro/
新しい仕様も考慮しているまともな C++ 入門書は少ないのでその中では十分に良いと思う。
紙でなくてよければ無料で読めるし、とりあえずこれで始めても損にはならんのじゃないかな。
https://ezoeryou.github.io/cpp-intro/
757デフォルトの名無しさん
2020/03/11(水) 00:14:52.72ID:EKM5ywjJ758デフォルトの名無しさん
2020/03/11(水) 00:27:33.10ID:FbH1Tm9+ >>757
それはひょっとして「江添亮の詳説C++17」と混同してない?
「江添亮のC++入門」は初心者が基本的なツール (make やコマンドライン) の使い方さえわかってないからってんで、
そのあたりから記述している上にクラスの継承を説明しないという思い切った簡略化をしてる本だぞ。
それはひょっとして「江添亮の詳説C++17」と混同してない?
「江添亮のC++入門」は初心者が基本的なツール (make やコマンドライン) の使い方さえわかってないからってんで、
そのあたりから記述している上にクラスの継承を説明しないという思い切った簡略化をしてる本だぞ。
759757
2020/03/11(水) 02:06:23.50ID:EKM5ywjJ C++11/14 コア言語、江添 亮、2015
この神の書と勘違いしたw
江添は、素人向けの本も、出しているのか
この神の書と勘違いしたw
江添は、素人向けの本も、出しているのか
760デフォルトの名無しさん
2020/03/11(水) 02:43:05.64ID:zwwCe0yv hageで安全靴履いてリュック背負ってると職務質問される的なスキルが身に着く
761デフォルトの名無しさん
2020/03/11(水) 09:42:39.53ID:QiiPQnMP 江添のあれ、糞本だろ。。
初心者はそんなとこでつまづかねーよってところにばかり無駄な記述を付け加えてるっていう。。
センスねーわ。
初心者はそんなとこでつまづかねーよってところにばかり無駄な記述を付け加えてるっていう。。
センスねーわ。
762デフォルトの名無しさん
2020/03/11(水) 10:20:19.09ID:f25IEtU6 炎上商法に釣られてると売り上げが伸びちゃいますよ?
763デフォルトの名無しさん
2020/03/11(水) 13:07:41.95ID:EKM5ywjJ 江添は職務質問で、大勢のポリ公に囲まれて、その場で監禁されたとかで、
今、警察を訴えているのだろ
警察はボーナスが欲しいから、誰でも犯人に仕立て上げるから、危険!
漏れも昔やられた。
パトカーに止められて、アルコール検知器に息を吐いても、ランプが点かなかったのに、
ポリ公がクルッと後ろを向くと、ランプが点いた!
何のことは無い。
そのポリ公が酔っ払いで、息を吹きかけていたw
後輩の若いポリ公も、グルだった
今、警察を訴えているのだろ
警察はボーナスが欲しいから、誰でも犯人に仕立て上げるから、危険!
漏れも昔やられた。
パトカーに止められて、アルコール検知器に息を吐いても、ランプが点かなかったのに、
ポリ公がクルッと後ろを向くと、ランプが点いた!
何のことは無い。
そのポリ公が酔っ払いで、息を吹きかけていたw
後輩の若いポリ公も、グルだった
764デフォルトの名無しさん
2020/03/11(水) 14:07:13.44ID:dMLI4DK7 知能低そう
765デフォルトの名無しさん
2020/03/29(日) 00:51:11.45ID:yk11UhYR 何を作ったら一番C++の勉強になるんだ?
766デフォルトの名無しさん
2020/03/29(日) 00:56:17.78ID:c4x4s1tb ビットマップ画像のファイルパスを入力したらそれにブラー処理を施して出力するコンソールアプリ
767デフォルトの名無しさん
2020/03/29(日) 01:24:25.56ID:GFdzppn9 C++使いのみなさんはC++以外だったら何の言語が好きなんですか
もしくは次何覚えたいですか
もしくは次何覚えたいですか
768デフォルトの名無しさん
2020/03/29(日) 01:40:31.93ID:6ELGM9SE >>767
GUIはC++でやるのつらいからC#をよく使う
GUIはC++でやるのつらいからC#をよく使う
769デフォルトの名無しさん
2020/03/29(日) 01:52:28.90ID:t2YV962W >>765
競技プログラムのクソコードのリファクタリング。
競技プログラムのクソコードのリファクタリング。
770デフォルトの名無しさん
2020/03/29(日) 02:37:01.61ID:tSgWoZoj 競技プログラミング界隈だと #include<bits/stdc++.h> とか using namespace std; が普通になってるのが本当に嫌なんだよな。
AtCoder がそれを推奨しているのは「そこでつっかえて先に進まないよりは良い (競技の上では問題ないことが多いし)」みたいな
ニュアンスだし、ちゃんと理解してちゃんと書くならそれに越したことはないはずなんだよ。
AtCoder がそれを推奨しているのは「そこでつっかえて先に進まないよりは良い (競技の上では問題ないことが多いし)」みたいな
ニュアンスだし、ちゃんと理解してちゃんと書くならそれに越したことはないはずなんだよ。
771はちみつ餃子 ◆8X2XSCHEME
2020/03/29(日) 02:53:17.00ID:tSgWoZoj772デフォルトの名無しさん
2020/03/29(日) 04:41:47.48ID:b/iWTQc8 そらトリップにSCHEMEいれてるぐらいやしの
773デフォルトの名無しさん
2020/03/29(日) 09:44:17.77ID:c4x4s1tb774デフォルトの名無しさん
2020/03/29(日) 10:05:56.36ID:vg0TAzW0 二重言語であり真顔で「わたくしはC言語を極めました」と言えるのが第一関門
775デフォルトの名無しさん
2020/03/29(日) 12:55:27.64ID:Kzf4aDfw776デフォルトの名無しさん
2020/03/29(日) 15:54:38.44ID:7B/pleQ/ >>765
そういう視点より自分が何を造りたいかを考えろ
そういう視点より自分が何を造りたいかを考えろ
777デフォルトの名無しさん
2020/03/29(日) 15:55:46.75ID:7B/pleQ/779デフォルトの名無しさん
2020/03/29(日) 18:35:29.30ID:Kzf4aDfw >>778
Javaのclasspath相当の機能をC++に移植したいということかね。
Javaのclasspath相当の機能をC++に移植したいということかね。
780デフォルトの名無しさん
2020/03/29(日) 20:08:59.77ID:GFdzppn9781デフォルトの名無しさん
2020/03/30(月) 14:36:39.18ID:cpVmKDV2 C/C++ で OpenGL とか Tck/Tk とかやるとオブジェクト指向ωの有難さωωが判るωωω
782デフォルトの名無しさん
2020/03/30(月) 19:25:06.14ID:Oymj8mf6 >>781
OpenGLが使いにくいという意味で言ってるなら、使いにくくなったのは OpenGL 2.0
以後に入った部分のみだ。
OpenGL 1.0 は非常に美しく人気が有った。
ところが、Direct3Dに対抗するためか、高速化やShaderの導入のために
2.0では非常に使いにくい方式を追加してしまった。
ややこしいのは、WebGL や OpenGL ES は、その 2.0 の部分だけをベースにしてしまったため、
美しい OpenGL 1.0 とは互換性が全く無い。
だから、WebGL や OpenGL ES から入った人は、OpenGLといえば、その使いにくい関数セット
の方しか知らないから、OpenGLは使いにくいと思ってしまっている。
OpenGLが使いにくいという意味で言ってるなら、使いにくくなったのは OpenGL 2.0
以後に入った部分のみだ。
OpenGL 1.0 は非常に美しく人気が有った。
ところが、Direct3Dに対抗するためか、高速化やShaderの導入のために
2.0では非常に使いにくい方式を追加してしまった。
ややこしいのは、WebGL や OpenGL ES は、その 2.0 の部分だけをベースにしてしまったため、
美しい OpenGL 1.0 とは互換性が全く無い。
だから、WebGL や OpenGL ES から入った人は、OpenGLといえば、その使いにくい関数セット
の方しか知らないから、OpenGLは使いにくいと思ってしまっている。
783デフォルトの名無しさん
2020/03/30(月) 20:57:38.25ID:3vRJi0Dq OpenGLって昔のやつは使いにくいぞ
784デフォルトの名無しさん
2020/03/31(火) 01:07:28.66ID:Yt3qMdaP >>783
逆、昔のが使い易いから人気が出て標準の座を勝ち取った。
当時、OpenGL は、3Dを凄くよく理解している人が設計したといわれていた。
ところが、OpenGL 2.0 は高速だが使いにくくされた。
逆、昔のが使い易いから人気が出て標準の座を勝ち取った。
当時、OpenGL は、3Dを凄くよく理解している人が設計したといわれていた。
ところが、OpenGL 2.0 は高速だが使いにくくされた。
785デフォルトの名無しさん
2020/03/31(火) 09:24:13.17ID:Ow5tuxOJ ハードウェアの種類が減ったんだよね。
その分だけ低レイヤまで踏み込ませても互換性が維持できる……
かと思いきや割とそうでもないな? みたいな闇が出来てしまった。
元から低レイヤを触る人にとってはハードウェアに近いところまで触れる方が使いやすいってのは
普通にあることなので、 API が綺麗なのが使いやすいというのは思い込み。
その人の経歴による。
その分だけ低レイヤまで踏み込ませても互換性が維持できる……
かと思いきや割とそうでもないな? みたいな闇が出来てしまった。
元から低レイヤを触る人にとってはハードウェアに近いところまで触れる方が使いやすいってのは
普通にあることなので、 API が綺麗なのが使いやすいというのは思い込み。
その人の経歴による。
786デフォルトの名無しさん
2020/03/31(火) 10:06:09.54ID:vx6/o4d4 例のRuby君のことだから、自分で理解的ないものは難しい、使いにくい、汚いと非難の対象にしているか、もしくはどこかで聞き齧った意見をそのまま受け売りで垂れ流すだけ。
いずれにせよ聞くに値しない。
いずれにせよ聞くに値しない。
787デフォルトの名無しさん
2020/03/31(火) 10:06:35.13ID:vx6/o4d4 理解的ない→理解できない
788デフォルトの名無しさん
2020/03/31(火) 15:44:37.42ID:uFliupP+ 機械工学部なんですが、授業で扱うレベルが初歩の初歩のみで
独学するにもどういうところから勉強すればいいのかわからず困っています
将来的にロボットを動かしたりするための知識を学ぶおすすめの教材とかありますか?
独学するにもどういうところから勉強すればいいのかわからず困っています
将来的にロボットを動かしたりするための知識を学ぶおすすめの教材とかありますか?
789デフォルトの名無しさん
2020/03/31(火) 16:11:50.19ID:uDSFrRRV 電気・電子板へgo!
790デフォルトの名無しさん
2020/03/31(火) 16:21:47.06ID:y4yBR0M3 >>788
Arduino
Arduino
791デフォルトの名無しさん
2020/03/31(火) 16:29:23.37ID:daGoeiYK792デフォルトの名無しさん
2020/03/31(火) 18:09:22.14ID:fXRU3fg2 >>785
いや、書き方に夜がOpenGL 2.0以後は初期設定だけで200行を超えるくらいある。
それに比べて、OpenGL 1.0は、最初、お決まりの数行の初期化のあとは、
glBegin();
glVertex3f(x1,y1,z1);
glVertex3f(x2,y2,z2);
glVertex3f(x3,y3,z3);
glEnd();
glFlush();
程度でポリゴンが1枚書ける。
このコードを見ればマニュアルを見なくてもなんとなくやってることが分かるだろう。
それと、行列計算がとても判りやすくできるようになっている。
いや、書き方に夜がOpenGL 2.0以後は初期設定だけで200行を超えるくらいある。
それに比べて、OpenGL 1.0は、最初、お決まりの数行の初期化のあとは、
glBegin();
glVertex3f(x1,y1,z1);
glVertex3f(x2,y2,z2);
glVertex3f(x3,y3,z3);
glEnd();
glFlush();
程度でポリゴンが1枚書ける。
このコードを見ればマニュアルを見なくてもなんとなくやってることが分かるだろう。
それと、行列計算がとても判りやすくできるようになっている。
793デフォルトの名無しさん
2020/03/31(火) 18:33:37.31ID:aMyLRkM9 hello world的なプログラムなら1.0が楽だが、まともなアプリやゲーム作ろうとしたら、一々頂点定義していくのは面倒なだけ
しかも性能落ちる
しかも性能落ちる
794デフォルトの名無しさん
2020/03/31(火) 18:36:35.46ID:chhHfIYK 一見簡単に見えるだけ
問題だらけのAPIデザインだよ
とにかくそんな遠い過去の技術どうでもいいから
問題だらけのAPIデザインだよ
とにかくそんな遠い過去の技術どうでもいいから
795デフォルトの名無しさん
2020/03/31(火) 18:46:15.18ID:fXRU3fg2 >>793
2.0 は初期化時の
glBindBuffer(), glBufferData(), gl.bufferSubData()
が特に難しい。
STATIC_DRAW, DYNAMIC_DRAW
の違いや、glBufferData(), bufferSubData() の違いとか。
2.0 は初期化時の
glBindBuffer(), glBufferData(), gl.bufferSubData()
が特に難しい。
STATIC_DRAW, DYNAMIC_DRAW
の違いや、glBufferData(), bufferSubData() の違いとか。
796デフォルトの名無しさん
2020/03/31(火) 18:50:55.69ID:fXRU3fg2 >>794
なら、あなたは何推しなの?
なら、あなたは何推しなの?
797デフォルトの名無しさん
2020/03/31(火) 18:55:52.92ID:Ow5tuxOJ >>792
お前は俺の言うことがわからないということがわかった。
お前は俺の言うことがわからないということがわかった。
798デフォルトの名無しさん
2020/03/31(火) 19:06:18.63ID:L/5UA51D htmlも昔の方が良かったって人なんだろうね
cssとか理解できないんだろう
cssとか理解できないんだろう
799デフォルトの名無しさん
2020/03/31(火) 19:12:17.41ID:chhHfIYK 使い物になるだけD3Dの方がまし
OpenGLは初期のAPIデザインひきずって最後までマルチスレッド対応できなかった
拡張性が高いとか言われてるけど
ベンダ依存多くて互換性なんかほとんど期待できない
初心者が一ヶ月学んで卒業するための
教育用の価値しかない
こんなのにしがみついてどうする
OpenGLは初期のAPIデザインひきずって最後までマルチスレッド対応できなかった
拡張性が高いとか言われてるけど
ベンダ依存多くて互換性なんかほとんど期待できない
初心者が一ヶ月学んで卒業するための
教育用の価値しかない
こんなのにしがみついてどうする
800デフォルトの名無しさん
2020/03/31(火) 20:05:53.51ID:BqWL8gxf ハゲドゥ
801デフォルトの名無しさん
2020/03/31(火) 20:19:39.98ID:Sf1iuZK0 >>792
glBegin/glEndがdeprecatedになって、VBOを使うようになってわかりにくい、という主張はわかるけど、
2.0だと初期設定だけで200行必要というのと1.0は初期化の後はglBegin/glEndでポリゴンが書けるというのは、
対応してないところを比較している気がしてしまう。
それに、GLFWなんかを使わずに素のOpenGL APIを使って初期化するなんてこと今どきある?
2.0になってややこしくなったのは、世界が複雑になったのだから仕方のないことだと思うんだけど。
OpenGLの一番良くないところは、ハンドラが引数になくて、操作されるコンテキストがどれかということが
見えない状態になってしまっていることじゃない?
glBegin/glEndがdeprecatedになって、VBOを使うようになってわかりにくい、という主張はわかるけど、
2.0だと初期設定だけで200行必要というのと1.0は初期化の後はglBegin/glEndでポリゴンが書けるというのは、
対応してないところを比較している気がしてしまう。
それに、GLFWなんかを使わずに素のOpenGL APIを使って初期化するなんてこと今どきある?
2.0になってややこしくなったのは、世界が複雑になったのだから仕方のないことだと思うんだけど。
OpenGLの一番良くないところは、ハンドラが引数になくて、操作されるコンテキストがどれかということが
見えない状態になってしまっていることじゃない?
802デフォルトの名無しさん
2020/03/31(火) 20:21:22.12ID:1hnfAhIg シェーダーとかなしで
グラフを書くだけの用途だから OpenGL1.0でごりおしだな
※ glBegin の対の glEnd を忘れて頂点バッファ漏らすのを ラッパークラスで回避する程度
グラフを書くだけの用途だから OpenGL1.0でごりおしだな
※ glBegin の対の glEnd を忘れて頂点バッファ漏らすのを ラッパークラスで回避する程度
803デフォルトの名無しさん
2020/03/31(火) 20:57:23.49ID:BqWL8gxf OpenGL 2.0 専用スレ
http://mevius.5ch.net/test/read.cgi/tech/1126268759/
http://mevius.5ch.net/test/read.cgi/tech/1126268759/
804デフォルトの名無しさん
2020/03/31(火) 21:29:07.74ID:l+T/nNRF GLFWなんて使うのは試作や使い捨てツールとかくらいだと思ってた。
805デフォルトの名無しさん
2020/03/31(火) 23:22:06.63ID:hFZHkIvl つーか昔はフレームバッファに書きこんだところにドットが表示されてすっきりしてわかりやすかった
今は全部GPUにふくざつなめいれいを送らないとドットひとつ打つのも大変だから昔のほうが良い
みたいな議論
今は全部GPUにふくざつなめいれいを送らないとドットひとつ打つのも大変だから昔のほうが良い
みたいな議論
806デフォルトの名無しさん
2020/03/31(火) 23:25:55.16ID:vx6/o4d4 できることが増えただけで今でも昔のやり方をしたいなら(それで事足りるなら)、昔ながらのやり方をすればいいだけだと思う
807デフォルトの名無しさん
2020/03/31(火) 23:28:34.45ID:L/5UA51D imx6でframebuffer上にcv::Mat作って直接弄ったら表示されたときはなんかすごく懐かしかったよ
808デフォルトの名無しさん
2020/04/01(水) 10:16:21.36ID:5VJq6KKK >>801
>OpenGLの一番良くないところは、ハンドラが引数になくて、操作されるコンテキストがどれかということが
>見えない状態になってしまっていることじゃない?
ほんそれ
python の matplotlib にも同じ違和感を感じる(重箱)
>OpenGLの一番良くないところは、ハンドラが引数になくて、操作されるコンテキストがどれかということが
>見えない状態になってしまっていることじゃない?
ほんそれ
python の matplotlib にも同じ違和感を感じる(重箱)
809デフォルトの名無しさん
2020/04/01(水) 10:18:19.76ID:5VJq6KKK >>804
オレオレルール上は glut までですね判ります
オレオレルール上は glut までですね判ります
810デフォルトの名無しさん
2020/04/01(水) 11:06:09.53ID:15FH3/nz811デフォルトの名無しさん
2020/04/01(水) 16:12:02.61ID:bFLEHtBu 教えてください。
三項演算子
auto a=1;//なんでもいい
a?return 0:return -1;
なんでコンパイルエラー?
三項演算子
auto a=1;//なんでもいい
a?return 0:return -1;
なんでコンパイルエラー?
812デフォルトの名無しさん
2020/04/01(水) 16:12:55.86ID:S74lm4t5 >>811
return は文であって式ではない。
return は文であって式ではない。
813デフォルトの名無しさん
2020/04/01(水) 16:13:30.82ID:x/Ef9YKS >>811
return は式じゃないから
return は式じゃないから
814デフォルトの名無しさん
2020/04/01(水) 16:14:38.38ID:9AsYpIKM あっ被った
なので解決策書いとく
return a ? 0 : -1;
なので解決策書いとく
return a ? 0 : -1;
815デフォルトの名無しさん
2020/04/01(水) 16:59:46.58ID:bFLEHtBu816デフォルトの名無しさん
2020/04/07(火) 22:24:30.92ID:lImlsKaR windows環境でC++のスタティックライブラリを作りたいんだけど、公開するシンボルを選択することって出来ます?
817デフォルトの名無しさん
2020/04/08(水) 00:42:54.04ID:kI16h2GK 無名の namespace でくるめば内部リンケージにはなるけど
818デフォルトの名無しさん
2020/04/08(水) 01:16:03.08ID:99j8EV3x なるほど 確かに消えるけどextern "C"付けると残りますね
819デフォルトの名無しさん
2020/04/08(水) 03:09:29.58ID:99j8EV3x すみません自己解決に至りました
820デフォルトの名無しさん
2020/04/08(水) 12:25:08.81ID:lWfV0IAd 公開する気が無いものまでexternしたらだめだぞ
821デフォルトの名無しさん
2020/05/24(日) 02:58:54.81ID:r6ib7Asn VC++からXboxゲームバーを起動するサンプルどこかにありませんか?
822デフォルトの名無しさん
2020/06/05(金) 12:29:34.52ID:BSWAx+xV C++頑張ります
宜しくお願いします
宜しくお願いします
823デフォルトの名無しさん
2020/06/12(金) 08:44:01.32ID:DgWPkv47 pow関数が遅いというのは今もそうで今後も変わらなさそうで
できるだけ使うべきではないですかね?
できるだけ使うべきではないですかね?
824デフォルトの名無しさん
2020/06/12(金) 09:22:33.18ID:M5MGuP1h >>823
何も前提条件を定めず「遅い」とか「使うべきか」とか議論しても無意味だよ。
例えば他の関数と比べて100倍遅い関数があったとして、それを使ったプログラムの実行が1msで終わるものなら、通常は別に問題ないだろう。
その遅い関数がどのくらいの回数呼ばれるのか(数回、数万回、数億回)、許容される時間はどれだけなのかによって異なってくる。
とりあえず使っとけ、問題が起こりうるケースならそのとき考える。
そもそもpow関数が必要ならそれを使うしかないんでないの? それに変わる同等な処理を自前で実装できるとは思えないから、powの頻度を減らした別のアルゴリズムを考えるか、同じ計算が繰り返し行われるなら覚えておくかするしかないと思う。
何も前提条件を定めず「遅い」とか「使うべきか」とか議論しても無意味だよ。
例えば他の関数と比べて100倍遅い関数があったとして、それを使ったプログラムの実行が1msで終わるものなら、通常は別に問題ないだろう。
その遅い関数がどのくらいの回数呼ばれるのか(数回、数万回、数億回)、許容される時間はどれだけなのかによって異なってくる。
とりあえず使っとけ、問題が起こりうるケースならそのとき考える。
そもそもpow関数が必要ならそれを使うしかないんでないの? それに変わる同等な処理を自前で実装できるとは思えないから、powの頻度を減らした別のアルゴリズムを考えるか、同じ計算が繰り返し行われるなら覚えておくかするしかないと思う。
825デフォルトの名無しさん
2020/06/12(金) 09:46:09.57ID:F8A7CVPb 元の式で数学的に最適化してしまえるケースは多い
何も考えずにコーディングだけしてると無駄な計算量が増える
何も考えずにコーディングだけしてると無駄な計算量が増える
826デフォルトの名無しさん
2020/06/12(金) 10:41:38.35ID:0Y8ikztI ホワイトボードで式の変形を何種類かやってテストくらいはしないとな
827デフォルトの名無しさん
2020/06/12(金) 10:49:20.19ID:6ZYMCXZR 整数回のべき乗なら最適化も可能だしこだわるならやってみればええ
でも数値演算ライブラリはFPU使って並列処理させてるだろ
わざわざCPU資源使って計算させるほどでもない
無駄なことして他の処理が遅くなることもあり得るからの
でも数値演算ライブラリはFPU使って並列処理させてるだろ
わざわざCPU資源使って計算させるほどでもない
無駄なことして他の処理が遅くなることもあり得るからの
828デフォルトの名無しさん
2020/06/12(金) 11:01:15.15ID:HKvMu5uJ >>823
pow(a,b)
aが同じ値でbのみ変わる事が多いなら
log(a) をとっておいて exp(log(a)*b) とする
取りうる値がわかっていて多くないなら
log(a)をテーブルにしておく
bが整数なら乗算や除算を組み合わせる
bが整数+0.5ならsqrtを組み合わせる
大量にpowを計算する必要があるなら
SIMDやGPUを使う
なと色々と工夫の余地はある
pow(a,b)
aが同じ値でbのみ変わる事が多いなら
log(a) をとっておいて exp(log(a)*b) とする
取りうる値がわかっていて多くないなら
log(a)をテーブルにしておく
bが整数なら乗算や除算を組み合わせる
bが整数+0.5ならsqrtを組み合わせる
大量にpowを計算する必要があるなら
SIMDやGPUを使う
なと色々と工夫の余地はある
829デフォルトの名無しさん
2020/06/12(金) 13:56:17.64ID:DgWPkv47 色々ありがとうございます
遅いので工夫しろというのが常識らしいですね
遅いので工夫しろというのが常識らしいですね
830デフォルトの名無しさん
2020/06/12(金) 15:22:14.47ID:IF4Iurnq いや、必要なら工夫しろ、必要なければ余計なことはするな、だろう。
831デフォルトの名無しさん
2020/06/12(金) 15:39:43.80ID:7ERtrFf+ 速い遅いは実際に書いてるコードの中での相対的なものによるから自分のコードで観測しろ ってことだ
832デフォルトの名無しさん
2020/06/12(金) 15:45:39.23ID:6Yfh5mGy すみません
他スレでJavaでdirectXやるにはCをやれといわれてココに来ました
CでdirectX出来るそうなので始めたいんですが
何をインストールすれば良いのですか?
Windows10Pro64bitですよろしくお願いします
他スレでJavaでdirectXやるにはCをやれといわれてココに来ました
CでdirectX出来るそうなので始めたいんですが
何をインストールすれば良いのですか?
Windows10Pro64bitですよろしくお願いします
833デフォルトの名無しさん
2020/06/12(金) 15:50:05.68ID:1pXOSbLZ Goスレ池
834デフォルトの名無しさん
2020/06/12(金) 15:58:02.47ID:6Yfh5mGy しっCじゃ出来ないのか、ウソつき
835デフォルトの名無しさん
2020/06/13(土) 04:51:37.44ID:JTDnVNgN ウソってことはないはずだけど、よう分からん。
DirectX のスレッドなら確実じゃないかな。
【C++】 DirectX初心者質問スレ Part41 【C】
https://mevius.5ch.net/test/read.cgi/tech/1521786252/
ってのが見つかった。たらい回しにするみたいで気が引けるが。
なお、そちらのスレッドは見てないので紹介が適切かも分からない。
DirectX のスレッドなら確実じゃないかな。
【C++】 DirectX初心者質問スレ Part41 【C】
https://mevius.5ch.net/test/read.cgi/tech/1521786252/
ってのが見つかった。たらい回しにするみたいで気が引けるが。
なお、そちらのスレッドは見てないので紹介が適切かも分からない。
836デフォルトの名無しさん
2020/06/13(土) 19:12:26.60ID:Q06gyfKt >>835
すみません
マルチプラットフォームで3Dやる言語には
JavaでCを呼び出してdirectXをいじるのではなく
UnityでJavaScript言語という結論にいたりました。
ありがとうございました。
すみません
マルチプラットフォームで3Dやる言語には
JavaでCを呼び出してdirectXをいじるのではなく
UnityでJavaScript言語という結論にいたりました。
ありがとうございました。
837デフォルトの名無しさん
2020/06/13(土) 20:09:07.19ID:yCAzSueK jsはもうサポート終了宣言してるからc#にしとこうな
838デフォルトの名無しさん
2020/06/13(土) 20:25:12.63ID:Q06gyfKt よくわからないですけど
Unityの内部で使う動作スクリプトがC♯記述一択で
ゲームパッド入力はDirectXのC++で
AndroidスマホのタッチイベントはJavaだし
書き出すときはWebGLだからJavaScriptに変換されるという事かな〜意味不明だ
Unityの内部で使う動作スクリプトがC♯記述一択で
ゲームパッド入力はDirectXのC++で
AndroidスマホのタッチイベントはJavaだし
書き出すときはWebGLだからJavaScriptに変換されるという事かな〜意味不明だ
839デフォルトの名無しさん
2020/06/14(日) 03:01:38.31ID:k9aaiAZC >>828
exp って pow よりどの程度速いの?
exp って pow よりどの程度速いの?
840デフォルトの名無しさん
2020/06/14(日) 06:59:24.45ID:fieD7Z6G powは内部的にはexp(log(a)*b)
当然環境次第だけど
おおよそ半分くらいかな
もちろんlog(a)のテーブル検索に時間がかかるようだと
素直にpowを使う
>>828は
powがパフォーマンスに影響を与えているという前提のチューニングの話で
ほとんどの場合はそんな事はないので
ほとんどの場合はそのままpowを使うべき
当然環境次第だけど
おおよそ半分くらいかな
もちろんlog(a)のテーブル検索に時間がかかるようだと
素直にpowを使う
>>828は
powがパフォーマンスに影響を与えているという前提のチューニングの話で
ほとんどの場合はそんな事はないので
ほとんどの場合はそのままpowを使うべき
841デフォルトの名無しさん
2020/06/14(日) 21:26:39.30ID:csFQf9Gf y = a * pow(x, 3.0) + b * pow(x, 2.0) + c * x + d;
って糞コードを見たことがある
って糞コードを見たことがある
842デフォルトの名無しさん
2020/06/14(日) 22:50:07.68ID:OziIXX0s そりゃ^演算子が使えないからクソコードに見える
843デフォルトの名無しさん
2020/06/14(日) 23:22:02.66ID:9pT3ELpf **「…」
844デフォルトの名無しさん
2020/06/14(日) 23:59:21.22ID:kf4Cc+ef ^は使えるだろ
845デフォルトの名無しさん
2020/06/15(月) 00:27:20.94ID:y+ohQOA8 速度、精度、見やすさ、コードサイズ、ライブラリ使用
全ての面で糞コード
pow(x,y)が電源ボタンxをy回押す
という別の関数だということは無いとして
全ての面で糞コード
pow(x,y)が電源ボタンxをy回押す
という別の関数だということは無いとして
846蟻人間 ◆T6xkBnTXz7B0
2020/06/15(月) 00:32:18.14ID:xMj5gyYr こうか?
y = ((a * x + b) * x + c) * x + d;
y = ((a * x + b) * x + c) * x + d;
847デフォルトの名無しさん
2020/06/15(月) 06:03:37.82ID:6Rk/ljNV 元の数学的な式を素直にコードに落とし込んだ感じはあるけどな。
「xの3乗」を「pow(x, 3.0)」と「x * x * x」との
どちらで書くのを自然に感じるかという話だが。
「xの3乗」を「pow(x, 3.0)」と「x * x * x」との
どちらで書くのを自然に感じるかという話だが。
848デフォルトの名無しさん
2020/06/15(月) 11:50:24.26ID:6B2IPoD1 クリティカルでないものならどう表記しようが別にどうでもいいがな
1億回計算したところで時間差は感じないだろうよ
んなことよりべき乗扱う上で大事なのは桁あふれと有効桁数の処理
必要精度のはっきり定義された科学計算用のライブラリ使ったほうがマシ
1億回計算したところで時間差は感じないだろうよ
んなことよりべき乗扱う上で大事なのは桁あふれと有効桁数の処理
必要精度のはっきり定義された科学計算用のライブラリ使ったほうがマシ
849デフォルトの名無しさん
2020/06/15(月) 12:09:05.38ID:XCtiekxI 精度的には加減乗算の方がはっきりしてる
普通は無限精度で求めた後に丸めたのと同じ値になる
つまり誤差最小
普通は無限精度で求めた後に丸めたのと同じ値になる
つまり誤差最小
850デフォルトの名無しさん
2020/06/15(月) 12:13:15.00ID:XCtiekxI クリティカルじゃないという前提はどこから?
851デフォルトの名無しさん
2020/06/15(月) 12:16:59.98ID:6B2IPoD1 >>849
たとえばJIS規格に則った計算方法てのもある
測定値を足し合わせるだけでも±有効桁/2を混ぜ込まなきゃならなかったり計算ごとに有効桁に丸めこまなきゃならなかったり
乗算の場合は有効桁を減らしたりとかまあいろいろ
無限精度で計算して最後に丸め込んだら×もらう仕組みになってたりする
たとえばJIS規格に則った計算方法てのもある
測定値を足し合わせるだけでも±有効桁/2を混ぜ込まなきゃならなかったり計算ごとに有効桁に丸めこまなきゃならなかったり
乗算の場合は有効桁を減らしたりとかまあいろいろ
無限精度で計算して最後に丸め込んだら×もらう仕組みになってたりする
852デフォルトの名無しさん
2020/06/15(月) 12:20:31.42ID:XCtiekxI 精度的にpowを使うことで解決することなど無いと思うが
853デフォルトの名無しさん
2020/06/15(月) 12:21:16.29ID:XCtiekxI >>841の件
854デフォルトの名無しさん
2020/06/15(月) 12:27:23.16ID:XCtiekxI powはライブラリや環境で結果が違う
855デフォルトの名無しさん
2020/06/15(月) 12:44:31.65ID:O39kdlr3 ポォーゥふみっドカンッ!
856デフォルトの名無しさん
2020/06/15(月) 13:24:20.56ID:iqqqiJ5Y >>841
y = ((a * x + b) * x + c) * x + d;
y = ((a * x + b) * x + c) * x + d;
857デフォルトの名無しさん
2020/06/15(月) 13:30:19.41ID:5rULqijg いわゆるスパコンなんかだと式の変形してがんばらずとも pow そのままで速かったりするのかな?
858デフォルトの名無しさん
2020/06/15(月) 19:10:25.34ID:aDRazGid ホーナー法か
名前を思い出せなくて難儀した
名前を思い出せなくて難儀した
859デフォルトの名無しさん
2020/06/16(火) 05:58:44.90ID:ehL8QS9+ c++使う理由ってなんですか?
2dゲームにおいてもc++が必要でしょうか?
2dゲームにおいてもc++が必要でしょうか?
860デフォルトの名無しさん
2020/06/16(火) 06:19:28.37ID:JnjsQYAt 普通の2dゲーム作るぐらいならluaとかでいいよ
861デフォルトの名無しさん
2020/06/16(火) 06:29:18.93ID:ehL8QS9+ ゲームと言うよりゲームエンジンでした
すみません
テクスチャの描写にすらC++は必要なのかなと
ポリゴンならもちろnC++一択でしょうけど
すみません
テクスチャの描写にすらC++は必要なのかなと
ポリゴンならもちろnC++一択でしょうけど
862デフォルトの名無しさん
2020/06/16(火) 06:41:12.27ID:MpRAah0t 必要=必ず要る
という意味なら答えは分かってそうな気がするが
別の意味ならもっと日本語をうまく使った方が良い
という意味なら答えは分かってそうな気がするが
別の意味ならもっと日本語をうまく使った方が良い
863デフォルトの名無しさん
2020/06/16(火) 06:57:03.76ID:5RaFaaPW 基幹部分の話ならC++使わずにCで書くって方向性もあるかも。
864デフォルトの名無しさん
2020/06/16(火) 07:13:44.64ID:ehL8QS9+ 可能かどうかで言えばテクスチャの描写はすべての言語でできると思います
ただRPGメーカーやウルフエディタはC++です
ここに理由はあるのかなと疑問に感じました
2dでもopenglなどを使うのですか?
ただRPGメーカーやウルフエディタはC++です
ここに理由はあるのかなと疑問に感じました
2dでもopenglなどを使うのですか?
865デフォルトの名無しさん
2020/06/16(火) 07:26:08.75ID:JnjsQYAt 奥の方では2dでも使ってるよ
今どきのコンピュータならインタプリタでも速度は足りるけどc++を使うのはまあそれが一般的で資産があるからだと思うよ
今どきのコンピュータならインタプリタでも速度は足りるけどc++を使うのはまあそれが一般的で資産があるからだと思うよ
866デフォルトの名無しさん
2020/06/16(火) 07:32:04.70ID:Z1WD1bfY 足りるかどうかなんて処理次第
867デフォルトの名無しさん
2020/06/16(火) 07:37:01.12ID:1BidYCqI GUIのOS画面「🐴🦌🦋」
CUIのOS画面「AAA」
CUIのOS画面「AAA」
868デフォルトの名無しさん
2020/06/16(火) 08:00:15.69ID:TW5yPVrb ライフゲーム「•|•/•-•\•|•/•-•\」
7行テトリス
7行オセロ
10行ぷよぷよ
はじめてのゲームプログラム「荷物君」
7行テトリス
7行オセロ
10行ぷよぷよ
はじめてのゲームプログラム「荷物君」
869デフォルトの名無しさん
2020/06/16(火) 08:42:43.37ID:6qjQ65l0 >>867
絵文字に猪って無いんだっけ?
絵文字に猪って無いんだっけ?
870デフォルトの名無しさん
2020/06/16(火) 09:08:39.67ID:6qjQ65l0 >>864
RPGメーカーもウルフエディタもさわったこと無いけど、RPGツクールみたいなものでしゅ。つまりただの2Dゲームではなく、ユーザが作成した(場合によっては膨大な大きさの)データを編集するツールと、そのデータを読み込んで処理しながら2D RPGとして動かすプレイヤ(仮想ゲーム機)のセットみたいなもの。
ただの2Dの描画ならマシン性能は大して求められないけど、膨大なデータを効率的に保持して動的な変更に耐えうるような仕組みを作るなら、処理速度が速くメモリ効率も良いC++を使うメリットはあると思う。特にスイッチや変数、イベントなどをユーザが定義して処理するなら、処理速度が遅いとかなり厳しいと思う。
で、結論を言えば、マップエディタが作りたいだけならわざわざ学習コストの高いC++に手を出して挫折する可能性を高める必要はない。他の使いやすい言語やフレームワークを使っとけ。
RPGメーカーもウルフエディタもさわったこと無いけど、RPGツクールみたいなものでしゅ。つまりただの2Dゲームではなく、ユーザが作成した(場合によっては膨大な大きさの)データを編集するツールと、そのデータを読み込んで処理しながら2D RPGとして動かすプレイヤ(仮想ゲーム機)のセットみたいなもの。
ただの2Dの描画ならマシン性能は大して求められないけど、膨大なデータを効率的に保持して動的な変更に耐えうるような仕組みを作るなら、処理速度が速くメモリ効率も良いC++を使うメリットはあると思う。特にスイッチや変数、イベントなどをユーザが定義して処理するなら、処理速度が遅いとかなり厳しいと思う。
で、結論を言えば、マップエディタが作りたいだけならわざわざ学習コストの高いC++に手を出して挫折する可能性を高める必要はない。他の使いやすい言語やフレームワークを使っとけ。
871デフォルトの名無しさん
2020/06/16(火) 09:09:25.61ID:eN791Gfm872デフォルトの名無しさん
2020/06/16(火) 09:09:27.93ID:JnjsQYAt でしゅ
かわいい
かわいい
873デフォルトの名無しさん
2020/06/16(火) 09:21:01.68ID:TBO9MSyh > テクスチャの描写にすら
すら?
すら?
874デフォルトの名無しさん
2020/06/16(火) 09:22:41.63ID:6qjQ65l0875デフォルトの名無しさん
2020/06/16(火) 09:25:37.05ID:ehL8QS9+ >>870
何の言語が適切でしょうか
何の言語が適切でしょうか
876デフォルトの名無しさん
2020/06/16(火) 10:11:49.65ID:ZzQUhJK1 Unityスレにもいた人だけどなんでこんな少ない情報で最適な言語を求めるんだろうか?
別にC++でもC#でもjsでも実現可能だし、大差ないと思うけど
COBOLとかならやめとけって言えるけど
別にC++でもC#でもjsでも実現可能だし、大差ないと思うけど
COBOLとかならやめとけって言えるけど
877デフォルトの名無しさん
2020/06/16(火) 10:50:58.86ID:ehL8QS9+ 答えというか、一般論を知りたいです
例えばエレクトロンでピクセルの操作は出来ますか?
例えばエレクトロンでピクセルの操作は出来ますか?
878デフォルトの名無しさん
2020/06/16(火) 11:13:05.91ID:zfRgO9so 一般論なら、Unity
他には、Electron, React Native
サーバー側が、Ruby なら、Rails もある。
ただし、GUI は、HTML, CSS/SASS, JavaScript になる
他には、Electron, React Native
サーバー側が、Ruby なら、Rails もある。
ただし、GUI は、HTML, CSS/SASS, JavaScript になる
879デフォルトの名無しさん
2020/06/16(火) 11:14:52.80ID:ehL8QS9+ ゲームではなく、タイルエディタでもunityという選択なんですか?
880デフォルトの名無しさん
2020/06/16(火) 11:21:02.46ID:ZzQUhJK1 一般論なら使い慣れた言語でいいんじゃね?程度だと思うよ
実現したい機能の実装が不可能で無い限り関係ない
利用者の多い言語のほうがフレームワークやライブラリの面で開発は楽になるかもしれない
electronは言語ではなくフレームワークだけどなんで言語と比較してるの?
electronの質問は該当スレへ
今の質問もスレからずれてると思うけど
実現したい機能の実装が不可能で無い限り関係ない
利用者の多い言語のほうがフレームワークやライブラリの面で開発は楽になるかもしれない
electronは言語ではなくフレームワークだけどなんで言語と比較してるの?
electronの質問は該当スレへ
今の質問もスレからずれてると思うけど
881デフォルトの名無しさん
2020/06/16(火) 11:26:32.29ID:ehL8QS9+ すみません。
既存のエディタがなぜc++なのか知りたかったのです。
既存のエディタがなぜc++なのか知りたかったのです。
882デフォルトの名無しさん
2020/06/16(火) 11:52:06.13ID:ZzQUhJK1 いや、unityスレでも言われてたけど作った人に聞け以外に答えは無いよ
ウルフエディタを触ったことは無いがやってることはC++でもC#でもjavaでもできるはず
他言語は俺じゃわからんが画像を任意座標へ表示するようなことができる仕組みさえあれば大抵のことはできるだろう
ウルフエディタを触ったことは無いがやってることはC++でもC#でもjavaでもできるはず
他言語は俺じゃわからんが画像を任意座標へ表示するようなことができる仕組みさえあれば大抵のことはできるだろう
883デフォルトの名無しさん
2020/06/16(火) 11:55:46.30ID:HRUNOXRJ 初学者なら兎も角、熟練者が少人数で使う分には言語による開発効率の差なんて大差ない
手足となるライブラリが一通り揃って使い方知っていれば、c++だろうがサクッと作れる
手足となるライブラリが一通り揃って使い方知っていれば、c++だろうがサクッと作れる
884デフォルトの名無しさん
2020/06/16(火) 12:27:02.09ID:ehL8QS9+ ごめんなさい
じゃあpyqtでやります
比較的pythonに慣れているので
じゃあpyqtでやります
比較的pythonに慣れているので
885デフォルトの名無しさん
2020/06/16(火) 12:35:45.68ID:zfRgO9so そもそも、Tiled Map Editor を使うから、作るのは無駄だと思うが
886デフォルトの名無しさん
2020/06/16(火) 18:18:34.27ID:zj4kqDkW >>882
>任意座標へ表示
ここでポインターが便利ってことになるんだよな
線引いたり塗りつぶしたりといったプリミティブなことを自分でやるならポインター使えなきゃやってられない
ここまでくるとアセンブラの威力まざまざと見せつけられるわけだけども次点でC/C++
>任意座標へ表示
ここでポインターが便利ってことになるんだよな
線引いたり塗りつぶしたりといったプリミティブなことを自分でやるならポインター使えなきゃやってられない
ここまでくるとアセンブラの威力まざまざと見せつけられるわけだけども次点でC/C++
887デフォルトの名無しさん
2020/06/23(火) 21:41:19.55ID:zFVhfcF5 競技プログラミング始めたいんだけど、どうやってcpp勉強すれば良い?
Cはある程度わかるからcpp特有の文法を勉強したい
変数みたいなのに>>みたいなのいっぱいついてて何がなんだかわからん
Cはある程度わかるからcpp特有の文法を勉強したい
変数みたいなのに>>みたいなのいっぱいついてて何がなんだかわからん
888デフォルトの名無しさん
2020/06/23(火) 22:27:25.31ID:FqDmWE10 演算子に特に意味はない
擬装出来るからな
擬装出来るからな
889デフォルトの名無しさん
2020/06/23(火) 22:41:51.81ID:Oi2DUy0P とりあえず解いて他人の回答をみる
知らない内容があればググる
これの繰り返し
知らない内容があればググる
これの繰り返し
890デフォルトの名無しさん
2020/06/23(火) 23:01:01.90ID:NciFLwYZ891デフォルトの名無しさん
2020/06/24(水) 10:48:10.17ID:6+kkBVmV >>887
細部を観る前にまずオブジェクト指向を理解するべき
細部を観る前にまずオブジェクト指向を理解するべき
892デフォルトの名無しさん
2020/06/24(水) 18:20:23.25ID:amytSPrH 競技プログラムでまずオブジェクト指向?
順番が違う気がする
順番が違う気がする
893デフォルトの名無しさん
2020/06/25(木) 00:55:35.66ID:Dxq2c9AW あくまで競技プログラミングありきで C++ を導入したいってことならオブジェクト指向の考え方はそれほどいらんわな。
ただ、競技プログラミングで書かれてる C++ のコードってかなり汚いのばかりなので、
そこに特化しちゃうのはあまりオススメしないよ。
頻繁というほどではないが using int = long long; くらいのクソはちょいちょい見かける。
まともな書き方をわかった上で割り切り方を考えるとか、言語のトリッキーな部分に踏み込んでみるとか、
逆に言語はどうでもよくてアルゴリズムだけが大事とか考えてるなら競技プログラミングでスタートするのもありかもしれんが、
ちょっと C に毛の生えたくらいの C++ で競技プログラミングを始めると変なクセが付いちゃう。
ただ、競技プログラミングで書かれてる C++ のコードってかなり汚いのばかりなので、
そこに特化しちゃうのはあまりオススメしないよ。
頻繁というほどではないが using int = long long; くらいのクソはちょいちょい見かける。
まともな書き方をわかった上で割り切り方を考えるとか、言語のトリッキーな部分に踏み込んでみるとか、
逆に言語はどうでもよくてアルゴリズムだけが大事とか考えてるなら競技プログラミングでスタートするのもありかもしれんが、
ちょっと C に毛の生えたくらいの C++ で競技プログラミングを始めると変なクセが付いちゃう。
894デフォルトの名無しさん
2020/06/25(木) 00:56:50.75ID:Dxq2c9AW おっと using int = long long; は出来ないな。
#define int long long の間違い。
#define int long long の間違い。
895デフォルトの名無しさん
2020/06/25(木) 07:59:46.82ID:XUZZkb7Y 競技プログラムに特化
いいじゃない
何からはじめても
どうせ将来業務や集団でコーディングすることになったら
文法以外に色々と勉強しなきゃならん
いいじゃない
何からはじめても
どうせ将来業務や集団でコーディングすることになったら
文法以外に色々と勉強しなきゃならん
896デフォルトの名無しさん
2020/06/25(木) 11:07:09.88ID:2XRewe5U どうせ勉強するならへんな癖ついて手遅れになる前に
初めてやるときからオブジェクト指向やっとけって話だろ
急がば回れ
初めてやるときからオブジェクト指向やっとけって話だろ
急がば回れ
897デフォルトの名無しさん
2020/06/25(木) 12:58:11.49ID:yb+enRFi クローズドな場所でレースがしたいって人に
まず道路交通法を学べっていう感じ
トンチンカン
まず道路交通法を学べっていう感じ
トンチンカン
898デフォルトの名無しさん
2020/06/25(木) 13:34:16.40ID:RBMnjR2N いや道路交通法っていうよりサイドブレーキの使い方とか駐車の仕方って感じじゃね
899デフォルトの名無しさん
2020/06/25(木) 19:06:16.39ID:TznTPNyN レースでサイドブレーキ使わないの?
900デフォルトの名無しさん
2020/06/26(金) 13:00:51.86ID:PjbtVFt+ 愚者は経験に学ぶ
賢者は歴史に学ぶ
賢者は歴史に学ぶ
901デフォルトの名無しさん
2020/06/26(金) 13:01:38.24ID:bhcA+daA 俺は両方から学ぶわ
902デフォルトの名無しさん
2020/06/26(金) 17:38:59.84ID:twdaurbq 賢者と愚者から学ぶのか
903デフォルトの名無しさん
2020/06/27(土) 03:32:14.85ID:W+OG+j+5 違う賢者と歴史に教えを請うのだ
>>900
誰の言葉なんでしょうか?大概は誰(チャーチルとかルーズベルトとか)という情報とセットで引用されるものなんですが、この言葉はそういうのがあまりないのはどうしてなんでしょうか?
誰の言葉なんでしょうか?大概は誰(チャーチルとかルーズベルトとか)という情報とセットで引用されるものなんですが、この言葉はそういうのがあまりないのはどうしてなんでしょうか?
905デフォルトの名無しさん
2020/06/27(土) 07:12:11.81ID:cFqQOOIi >>904
普通にググって出て来るけど?ほんまかどうかは知らん
https:/www.firstlogic.co.jp/blog/lab/aizawa/6243
>
「愚者は経験に学び、賢者は歴史に学ぶ」
鉄血宰相と呼ばれたオットー・フォン・ビスマルク(1815年−1898年)の言葉です。
普通にググって出て来るけど?ほんまかどうかは知らん
https:/www.firstlogic.co.jp/blog/lab/aizawa/6243
>
「愚者は経験に学び、賢者は歴史に学ぶ」
鉄血宰相と呼ばれたオットー・フォン・ビスマルク(1815年−1898年)の言葉です。
906デフォルトの名無しさん
2020/06/27(土) 07:29:38.76ID:QI4OAUXK ちょいちょいC++関連スレで見かけるけど、実際に書いたり経験したりもしてない聞きかじりの知識で
マウント取りたいだけ、ってのを正当化するために使われてる気がする
マウント取りたいだけ、ってのを正当化するために使われてる気がする
907デフォルトの名無しさん
2020/06/27(土) 07:46:50.62ID:bIAfLa6c まあITなんて歴史が浅いものは他人の経験が歴史みたいなもんやし
908デフォルトの名無しさん
2020/06/27(土) 08:15:09.50ID:TsX0h7IG そもそも>>900が間違ってる
賢者は色々な事から学ぶ
賢者は色々な事から学ぶ
909デフォルトの名無しさん
2020/06/27(土) 08:16:30.59ID:TsX0h7IG 学んだ事を盲信せず更新し続ける
910デフォルトの名無しさん
2020/06/27(土) 08:18:40.93ID:TsX0h7IG 歴史から学ぶとは要するにパクり
これだけで新技術なんか生まれない
これだけで新技術なんか生まれない
911デフォルトの名無しさん
2020/06/27(土) 08:23:27.23ID:wwwZDyDi 文系がプログラミング ば読書だけじゃみにづがね゛
912デフォルトの名無しさん
2020/06/27(土) 08:31:20.77ID:4VTCzLtL >>901の言うようにどっちも大事ってことやな
913デフォルトの名無しさん
2020/06/27(土) 08:59:57.53ID:DRe2glKb つーかこの手の格言て日本語の意訳が過ぎるせいで
元の意味が失なわれてる事がちょいちょいあるけど
この「愚者は経験に・・」もそれで元のビスマルクの文言の意味はまんま >>907 の意味で
要するに「自分の経験のみで考えずに常に他者の経験を見聞きしてそこから学べ」という
意味だった
この他者の経験の集合の事を「歴史」なんつーて壮大な単語に集約しちゃったせいで
なんか「経験論で判断したらあかん、歴史書にあるような高尚な理論を学べ」
みたいな話になっちゃってるっていう
元の意味が失なわれてる事がちょいちょいあるけど
この「愚者は経験に・・」もそれで元のビスマルクの文言の意味はまんま >>907 の意味で
要するに「自分の経験のみで考えずに常に他者の経験を見聞きしてそこから学べ」という
意味だった
この他者の経験の集合の事を「歴史」なんつーて壮大な単語に集約しちゃったせいで
なんか「経験論で判断したらあかん、歴史書にあるような高尚な理論を学べ」
みたいな話になっちゃってるっていう
914デフォルトの名無しさん
2020/06/27(土) 09:35:19.65ID:TsX0h7IG ああやっぱり
そんなことだろうと思った
ムーアの法則もそんな感じ
違う意味で使われてしまった例
そんなことだろうと思った
ムーアの法則もそんな感じ
違う意味で使われてしまった例
915デフォルトの名無しさん
2020/06/27(土) 09:35:38.13ID:tKkUIu86 >>907
いやいやそれこそまさに"歴史"だろ
いやいやそれこそまさに"歴史"だろ
916デフォルトの名無しさん
2020/06/27(土) 09:35:39.20ID:Fil4ka9J 賢者が歴史「だけ」から学ぶと思ってる>>908-910ってw
917デフォルトの名無しさん
2020/06/27(土) 09:44:14.10ID:TsX0h7IG918デフォルトの名無しさん
2020/06/27(土) 09:46:02.66ID:TsX0h7IG >>900を見て違和感が無いなら
プログラミングに向いてない
プログラミングに向いてない
919デフォルトの名無しさん
2020/06/27(土) 09:52:27.76ID:TsX0h7IG 経験が無い言い訳をするために
偉い人の言葉を変造して使う
経験の無い文系にありがちなこと
偉い人の言葉を変造して使う
経験の無い文系にありがちなこと
920デフォルトの名無しさん
2020/06/27(土) 09:54:04.58ID:twDHZDh4 >>913
意訳が悪いというより、金言を字面通りにしか解釈できない奴が増えた(もしくは元から多い)ということが問題なんでないの?
例えば>>917みたいに。
>>900の意味を考えたら、愚者は「自分自身の」経験だけから学ぶのに対し、賢者は歴史というこれまでの多数の人間による経験の積み重ねからも学ぶという対比であることは分かりそうなものなのに、字面通りにしか受け取らない。
だから>>910みたいな頓珍漢なことも言い出す。
新たな技術を産み出すのは過去の積み重ねの上に、それをさらに発展させたり新たな発想などが必要になるだろうけど、この金言は別に学ぶことだけしていろと言う話をしているわけではない。ただ学ぶ対象は広い方が良いという話をしているだけなのに、何でわざわざ>>910のようなことを言い出すのだろう。
意訳が悪いというより、金言を字面通りにしか解釈できない奴が増えた(もしくは元から多い)ということが問題なんでないの?
例えば>>917みたいに。
>>900の意味を考えたら、愚者は「自分自身の」経験だけから学ぶのに対し、賢者は歴史というこれまでの多数の人間による経験の積み重ねからも学ぶという対比であることは分かりそうなものなのに、字面通りにしか受け取らない。
だから>>910みたいな頓珍漢なことも言い出す。
新たな技術を産み出すのは過去の積み重ねの上に、それをさらに発展させたり新たな発想などが必要になるだろうけど、この金言は別に学ぶことだけしていろと言う話をしているわけではない。ただ学ぶ対象は広い方が良いという話をしているだけなのに、何でわざわざ>>910のようなことを言い出すのだろう。
921デフォルトの名無しさん
2020/06/27(土) 10:01:34.50ID:wwwZDyDi #include <stdio.history>
const 自動運転車 = require('運転経験');
import 数学史
const 自動運転車 = require('運転経験');
import 数学史
922デフォルトの名無しさん
2020/06/27(土) 10:59:13.05ID:3D9ce/Tt >>921
言語捏造すんなやゴミが
言語捏造すんなやゴミが
923デフォルトの名無しさん
2020/06/27(土) 11:10:43.60ID:05T2q1jf924デフォルトの名無しさん
2020/06/27(土) 11:43:34.76ID:iSXUJw2h925デフォルトの名無しさん
2020/06/27(土) 11:46:58.91ID:h6eax6A3 名言・格言・故事成語は枝葉や細部を切り捨てた理想的な空間だろ
その場その場に合わせたすっからカンのいいくるめだ
だから欧州も誰が言ったかに矢鱈と拘る
こういうのはマジで作り話で都合のいいことしか書いてない
虚偽のお話を信じさせられてるんだから虚構と現実のズレが生じる
その場その場に合わせたすっからカンのいいくるめだ
だから欧州も誰が言ったかに矢鱈と拘る
こういうのはマジで作り話で都合のいいことしか書いてない
虚偽のお話を信じさせられてるんだから虚構と現実のズレが生じる
926デフォルトの名無しさん
2020/06/27(土) 11:51:17.17ID:tKkUIu86927デフォルトの名無しさん
2020/06/27(土) 13:49:21.23ID:TsX0h7IG 愚者は歴史に学ぶ
賢者は経験に学ぶ
賢者は経験に学ぶ
928デフォルトの名無しさん
2020/06/27(土) 15:49:00.82ID:QSLeN3Uh >>921
むしろ
----vc2019.h----
#include <vc2017.h>
----
----vc2017.h----
#include <vc2015.h>
----
----vc2015.h----
#include <vc2013.h>
----
----vc2013.h----
#include <vc2010.h>
----
みたいなものを想像した
むしろ
----vc2019.h----
#include <vc2017.h>
----
----vc2017.h----
#include <vc2015.h>
----
----vc2015.h----
#include <vc2013.h>
----
----vc2013.h----
#include <vc2010.h>
----
みたいなものを想像した
929デフォルトの名無しさん
2020/07/03(金) 09:37:34.50ID:DB1hQWD+ 表紙に一休さんみたいな男が写った専門書を見つけたのだけど、買うのためらった
930デフォルトの名無しさん
2020/07/03(金) 11:41:58.59ID:OljhRJZm UNIX公案なるものが存在するのでプログラミングを理解するには禅をやるのが早い
GEBでも公案の論理分解が行われてるくらいに当時のアメリカ西海岸では大麻と禅とLSDが流行った
GEBでも公案の論理分解が行われてるくらいに当時のアメリカ西海岸では大麻と禅とLSDが流行った
931デフォルトの名無しさん
2020/07/03(金) 14:32:59.27ID:/+uSoVK/932デフォルトの名無しさん
2020/07/03(金) 14:47:09.61ID:1r/HjE0m フッw
933デフォルトの名無しさん
2020/07/03(金) 17:54:47.73ID:6268sYfp これで安全靴でミリタリー服でうろついてたら職務質問される罠
934デフォルトの名無しさん
2020/07/05(日) 22:48:53.64ID:9WS3R3Fj 江添のやつはわかりにくくない?
936デフォルトの名無しさん
2020/07/05(日) 23:00:31.75ID:9WS3R3Fj include省略されるとちょっと
937デフォルトの名無しさん
2020/07/06(月) 10:32:47.31ID:tZQ4aODX include をおまじないと称してすっとばす解説は大抵糞
938デフォルトの名無しさん
2020/07/06(月) 13:22:36.24ID:DnB56BCk そういう解説で勉強したやつは100%コピペマンになり業務では使えない
939デフォルトの名無しさん
2020/07/06(月) 14:32:37.87ID:kTgVemk4 大変だなバカって
940デフォルトの名無しさん
2020/07/06(月) 14:41:13.52ID:gLHWFzBI バカは楽だぞ
941はちみつ餃子 ◆8X2XSCHEME
2020/07/06(月) 16:52:45.31ID:Js6m+wFY 俺はアセンブリから入ったタイプだからよりプリミティブな機能の
組み合わせとして理解するという方法論は結局のところわかりやすいというのはわかる。
でも展開形を意識してしまうようになると抽象化の感覚が育たないような気もしていて、
あらゆる意味で万能ってことはないので色んな本があることが大事なんだと思う。
江添亮のC++入門は継承すら取り扱わないレベルの入門という位置づけなので、
不足する分はより本格的な本を読む前提だろうし、まあこんなもんじゃないの。
組み合わせとして理解するという方法論は結局のところわかりやすいというのはわかる。
でも展開形を意識してしまうようになると抽象化の感覚が育たないような気もしていて、
あらゆる意味で万能ってことはないので色んな本があることが大事なんだと思う。
江添亮のC++入門は継承すら取り扱わないレベルの入門という位置づけなので、
不足する分はより本格的な本を読む前提だろうし、まあこんなもんじゃないの。
942デフォルトの名無しさん
2020/07/06(月) 18:43:53.42ID:X9mxW4kC はちみつって何歳?
943デフォルトの名無しさん
2020/07/06(月) 19:04:52.45ID:Xx+iWxrn 結局どういう順序で勉強していけばいいんだろう
944デフォルトの名無しさん
2020/07/06(月) 20:43:39.12ID:SSQMtz9B >>943
一本道で過不足なく必要な物を順序通りに学べるような都合のいい方法なんてないから、ある程度は分からないものを保留して先に進んでから後戻りして理解したり、逆に順調に進んでると思ったら壁に突き当たって後戻りして不足部分を地固めし直してからまた先に進むなんてこともある。
それが当たり前だと思って最初は苦労するしかないと思うよ。ある程度なれてくれば、経験と勘で補いながら効率が上がっていくはず。
一本道で過不足なく必要な物を順序通りに学べるような都合のいい方法なんてないから、ある程度は分からないものを保留して先に進んでから後戻りして理解したり、逆に順調に進んでると思ったら壁に突き当たって後戻りして不足部分を地固めし直してからまた先に進むなんてこともある。
それが当たり前だと思って最初は苦労するしかないと思うよ。ある程度なれてくれば、経験と勘で補いながら効率が上がっていくはず。
945デフォルトの名無しさん
2020/07/06(月) 20:54:22.43ID:fLXZOc4N 二章からポインタの説明が始める入門書で勉強した。今思えば酷いサディスティック教本だったと思う。
タイトルが思い出せない…
タイトルが思い出せない…
>>943
独習C++レベル、accelerated C++ レベル → C++98 STL本 レベル → 結城さんのデザパタを C++ に書き直す訓練 →C++11レイターを本格的に → テンプレートマジック本(今ここ) →積読している effective C++ とその兄弟たちはいつか読みたいものだ
独習C++レベル、accelerated C++ レベル → C++98 STL本 レベル → 結城さんのデザパタを C++ に書き直す訓練 →C++11レイターを本格的に → テンプレートマジック本(今ここ) →積読している effective C++ とその兄弟たちはいつか読みたいものだ
947デフォルトの名無しさん
2020/07/06(月) 21:41:28.85ID:P5id6Ara do{...}while(0);
ってどんな気持ちで使うんでしたっけ?
ってどんな気持ちで使うんでしたっけ?
948デフォルトの名無しさん
2020/07/06(月) 21:42:15.58ID:P5id6Ara #define HOGE(FUGA) do{...FUGA...}while(0)
だからdefineが重要なのかしら
だからdefineが重要なのかしら
949デフォルトの名無しさん
2020/07/06(月) 22:03:03.03ID:KpksOV+E goto否定原理主義者がbreakをgotoの代わりに使う
950デフォルトの名無しさん
2020/07/06(月) 22:57:43.86ID:juxBVe1k アナルに挿入しながら「まだ・・まだ本体には挿入していないっ!
だからこれはセックスではない!」とか言うのと似てるなそれ
だからこれはセックスではない!」とか言うのと似てるなそれ
951はちみつ餃子 ◆8X2XSCHEME
2020/07/07(火) 01:49:20.66ID:tzlORGl2 >>945
C/C++ でポインタを避けて説明する (理解を試みる) 方がつらくない?
C/C++ でポインタを避けて説明する (理解を試みる) 方がつらくない?
952デフォルトの名無しさん
2020/07/07(火) 07:56:58.77ID:bJbvn87/ >>949-950
「大丈夫、パイプカットしてるから」みたいな感じかも。
break や continue を「去勢されたgoto」って喩えるじゃない。
if のネストが深くなるのは嫌だし、
関数からの早期returnも(デバッガで追うのが面倒になるので)ダメ、
goto なんかもっての外、という時に do {} while(0); でゴニョゴニョと。
で、コンパイラさんに「常に偽となる条件式です」とか警告されるの。
「大丈夫、パイプカットしてるから」みたいな感じかも。
break や continue を「去勢されたgoto」って喩えるじゃない。
if のネストが深くなるのは嫌だし、
関数からの早期returnも(デバッガで追うのが面倒になるので)ダメ、
goto なんかもっての外、という時に do {} while(0); でゴニョゴニョと。
で、コンパイラさんに「常に偽となる条件式です」とか警告されるの。
953デフォルトの名無しさん
2020/07/07(火) 12:13:10.64ID:bEGKo5iM954はちみつ餃子 ◆8X2XSCHEME
2020/07/07(火) 13:48:51.21ID:tzlORGl2 >>953
選択肢があることが大事なんだって。
C の理屈だとビットパターンが並んだメモリ空間が広がっていてそこにオブジェクトを配置していくというモデルだから
ポインタを通してそこらを理解させるというのもひとつのやり方としてアリでしょ。
きちんとした理屈を後出しされると「先に言えや!」って気持ちになる人は少なくないと思う。
選択肢があることが大事なんだって。
C の理屈だとビットパターンが並んだメモリ空間が広がっていてそこにオブジェクトを配置していくというモデルだから
ポインタを通してそこらを理解させるというのもひとつのやり方としてアリでしょ。
きちんとした理屈を後出しされると「先に言えや!」って気持ちになる人は少なくないと思う。
955デフォルトの名無しさん
2020/07/07(火) 19:09:26.79ID:v3ijliVb ポインターの何がそんなに難しいと感じるのかわからん
コンピューターの処理なんてアドレス操作ばっかりじゃん
コンピューターの仕組みがわかってないからなのかな?
ならば言語学ぶ前にコンピューターの仕組みを学ぶのが先じゃね?
コンピューターの処理なんてアドレス操作ばっかりじゃん
コンピューターの仕組みがわかってないからなのかな?
ならば言語学ぶ前にコンピューターの仕組みを学ぶのが先じゃね?
956デフォルトの名無しさん
2020/07/07(火) 19:39:25.64ID:aaXFzUCt テスト問題にはポインタパズルとでもいうべきゴミみたいな問題が多いからね
わざわざ難しくして間違えるように幾重にも罠を張ったヤツ
そういうのでポインタ嫌いが増える
わざわざ難しくして間違えるように幾重にも罠を張ったヤツ
そういうのでポインタ嫌いが増える
957デフォルトの名無しさん
2020/07/07(火) 21:02:20.63ID:yByKJQAn サイズ100を100個用意するより
サイズ10000を1個用意してアドレス割り振るとか好き
ポインタ変数分サイズ増えるのは目をつむる確保速度重視
サイズ10000を1個用意してアドレス割り振るとか好き
ポインタ変数分サイズ増えるのは目をつむる確保速度重視
>>945
私は ** を使うくらいなら *& の方がマシだと思っているのですが、 *& で書いた本はまったくないですね…
私は ** を使うくらいなら *& の方がマシだと思っているのですが、 *& で書いた本はまったくないですね…
960デフォルトの名無しさん
2020/07/07(火) 22:12:29.39ID:TeF3RSyR あんだけクズをバカにしてたのに、同じエディタを使ってたなんて!
961デフォルトの名無しさん
2020/07/07(火) 22:17:27.53ID:4bY8cpqR >>960
くやしいのうwwwww
くやしいのうwwwww
963はちみつ餃子 ◆8X2XSCHEME
2020/07/07(火) 23:17:48.32ID:tzlORGl2 >>962
そういうデザインのプログラムがあっても不自然だとは思わないが、
初心者向けでポインタの説明をする段階という前提を置くと参照と混ぜて示すのは混乱の元ちゃう?
& という記号の多義性がアレなのが根本原因ではあるんだが……。
そういうデザインのプログラムがあっても不自然だとは思わないが、
初心者向けでポインタの説明をする段階という前提を置くと参照と混ぜて示すのは混乱の元ちゃう?
& という記号の多義性がアレなのが根本原因ではあるんだが……。
965デフォルトの名無しさん
2020/07/08(水) 08:50:17.72ID:sJ2uy93A >>947-948
同じ人からの連続投稿、ひとつの質問だと気づかなかった。
マクロの実体を do {...} while (0) で囲む定型については
「#define do whole false」でネット検索すると色々出てくる。
この場で説明するには少々分量が多いのだ。
同じ人からの連続投稿、ひとつの質問だと気づかなかった。
マクロの実体を do {...} while (0) で囲む定型については
「#define do whole false」でネット検索すると色々出てくる。
この場で説明するには少々分量が多いのだ。
966デフォルトの名無しさん
2020/07/08(水) 09:23:35.50ID:hADFKHgu そのうち
#define HOGE(FUGA) do{...FUGA...}while(0);
と描いてしまって失敗する
#define HOGE(FUGA) do{...FUGA...}while(0);
と描いてしまって失敗する
967965
2020/07/08(水) 18:00:01.90ID:sJ2uy93A あ、もちろん whole は誤り while で検索してくれ。
× 「#define do whole false」
○ 「#define do while false」
× 「#define do whole false」
○ 「#define do while false」
968デフォルトの名無しさん
2020/07/09(木) 20:13:12.08ID:gJQJWBxs テキストファイルに文字列を書き込みしたいのですが
ofstream ofs("test.txt",ios::ate | ios::in);
ofs << "hoge" << endl;
これだと動いているんですが
最後のendlを無くして"hoge"のみを書き込もうとすると動作しません
どういった理由なんでしょうか?
ofstream ofs("test.txt",ios::ate | ios::in);
ofs << "hoge" << endl;
これだと動いているんですが
最後のendlを無くして"hoge"のみを書き込もうとすると動作しません
どういった理由なんでしょうか?
969デフォルトの名無しさん
2020/07/09(木) 20:17:07.59ID:N+YU0rOq flushしないと
970蟻人間 ◆T6xkBnTXz7B0
2020/07/09(木) 20:22:54.18ID:2UhyUN9n 読み書きは時間がかかる処理だから、読み書きの前に、小さなデータは一時的にバッファという記憶域にまとめて
貯めておき(まあ、キャッシュと似たようなものだ)、改行などがあれば、押し流す(flush)という処理をする。
この場合はendlがflushの役割をする。
貯めておき(まあ、キャッシュと似たようなものだ)、改行などがあれば、押し流す(flush)という処理をする。
この場合はendlがflushの役割をする。
971デフォルトの名無しさん
2020/07/09(木) 20:48:42.31ID:gJQJWBxs972デフォルトの名無しさん
2020/07/11(土) 00:06:30.27ID:87hwO6K6 ポインタを初心者に完璧に理解させる方法分かったわ。
ポインタ=ショートカットアイコンと教えればいいんだ。
メモ帳に文字書いて保存して、ショートカットアイコン作って「これがポインタだよ」って言えばいい。
メモ帳の容量見てごらん?100kbでしょ?ショートカットアイコンの容量見てごらん?1kbしかないね。
ショートカット開いて。文章変えて。ほら1kbのデータで本体が変わった。これがポインタの仕組みだよ。
完璧
ポインタ=ショートカットアイコンと教えればいいんだ。
メモ帳に文字書いて保存して、ショートカットアイコン作って「これがポインタだよ」って言えばいい。
メモ帳の容量見てごらん?100kbでしょ?ショートカットアイコンの容量見てごらん?1kbしかないね。
ショートカット開いて。文章変えて。ほら1kbのデータで本体が変わった。これがポインタの仕組みだよ。
完璧
973デフォルトの名無しさん
2020/07/11(土) 00:21:04.14ID:lUabZX1b ポインタの演算は?
974デフォルトの名無しさん
2020/07/11(土) 00:21:34.19ID:nv0BNjEd その程度の抽象化ならポインタのこと直接説明すればいいと思う
975デフォルトの名無しさん
2020/07/11(土) 08:24:16.69ID:sGHMgavQ 住所録とかじゃダメなん?
976デフォルトの名無しさん
2020/07/11(土) 11:03:46.07ID:J0INoyBc ポインタの躓き処ってそういう場所じゃないから
977デフォルトの名無しさん
2020/07/11(土) 11:18:32.94ID:60oNEnIZ アセンブラから入ると
Cのポインタは色々と意味不明
Cのポインタは色々と意味不明
978デフォルトの名無しさん
2020/07/11(土) 11:20:02.10ID:fm8o+adg 嬉々として大量に出題されるポインタパズルが難易度を無駄に押し上げてる
この時のアドレスは何か、変数は何かと、無駄に凝った問題を作り易いのがポインタの難点
テストのための問題を作る必要があって、そこではふるい落とす必要がある
全員100点じゃマズいと思ってる教師がいるからね
でも教育が成功したと言われる全員100点だとダメ
ここに現行教育の限界点がある
すると、問題難易度は加速しつつ急上昇する
しかも大して面白くもなんともない問題が製造される
穴埋めよりも酷いのが
この時のアドレスは何か、変数は何かと、無駄に凝った問題を作り易いのがポインタの難点
テストのための問題を作る必要があって、そこではふるい落とす必要がある
全員100点じゃマズいと思ってる教師がいるからね
でも教育が成功したと言われる全員100点だとダメ
ここに現行教育の限界点がある
すると、問題難易度は加速しつつ急上昇する
しかも大して面白くもなんともない問題が製造される
穴埋めよりも酷いのが
979デフォルトの名無しさん
2020/07/11(土) 11:20:10.45ID:Rtii2xnW レコード針みたいなもんじゃないの
980デフォルトの名無しさん
2020/07/11(土) 11:45:57.83ID:J0INoyBc 自称「教科書」が間違ってたりするからな
そういうミスリードが初心者をさらに混乱させてる
そういうミスリードが初心者をさらに混乱させてる
981デフォルトの名無しさん
2020/07/11(土) 11:47:30.73ID:60oNEnIZ 初心者用教科書は厳密じゃやくて良いんだよ
982デフォルトの名無しさん
2020/07/11(土) 11:49:05.50ID:60oNEnIZ 高校生の教科書に
ニュートン力学は間違ってるとか
幾何光学は間違ってるとか
この世はユークリッド空間ではない
とか書いても混乱するだけ
ニュートン力学は間違ってるとか
幾何光学は間違ってるとか
この世はユークリッド空間ではない
とか書いても混乱するだけ
983デフォルトの名無しさん
2020/07/11(土) 12:12:13.44ID:J0INoyBc984デフォルトの名無しさん
2020/07/11(土) 12:23:45.26ID:60oNEnIZ 技術書に明らかな間違い?
985デフォルトの名無しさん
2020/07/11(土) 15:56:25.03ID:sGHMgavQ >>976
具体的にどういう場所なん?
具体的にどういう場所なん?
986デフォルトの名無しさん
2020/07/11(土) 16:23:26.53ID:60oNEnIZ & * の多義性
複合型の記述方法
メモリ確保解放
ポインタの型と演算の結果の違い
const, volatile
複合型の記述方法
メモリ確保解放
ポインタの型と演算の結果の違い
const, volatile
987デフォルトの名無しさん
2020/07/11(土) 20:36:15.52ID:87hwO6K6 わかってさえしまえば簡単至極なのに、これほど初心者に教えるのが難しいこともそうはないなw
配列や関数の戦闘アドレスの渡し方をわかりやすく出来てれば難しいと思えることもなかったかもしれない。
配列や関数の戦闘アドレスの渡し方をわかりやすく出来てれば難しいと思えることもなかったかもしれない。
988デフォルトの名無しさん
2020/07/11(土) 20:47:57.04ID:kW8apoiX 戦闘アドレスと防御アドレスを使いこなして達人を目指せ!
989デフォルトの名無しさん
2020/07/11(土) 20:48:58.21ID:lUabZX1b >>987
そうか?
そうか?
990デフォルトの名無しさん
2020/07/11(土) 21:29:54.59ID:sGHMgavQ チートコードはベースアドレスからの距離
ベースアドレスが変わってもチートコードは変わらない
ゲーム好きにはこんな感じか
ベースアドレスが変わってもチートコードは変わらない
ゲーム好きにはこんな感じか
991デフォルトの名無しさん
2020/07/12(日) 08:37:19.13ID:03QLQuvk vc++でバリアント型って使えますか??
993デフォルトの名無しさん
2020/07/12(日) 10:26:26.21ID:NK7E+AG5 pythonのctypes使うときに役に立ってる
ctypes.POINTERとか謎仕様過ぎた
ctypes.POINTERとか謎仕様過ぎた
994デフォルトの名無しさん
2020/07/12(日) 21:37:47.68ID:PErY82OB C++って団塊ジュニアまでの言語って感じがする
これから爆発的に需要が伸びていく可能性なんてないよね?
これから爆発的に需要が伸びていく可能性なんてないよね?
995デフォルトの名無しさん
2020/07/12(日) 21:51:26.17ID:dmFXGwc3 伸びるとかよくわからんが
今時のウェーイってしている言語にしたって、大抵コア部分のライブラリやらランタイムやらはcやc++で書かれているのだから
その言語のお客様で済む用途を越えて何かしようとしたら、出来ないと困るだろ
今時のウェーイってしている言語にしたって、大抵コア部分のライブラリやらランタイムやらはcやc++で書かれているのだから
その言語のお客様で済む用途を越えて何かしようとしたら、出来ないと困るだろ
>>994
世に存在する計算機言語の半分以上は C/C++ で記述されていたりするのです
世に存在する計算機言語の半分以上は C/C++ で記述されていたりするのです
997はちみつ餃子 ◆8X2XSCHEME
2020/07/13(月) 02:47:06.70ID:vJz2FqxN 陣取り合戦をしているわけでもなし、
需要が伸びればいいってもんでもない。
重要なのは居場所を見つけるかどうかって話だと思う。
C++ が適切とは言えないけど C++ が比較的マシという理由で C++ が使われている
というのはよくあることで、新しい言語が出現してそういう分野を奪っていくこともある。
もともと C++ がイマイチだったところが消えるだけで、
どんどん衰退して消える運命ってほどのもんではない。
需要が伸びればいいってもんでもない。
重要なのは居場所を見つけるかどうかって話だと思う。
C++ が適切とは言えないけど C++ が比較的マシという理由で C++ が使われている
というのはよくあることで、新しい言語が出現してそういう分野を奪っていくこともある。
もともと C++ がイマイチだったところが消えるだけで、
どんどん衰退して消える運命ってほどのもんではない。
998デフォルトの名無しさん
2020/07/13(月) 06:38:36.94ID:17o/9bhC そろそろ次のスレッド…このスレッドが終わる前に告知を…。
俺は…ダメだ(がっくし)。
俺は…ダメだ(がっくし)。
999デフォルトの名無しさん
2020/07/13(月) 07:37:30.49ID:/O+2Yaja 1000なら次スレなし
1000デフォルトの名無しさん
2020/07/13(月) 07:53:41.77ID:V+zIL/Eb のとおり
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 445日 0時間 59分 3秒
新しいスレッドを立ててください。
life time: 445日 0時間 59分 3秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★2 [ぐれ★]
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★3 [ぐれ★]
- 【速報】高市総理が官邸入り [Hitzeschleier★]
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 青森で火事 [Hitzeschleier★]
- 【震度6強】政府 危機管理センターに官邸対策室を設置 [ぐれ★]
- 地震 ★2
- 【速報】高市早苗、起床 [779938112]
- 高市すごい勢大発生 [256556981]
- ぺこーら、地震で同僚が次々配信を止めるなか強行し続けるので悪目立ちするwww [268244553]
- 巨大地震 [957955821]
- 大地震
