◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

【初心者歓迎】C/C++室 Ver.105【環境依存OK】 ->画像>4枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1556142878/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1デフォルトの名無しさん
2019/04/25(木) 06:54:38.08ID:6xUIrXDu
エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります

コードを貼れる所
http://codepad.org/
https://ideone.com/

前スレ
【初心者歓迎】C/C++室 Ver.104【環境依存OK】
http://2chb.net/r/tech/1545944692/
2デフォルトの名無しさん
2019/04/25(木) 11:00:25.52ID:/tHSxicf
チンポ体操

チンポを手に持ち しごく運動から
1 2 シコシコ
2 2 シコシコ

チンポを振り回す運動
1 2 ブルンブルン
2 2 ブルンブルン
3デフォルトの名無しさん
2019/04/30(火) 16:44:32.44ID:hc3e5D+8
Cを2年間やって最近大学の講義でC++をやりはじめたのですが
C++だけでなくCの勉強も継続したほうがいいのでしょうか?
4 ◆QZaw55cn4c
2019/04/30(火) 16:51:17.25ID:iYYZTFZo
>>3
C89=K&R2 をマスターできたら、C99 など目もくれずC++に進むのがいいでしょう、私はそうしましたし C99 なんかどうでもいいと思っています
5デフォルトの名無しさん
2019/04/30(火) 17:08:01.32ID:hc3e5D+8
>>4
レスありがとうございます
競技プログラミングで言うと、C言語はatcoderでA問題とB問題はすぐに書くことが出来てC問題は解けたり解けなかったりというレベルです。構造体とポインタも基本的(C言語ポインタ完全制覇という書籍にあるような難しいことは知りませんが…)な扱いならばできます。
就職のことも視野に入れて考えたいのですが、C++が出来るならばCの知識が問われる機会というのは少ないのでしょうか?
6 ◆QZaw55cn4c
2019/04/30(火) 17:18:00.19ID:iYYZTFZo
>>5
就職の話はよくわかりません
ただ、C89=K&R2 → C99 の改定内容は、C89 の時代に試みられていた拡大解釈を規格に取り込んだ、という部類が多いと私は思いました
それに C99 は、「C++ を見た後で決めたんかい?」という謎な部分が多くいけ好かないのも事実です、あんなものは知らないほうがいい部類でしょう
それよりも日々進化し続ける C++ をフォローするほうが、いろいろな面でお得です、私も p-thread 系マルチコアなプログラムを記述するために C++11 or lator に進み、とても満足しています
7デフォルトの名無しさん
2019/04/30(火) 18:05:48.04ID:arIi2u2B
>>5
C++のクラスとかテンプレートとかSTLとかをとりあえず無視して
Cと共通してる基礎的なとこから学べば、わざわざCを個別に学ぶ必要はないとおも

仕事の場合は純粋にCだけ長年使ってるような特殊な職場でなければ問題ない
8デフォルトの名無しさん
2019/04/30(火) 18:11:55.63ID:hc3e5D+8
お二人方ありがとうございます
CからC++の勉強に専念する決心が半分くらいつきました
Cのscanf()の仕様(バッファオーバーフローやバッファオーバーランの危険性を回避するいくつかの方法について等)、まだはっきりと把握していないのですが、それでも、C++の勉強に専念してしまっても問題ありませんでしょうか?
9デフォルトの名無しさん
2019/04/30(火) 19:25:08.89ID:YvhWBPAF
バッファオーバーランって、この辺の話?
https://ja.wikipedia.org/wiki/Scanf#%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC%E3%83%A9%E3%83%B3
10デフォルトの名無しさん
2019/04/30(火) 21:07:24.59ID:tJFiug19
C問題は使う言語の問題じゃないな
もちろんc++やJavaの方がC言語よりもスムーズに書けるがC問題はアルゴリズムを知らないと出来ない

それと現代ではC言語のscanfに習熟する意味は無い
それは後回しにした方がいい
11デフォルトの名無しさん
2019/04/30(火) 21:38:58.06ID:B5WLnK8N
>>3
C を続ける必要性がゼロなら C++ に専念した方が良いかと
必要性は個々人による
大学の同級生なり、研究室等の先輩なりに相談・確認するのも良いかも知れない
12デフォルトの名無しさん
2019/04/30(火) 21:41:18.36ID:B5WLnK8N
_s 系関数でも未定義な挙動を示すコードはいくらでも書けるのでキリがないんじゃね

詳細な資料はあるけれども、入門者が読むもんじゃなし
fgets + sscanf で安全になるわけでもなし
13 ◆QZaw55cn4c
2019/05/02(木) 13:55:59.43ID:USN+R+ig
>>8
まあ他の人の意見も聴いておいたほうがいいでしょうね
個人的には何をやっても C で書けると「思える」感触ができるまで C で書きまくる経験は有用だろうと思います、時間はかかりますけれども何でも自分で実装する、という縛りを課してみる

データ構造(線形リスト、スタックやキュー、二分木やバランス木・K-dimensionなどのデータ構造)
アルゴリズム(ヒープ/クィック/シェル各種ソート、縦横探索やダイクストラ法と枝刈り・バックトラッキング、ナップサック、シンプレックス法、シャノンファノやハフマン)

いやもう、C なら何をやってもいい経験になりますね…
14デフォルトの名無しさん
2019/05/03(金) 11:34:54.23ID:Gwp1b6R4
いまどきの環境だと下部に丸投げか
15デフォルトの名無しさん
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);
:
}
とする方法がベストでしょうか?
16デフォルトの名無しさん
2019/05/03(金) 14:32:25.70ID:qNybD7B2
だめ
17デフォルトの名無しさん
2019/05/03(金) 14:34:29.48ID:xL3yQoTR
15です。
追記します。

開発系のIDEでオブジェクトのメンバー変数を表示させながら
プログラム作成をしたいので、テンプレート関数化による
ユニバーサル参照の記述は使いたくありません。
18はちみつ餃子 ◆8X2XSCHEME
2019/05/03(金) 21:34:51.81ID:Oy2+74/H
>>15
控えめに言ってクソ。 本当に const なオブジェクトが渡されたときにエラーにならない。
const なオブジェクトに const でない操作をするのは未定義だぞ。
(const ではないオブジェクトなら途中で const を経由しても書き換えて良いらしい。)

言語の作法の範囲内でなら IDE に対する配慮は工夫として評価されるかもしれないけど、
型システムによる保護を台無しにしてまでやるのはオススメできない。

少なくともこのスレでそういう工夫を是とする人はあんまりいないと思うぞ。
19デフォルトの名無しさん
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回まではいけるとか考えてもいいのかな
20デフォルトの名無しさん
2019/05/03(金) 22:05:03.91ID:VZjV/dE9
for (byte counter = 0; ; counter = (counter + 1) % 5) {
 if (Shori(counter)) { break; }
}
とか?
21デフォルトの名無しさん
2019/05/03(金) 22:23:08.93ID:16FcdCX4
おおそんな書き方が。ありがたい。
しかも脱出に関して言えば、forの中でifで判定してbreakするのではなく
forの条件式に書いてしまうこともできるな…
22デフォルトの名無しさん
2019/05/04(土) 04:03:12.91ID:qzgt3pmZ
オブジェクト指向でなぜつくるのか
って書籍が今Kindleセールで半額だけど良さそうだな
読んだことある人どんな感想ですか?
23デフォルトの名無しさん
2019/05/05(日) 03:51:38.18ID:NRm/lXtt
>>22
じゃんけんゲームを2人(自分対PC)用から(PCを)何人でも増やせる設計に変える例で
構造化プログラミングだとちょっと書き換え多そう。。。オブジェクト指向プログラミングなら~って感じ。
(そこしか覚えてないとも言う)

第2版は最終章でオブジェクト指向プログラミングの次世代は関数型プログラミングだとか言ってHaskellの紹介が追加された。
24デフォルトの名無しさん
2019/05/05(日) 11:14:43.13ID:P7bsB8ff
皆さんが一番勉強になった本を教えてほしいです。
これならわかるC++と、C言語ポインタ完全制覇は持ってるので、基本的なことはわかります。
これ読んで実力がバズった!というのがあればぜひとも。
25 ◆QZaw55cn4c
2019/05/05(日) 11:28:24.38ID:3EWrT4Pn
>>24
C++ ならハーバート・シルトの独習C++ ですね
その真ん中くらいにある「std::string を自分で実装する」というお題が非常によく、OO の教科書でそういうお題を配置しているのも本質を明示している意味でよく、この本より優れている初級C++教科書がみあたりません
26デフォルトの名無しさん
2019/05/05(日) 11:43:07.96ID:qZTOu8es
C言語を256倍使うための本
https://www.amazon.co.jp/dp/4756100430
27デフォルトの名無しさん
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++には良い印象がない。
まあ不正確でもわかりやすいことは有りうるのでとりあえずおおざっぱな概略を把握する分には
どれでも割となんとかなる気がしている。
29 ◆QZaw55cn4c
2019/05/05(日) 20:35:10.90ID:3EWrT4Pn
>>28
>独習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)
31デフォルトの名無しさん
2019/05/05(日) 22:04:35.25ID:vipN53in
俺「競プロ飽きたしC++の勉強でもするか」
isocpp.org「まずはTourofC++で概要をつかむといいよ~」
ビャーネ「Tourはプログラミングに習熟した人を想定している」
俺「短くて面白いけど難しいな。プログラミング初心者向けのはないかな?」
isocpp「じゃあこれ つ原則と実践(1248ページ)」
俺「ファッ!?」
isocpp「あと勉強するときは少なくとも3冊持っといたほうがいいよ~」
俺「ウーン…」
32 ◆QZaw55cn4c
2019/05/05(日) 22:17:13.40ID:3EWrT4Pn
>>30
毒臭を有害ゴミと判断した理由が知りたいですね…

個人的には、C++ の中の Java に似た部分を抽出して、初心者(最近は C++ に直接参入する人が多いとか…なんか時代を感じます)にやさしい、できれば分厚くない本がいいなあ
以前は accelerated C++ を薦めたりしたのですが、最近 accelerated c++ の決定的に駄目なところを見つけてしまったので、もう私が薦める本は独習しかないのでした
33デフォルトの名無しさん
2019/05/05(日) 22:37:15.85ID:RPhfdkos
>>32
有害ゴミなどど、相手が使ってない言葉に勝手に置き換えて、さも相手が感情的で非論理的な
34デフォルトの名無しさん
2019/05/05(日) 22:39:39.67ID:RPhfdkos
途中だった。

有害ゴミなどど、相手が使ってない言葉に勝手に置き換えて、さも相手が感情的で非論理的な発言をしてきたかのような印象操作は卑怯だとは思わないか?
35 ◆QZaw55cn4c
2019/05/05(日) 22:39:39.95ID:3EWrT4Pn
>>33
https://twitter.com/yumetodo/status/1020966071702966273
>言うまでもなく独習C++は時代遅れの化石で有害ゴミ行き。
使っていますが…
https://twitter.com/5chan_nel (5ch newer account)
36 ◆QZaw55cn4c
2019/05/05(日) 22:41:08.48ID:3EWrT4Pn
>>34
https://twitter.com/yumetodo/status/1020966071702966273
>言うまでもなく独習C++は時代遅れの化石で有害ゴミ行き。

印象操作などではありえず、ずばり「有害ゴミ」指定されちゃってますが…
https://twitter.com/5chan_nel (5ch newer account)
37デフォルトの名無しさん
2019/05/05(日) 22:42:08.10ID:RPhfdkos
>>36
twitterの方は見てなかった。失礼した。
38デフォルトの名無しさん
2019/05/05(日) 23:27:07.88ID:DzyvOKLj
プログラミングの最初の一歩すらわからない状態から始めるのか
Pythonやjsやphpなんかである程度書ける状態から始めるのかで話が変わると思う
後者ならググりながら適当になんか書いてみればいいと思う
39 ◆QZaw55cn4c
2019/05/05(日) 23:43:52.77ID:3EWrT4Pn
>>38
>ググりながら適当になんか書いてみれば
それは C/C++ に関していえば、ちょっと危険な気が… 逆に Python や ruby をやるのなら、それでもいいと思いますが…
40はちみつ餃子 ◆8X2XSCHEME
2019/05/05(日) 23:57:02.81ID:TxpPZKKr
>>39
それに強く同意。
C++ には未定義の挙動が多すぎるので、
表層的な理解で使うのは大変に危険である。
41デフォルトの名無しさん
2019/05/06(月) 01:21:26.82ID:oGUqqIoM
C++に関してググって出てくる情報って適当なの多いよなw
Qなんとかとか特にw
42デフォルトの名無しさん
2019/05/06(月) 04:37:01.34ID:z7Cz8mZC
どうも最近は最新のC++の機能を使うべきだとしつつ
自分なりにとりあえず適当に書くのは危険とか言う意見が多いけど
人間もあくまで動物なので手を動かして書かなきゃ覚えないしCの時代から続く古臭い書き方は長年の積み重ねでセオリー確立してんだから
そういう学習方法を否定するのは違うと思うよ

クラス、ひいては最新の機能を正しく使う、なんて初心者がいきなり目指すようなことじゃない
43デフォルトの名無しさん
2019/05/06(月) 06:08:09.39ID:Geq8Gq1G
>>42
手を動かして覚えることは誰も否定していないし、むしろそれは強く推奨したい。ただ、C/C++の場合は表面的な理解だけで動いたから良しとして進むのは危険で、基本的な部分は正しく理解しておくことは必要だと思う。
ある程度の基礎がある状態なら、新しい機能やライブラリの関数もググって得られる情報から正しい仕様を理解して習得できるが、基礎ができていない状態でそれは難しい。
初心者がとりあえず適当に切り貼りして動かそうというやり方をするなら、他の言語から入った方がいいと思う。ググって調べた断片的な情報だけでなく入門書等で基礎を押さえつつ、実際に書いて愚直に挙動を確認しながら理解をしていくのが良いと思う。
44 ◆QZaw55cn4c
2019/05/06(月) 11:40:40.36ID:vu8V8zIe
>>42
>人間もあくまで動物なので手を動かして書かなきゃ覚えないし
プログラミングは特に、自分で書いて書いて書きまくって読んでというところは同意
となれば、ちょっと書く気になろうという心の動きを、分厚い教科書で潰したくない、という趣旨は理解
さて、困ったものです、そういうときに使える教科書があればいいのですが、C/C++ の教科書って高くて分厚いですからね…私もメイヤーズはまだ積読だし、いつ読む気になるかな?
45デフォルトの名無しさん
2019/05/06(月) 13:27:09.96ID:MWPsBkkn
300ページ未満の入門書…
46デフォルトの名無しさん
2019/05/06(月) 13:46:12.30ID:z7Cz8mZC
まぁ確かにサンプルコードの切り貼りとかは危ないだろうしネットの情報だけってのはね
でも独習みたいな古臭い(03以前)入門書なんて初心者にうってつけだと思うんだけど

・・・って、twitterでこき下ろしてる奴のアカウント名に見覚えあるわw
そいつ勘違いの激しい学生ちゃんだから言ってること真に受けない方がいい
47デフォルトの名無しさん
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 程度は想定している本の方がいいんじゃないかな、と個人的には思う。
50 ◆QZaw55cn4c
2019/05/12(日) 18:12:45.12ID:wqyHUvPG
>>49
> C++11 程度は想定している本の方がいいんじゃないかな

しかし、C++03 までのからくりをしらずして、C++11 のあれこれを理解できるかな?とも思うのです、ranged for の for(auto &item; vec) の & の意味とか…これはあんがい簡単にクリアできるのやもしれませんけど
51デフォルトの名無しさん
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;
};
52デフォルトの名無しさん
2019/06/13(木) 23:30:30.78ID:CsiJtfL2
A<float>::fを定義するにはA<int>の定義(classのサイズ)が必要
fの定義をA<int>のあとにすればできる
https://ideone.com/Vv0Psu
5351
2019/06/14(金) 00:54:44.79ID:rrlL2Eyk
>>52
おお!マジで出来たw
ありがとう
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
55デフォルトの名無しさん
2019/06/18(火) 09:08:30.02ID:Sq2beh5p
文字コードが同じじゃなければbreakということでいいんじゃない?
len+1しているのはヌル文字があるから
56デフォルトの名無しさん
2019/06/18(火) 09:20:54.17ID:R6plNfEa
まず配列について勉強だね
デバッガのステップ実行で追っていくといいよ
57デフォルトの名無しさん
2019/06/18(火) 09:21:46.85ID:3nOE2mBA
プログラム板の精神病コテ 松本卓朗 さん殺害予告!
http://2chb.net/r/tech/1560808598/
58デフォルトの名無しさん
2019/06/18(火) 11:28:13.79ID:uO3416eX
文字列が同じ = 1文字1文字全部同じ = 1文字でも違えば違う
strlenは文字数を返すけど最後の\0を含まない
最後の\0まで比較しないと入力した文字列と先頭部分が一致したら一致してしまうのでlen+1
59デフォルトの名無しさん
2019/06/18(火) 11:38:40.31ID:YX5RP0uz
文字列長の短いほうを len としないと突破したところを参照してまうぞ

str1 = asd\0
str2 = asdf\0
で str2 の len+1 まで str1 を参照すると嘔吐
60デフォルトの名無しさん
2019/06/18(火) 11:39:47.81ID:YX5RP0uz
まぁ 文字列長がちがったら いきなり不一致って脱出してもいいんだけどね
61デフォルトの名無しさん
2019/06/18(火) 11:50:07.19ID:uzZY1452
https://ideone.com/JUWWBr
分かり易くなったゾ

変数を減らせばラク
lenで判定してるイマイチな書き方を排除すればもっとラク
要するに分かりにくく書いてるから分かりにくいだけだよ
62デフォルトの名無しさん
2019/06/18(火) 12:00:25.27ID:YX5RP0uz
元々は入門書に書かれてたコードか
むむむ
63デフォルトの名無しさん
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」まで分かってても全体が分からないようになってる
64デフォルトの名無しさん
2019/06/18(火) 12:55:58.74ID:GYXVYwQo
ポインタを知らないであろう初学者にポインタ演算を使って分かりやすいとする鬼畜の所業
65デフォルトの名無しさん
2019/06/18(火) 16:53:31.85ID:eB4Ftz1Y
>>57~63回答ありがとうございます
説明下手でスイマセン。このコードが書いてある前のページに文字列の比較は出来ないため
str1==str2と書いて判定は出来ないと書いてあったのに
14行目でstr1[i]!=str2[2]で判定してるのがよくわからないです
strlenは\0返さないのですね。そこはスッキリしました。ありがとうございます
66デフォルトの名無しさん
2019/06/18(火) 18:05:58.84ID:U3/WUc9c
>>65
str1==str2はポインタ(それぞれの文字列が格納されている先頭アドレスの値)を比較してるだけ。
str1[i]!=str2[i]は、str1とstr2のi番目の文字を比較している。
67デフォルトの名無しさん
2019/06/18(火) 18:50:13.29ID:ujoReLWG
>>66
文字列の中身を比較してるんじゃなくて先頭のアドレスを比較していて
str1[i]!=str2[i]は文字列の中身を比較してるってことなんですね
もやもやが解けました。ありがとうざいます
68デフォルトの名無しさん
2019/06/18(火) 19:28:14.92ID:U/JJd+xv
>>59
馬鹿なの?
69デフォルトの名無しさん
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;
}

これのスマートな書き方を教えてください。
71デフォルトの名無しさん
2019/06/18(火) 22:45:19.63ID:BC11WozD
ここで聞いていいのかわからないけど
組み込み系で上位割り込みでライト、下位割り込みでリードする場合割り込み禁止する必要ありますか?
72デフォルトの名無しさん
2019/06/18(火) 23:11:51.18ID:gZnFDsgJ
>>70
それ以上にスマートな書き方なんてない
素直が一番

>>72
atomicにアクセスできないなら必要
readの途中でwriteが発生したらダメだし、
writeの途中でreadが発生してもダメなんだから、上位/下位は関係無い
73デフォルトの名無しさん
2019/06/18(火) 23:13:26.53ID:48k2aFsK
>>70
bの型が不明な場合はスマートな書き方は特に無い
74デフォルトの名無しさん
2019/06/18(火) 23:24:05.71ID:f34xyyaF
>>70
int a = b < 1 ? 0 : b - 1;
75デフォルトの名無しさん
2019/06/18(火) 23:28:32.54ID:BC11WozD
>>72
何故ダメなのかが理解できてません。
書き忘れてましたが割り込みはタイマで周期的に発生させてます。
リード中にライトが発生しても下位割り込みは一周期遅れて上位割り込みのライト結果をリードするだけではないのですか?
76デフォルトの名無しさん
2019/06/18(火) 23:45:23.52ID:gZnFDsgJ
>>75
writeの割り込みが発生するまではreadは進行するんじゃないの?
だから「readの途中で」なんだけど
「2つの割り込みは完全制御下にあり、read中にwriteは発生しない」なら大丈夫だよ、当然
77デフォルトの名無しさん
2019/06/19(水) 00:02:23.61ID:/MswhT0Q
>>75
>リード中にライトが発生しても下位割り込みは一周期遅れて
ここがちょっと勘違いを感じる
割り込み処理が終わったら、割り込まれた処理の続きをするのよ
低レベルにDBのrollbackみたいな複雑な仕組みはないのよ
78デフォルトの名無しさん
2019/06/19(水) 02:33:40.48ID:v2+76oWz
char型の動作がどうもわからない。
例えば 
char str[] = "abc"; として
cout << &str[0]; ----> abc
になるのはなんで? index 0番だから a がでると思ったんだけど...
初心者ですまん
79デフォルトの名無しさん
2019/06/19(水) 03:26:09.45ID:0DgdOBcz
>>78
&str[0]に付いてる&はアドレスを取得する演算子だから、strの最初の文字「a」のアドレスを取得するという意味になり、
結果的には cout << str; と同じことになる。
80デフォルトの名無しさん
2019/06/19(水) 05:18:40.21ID:xxgeB2IO
>>78
cout << &str[0] << '\n';
cout << str[0] << '\n';
この2行でソースと実行結果を見比べれば腑に落ちるんじゃないかな。
81デフォルトの名無しさん
2019/06/19(水) 08:25:58.04ID:huda4IDC
>>76
>>77
下位割り込みのリードが一命令で完了するなら「リードの途中でライト」が発生しないので割り込み禁止しなくていいということですか?
例えばリードライトの対象が配列なら割り込み禁止要、変数単体なら不要
82デフォルトの名無しさん
2019/06/19(水) 09:03:32.83ID:bPRT+MIA
>>81
アセンブラ確認してほんとに一命令なら良いけどそうじゃないなら結局危険じゃない?
Cで1行だからアセンブラでも一命令とはかぎらんよ
83デフォルトの名無しさん
2019/06/19(水) 09:06:41.55ID:zjjAtQWn
ちなみに上位下位って割り込みの優先度のこと?
84デフォルトの名無しさん
2019/06/19(水) 09:22:03.41ID:RukLP400
たとえ1命令でも安全かどうかはcpuによる
あいまいな質問にはあいまいな回答しか返らない
マニュアル読むのが正解
85デフォルトの名無しさん
2019/06/19(水) 09:54:17.80ID:huda4IDC
>>82
なるほど。極端な例ですがcでword変数への代入処理一行だったとしてもアセンブラでは上位バイト、下位バイトを分けて代入してるかもしれませんもんね。

>>83
そうです。

>>84
アセンブラで一命令でもまずい場合ありますか?例えでもよいのでご教授頂けたら助かります。
86デフォルトの名無しさん
2019/06/19(水) 11:34:02.00ID:kjBiA8ae
vector<std::vector<char> > vec;
の二次元配列で、一行を削除するのはどうしたらよいのでしょうか。

int row = 1;
vec.erase(vec.begin() + row );
ではだめなんでしょうか。
87デフォルトの名無しさん
2019/06/19(水) 11:40:44.36ID:kjBiA8ae
すみません。これでちゃんと動きました。
お騒がせしました。
88デフォルトの名無しさん
2019/06/19(水) 15:30:59.62ID:2x/CN7xY
>>70
int  a = max(b - 1, 0);
というような書き方を見たことが有る。
89デフォルトの名無しさん
2019/06/19(水) 20:53:07.15ID:RukLP400
>>85
だから一般論で答えられないって言ってんの
使ってるcpuのマニュアル読め
書いてあるから
90デフォルトの名無しさん
2019/06/19(水) 23:49:00.15ID:v2+76oWz
>>79
>>80
回答ありがとう。
そもそもaddress-of演算子でIndex 0番を指定してるのに アドレス値じゃなくて 文字が出てくることが混乱の元だった。

char型については>> 演算子がオーバーロードされててc-stringとして解釈される。
実際のアドレスを出力したい時は
cout << (void *)&str[1]; とする
って感じでいいのかな?
91デフォルトの名無しさん
2019/06/23(日) 01:18:33.15ID:X4lwQ0L+
学校の課題でバブルソートアルゴリズムを使った画像処理の課題で、VSの警告にfor-loopの定義が無効です:最初の条件はテストを満たしていません。ループボディは実行されませんと出てきます。これはどういった原因で出てくる警告なのか教えほしいです
92デフォルトの名無しさん
2019/06/23(日) 01:30:30.52ID:xbroTRmV
ループの初期状態でループ終了条件を満たしている
93デフォルトの名無しさん
2019/06/23(日) 01:31:24.99ID:xbroTRmV
単純化すればこういうこと
for (int i = 0; i < 0; i++)
94デフォルトの名無しさん
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
http://2chb.net/r/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のフォルダ内、何処を探しても生成されてません;何処に有るのでしょうか?
97デフォルトの名無しさん
2019/06/24(月) 09:37:54.94ID:LpgW8DGO
ドキュメントにプロジェクトを作らなかったか?
その中かと
98デフォルトの名無しさん
2019/06/24(月) 10:06:16.55ID:N4e4wdnY
>>96
「ソリューションのフォルダ内」であって「VisualStudioのフォルダ内」じゃないぞ
99デフォルトの名無しさん
2019/06/25(火) 07:24:49.37ID:jHEFOU5u
>>96
取りあえずコマンドプロンプト開いて
dir /s /b ¥test.txt
ってやってみ
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;
}
101デフォルトの名無しさん
2019/06/26(水) 07:52:05.91ID:Re4GWmuT
>>100
erase で無効になったイテレータの使用により動作は未定義となります。
そのコードの場合は erase 直後にくるループ条件にある比較時点で。
102デフォルトの名無しさん
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;
107蟻人間 ◆T6xkBnTXz7B0
2019/06/28(金) 01:56:07.93ID:5qyojIkB
>>106
テンプレート構造体内部の型。
108デフォルトの名無しさん
2019/06/28(金) 02:11:51.51ID:4VImPalK
const_cast<decay_t<decltype(i)>&>(i)
で大体事足りる

まあ大抵は
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ってあんまり詳しくないですけど、よくこんなの考えたなぁと感心します
仕組みを知らないと魔法使ってるみたいに見えますね
110デフォルトの名無しさん
2019/06/28(金) 18:20:06.99ID:SuTGhcfs
作りたいものにC++が必要なので1から学んでるプログラミング初心者です

biginteger という型の使い方・使い道がよくわからず悩んでいます。
111デフォルトの名無しさん
2019/06/28(金) 21:15:56.74ID:+JSlLfql
C/C++の標準にそんな型ないよ
C#にBigIntegerあるみたいだね
使い方は普通の整数型と同じ
使い道は、大きな整数を扱いたい時

使い道がわからないものを無理に使う必要ないんじゃね?
112デフォルトの名無しさん
2019/06/28(金) 21:19:18.85ID:U9hxi1vj
多倍長整数ならboostには入ってるからそのうち標準にも来るかもね
113◆QZaw55cn4c
2019/06/28(金) 21:46:26.65ID:FS2l1RCX
>>110
http://2chb.net/r/tech/1434079972/51
私は biginteger が欲しかったので自分で書くことにしました
114110
2019/06/29(土) 19:00:51.29ID:gqtgvd1f
標準の型じゃなくて読み込んでるライブラリ?のクラスだったみたいです
そっちのマニュアルを見て見たら詳しく書いてありました…
いろいろ教えていただきありがとうございました。
115デフォルトの名無しさん
2019/07/24(水) 09:52:41.24ID:0j2752sC
オブジェクト指向を使ってないアプリを c++ (コンパイラはg++6)で作るのは良でしょうか?それとも推奨されないでしょうか?

当方、意図せずにそうなってしまいました。
Cで書いてるつもりだったのですが、Cでは認められないと知らずにブロック頭以外の所での変数の宣言などを使っていて、
116デフォルトの名無しさん
2019/07/24(水) 10:00:57.54ID:zKJbgf3R
Cで書いてるつもりがC++になってた、は良くはないけど別に気にすることじゃないかと
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 の上位互換ならこれで良いように思えます。
119115
2019/07/24(水) 12:48:43.68ID:qoUieyoj
>>117
そうなのですか?
私の見た情報が古かったのですかね。
120デフォルトの名無しさん
2019/07/24(水) 13:31:50.28ID:zKJbgf3R
>>118
いや、プログラムってそもそも道具なんだから何で書かれてるかとかどうでもいいかと
複数人で開発していて他人もコードを見ることがある、技術情報として発信する、要件として言語の指定がある
とかいう縛りがあるならその縛りに応じるようにコードを書き直せば良い
個人的にはCでなければ困るというのでなければC++にするし、多少の困りくらいなら回避してC++にする
基本的にC++はCの上位互換
121115
2019/07/24(水) 20:52:46.78ID:qoUieyoj
私が知りたかったのは、ソースを書くのに何言語を選ぶべきか、でははないです。
知りたかったのは、例えば、
「ソースが c -> gcc 。ソースが c++ -> g++」
をしないで
「一切合切どちらも常に g++ 」でも良いのか?でした。
122デフォルトの名無しさん
2019/07/24(水) 21:07:11.23ID:0jLIOgkf
>>121
ダメです。兄弟はもう袂を分かちました。
30年前の仕様しか使わないと心に決めているならお好きに…
123115
2019/07/24(水) 22:28:11.62ID:tRuObC3H
>>122
>>121
>ダメです。兄弟はもう袂を分かちました。
>30年前の仕様しか使わないと心に決めているならお好きに…

どうもです。そうなのですね。
「一切合切 gcc 」はダメでも「一切合切 g++ 」なら大丈夫かと思ってしまいました。
なにぶん始めたばかりでして、この辺りの常識がないのです。
124デフォルトの名無しさん
2019/07/24(水) 23:59:42.77ID:7wBUx5ir
良い悪いじゃないけど
実質的に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より遅くなるということは有りません。
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++勉強に当たっておすすめ定番の本あれば
ご教示ください
129デフォルトの名無しさん
2019/08/05(月) 22:55:30.85ID:vqN4pUkV
今時ならUbuntu入れてatomなりvs codeなり入れりゃいいんじゃないかな
純粋にc++の勉強したいなら

VCは独自仕様が酷すぎるから言語学習には不向き
130デフォルトの名無しさん
2019/08/05(月) 23:01:28.37ID:nblSLoEW
VCの独自仕様が気に入らんのならVS2019で対応したLLVMツールセットを使えばいい
初心者にIDEなしはモチベ維持が困難
131デフォルトの名無しさん
2019/08/05(月) 23:18:05.24ID:f20npl5p
独自仕様ならGCC、未実装ならVCってかんじだがどちらも独自仕様はオプションで制御できる
まあWindows環境でやるならVisualStudio使わないのはマゾ

おすすめできる定番の本についてはどれも一長一短だし
テンプレートの利用くらいまで扱ってればとりあえずなんでもいいと思う
132デフォルトの名無しさん
2019/08/05(月) 23:29:17.63ID:vqN4pUkV
vcのは独自と言っても、なぜかコンパイルが通らない
なぜかコンパイルが通る
なぜかリンクエラーが起こる
みたいなあまり明文化されていないのだから面倒
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
135デフォルトの名無しさん
2019/08/06(火) 00:52:13.35ID:pONItBAd
コマンドライン引数ってのが何を出来るものなのか全く分からないのですが、何が出来るものなんでしょうか?
書き方はまー分かったんですけど、空のメモ帳をドラッグ&ドロップすると意味あるみたいなこと書いてあるけど何も起こりません…

使用環境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で確保したサイズを超えてしまったりしないのでしょうか
137デフォルトの名無しさん
2019/08/06(火) 14:04:02.23ID:AX25/xXa
根本的な部分の理解が足りていない気がするが直接の答えとしては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
140デフォルトの名無しさん
2019/08/07(水) 00:46:34.02ID:nHUnBCAO
const char* name;
ってしてもダメなの?
141デフォルトの名無しさん
2019/08/07(水) 04:58:05.08ID:pFHPYbJE
>>140
それはやったんですけど出来ませんでした
paizaとかはconstとか付けなくても付けても出来ましたけどVSでは出来ないのでしょうか?
142デフォルトの名無しさん
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
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];
とするものお勧めです。
147デフォルトの名無しさん
2019/08/07(水) 11:36:34.89ID:Io4EJaZl
少なくとも>>139のリンクにあるコードはchar*にリテラルを入れようとしてるのでNG
constをつけても駄目なのは生成後に代入しようとしてるから
てか意味もなくグローバルスコープの構造体とかやめろ
148デフォルトの名無しさん
2019/08/07(水) 17:26:37.26ID:Io4EJaZl
あと特に理由がないなら文字列はstd::stringを使うべき
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++ の言語仕様的には。
151デフォルトの名無しさん
2019/08/08(木) 16:00:04.26ID:uMVCdDWb
独自のクラスに比較演算子==を実装する時、クラス内に定義するのとグローバルで定義するのとでは、実装の仕方以外に違いがあるのでしょうか?

また、例えば独自クラスと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つの演算子を定義するしか方法がないと「思います」
154デフォルトの名無しさん
2019/08/08(木) 23:38:32.45ID:gitRBAeC
クラス内に定義するのとグローバルで定義するのとってどういう意味でだ?
クラスのメンバ関数と普通の関数として定義するのとってこと?
あるいはクラスのstaticメンバ関数と普通の関数?
そういうのとは違ってクラス定義の中にメンバ関数の定義も書くのと
クラス定義の中では宣言だけで外に定義を書くのとってこと?
155デフォルトの名無しさん
2019/08/09(金) 01:10:13.49ID:QHhCdgXb
>>151
クラス内に定義すると当然メンバー関数扱いなるのでprivateメンバーにアクセスできるが、左辺を自クラス、右辺をintにoperatorしか定義できない。
クラス外に定義すると、そのままではprivateメンバーにアクセス出来ないが、左辺、右辺どっちでも自由に定義できる。
156デフォルトの名無しさん
2019/08/09(金) 01:23:46.70ID:QHhCdgXb
>>151
相手がintの場合はわざわざoperator==を定義しなくても、intへの型変換operatorを定義すれば勝手に変換してくれるので、そっちの方が楽だと思う。
157デフォルトの名無しさん
2019/08/09(金) 04:08:33.63ID:P26n3T2n
>>151
どっちでもいいに一票
どっちが自然か&楽かで決めればいいとおも
158デフォルトの名無しさん
2019/08/09(金) 11:09:20.14ID:0rjrOlB6
>>155
大きな違いとして出てくるのは実装面の都合になってくるわけですね
>>157 の方の言う通り楽な方で実装しようと思います

>>156
型変換のオペレータを実装するのは思いつきませんでした
確かにそれが一番手っ取り早いですね
教えていただきありがとうございます
159デフォルトの名無しさん
2019/08/10(土) 01:46:44.99ID:07GKNAvB
質問ですがリフレクションってのは何ナノですか?
これがないのがC++の欠点って言われてるそうですが
160デフォルトの名無しさん
2019/08/10(土) 02:13:52.05ID:0AyH8q+k
ググって何がわからなかったのか書けよ
そういう気配り謙虚さがないからお前は伸びないんだよ
161デフォルトの名無しさん
2019/08/11(日) 09:19:19.57ID:tY3BhpyE
【初心者歓迎】C/C++室 Ver.105【環境依存OK】 	->画像>4枚
かっこいい
162デフォルトの名無しさん
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そのものとしか
配列は随所でポインタに変換されるから混同するのもわからんでもないが
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);も、本当は配列そのものを渡したいんだけどできないから
そういう意味だと解釈される
168デフォルトの名無しさん
2019/08/13(火) 07:20:08.26ID:j44aRWG6
つまり、めんどくせぇし表現乱立するくらいならvectorなりarray使えってことだな
169デフォルトの名無しさん
2019/08/13(火) 16:33:08.61ID:qE6XkMY1
mallocした配列なら*
二次元配列なら**
三次元なら***

すんごく分かり易いじゃん
170◆QZaw55cn4c
2019/08/13(火) 16:50:37.78ID:RSblMGL3
>>167
>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 として
手を付けるのは あり?
174デフォルトの名無しさん
2019/08/14(水) 11:07:19.09ID:ULyjZxwK
Better Cっていう用語があるくらい一般的な使い方です
175◆QZaw55cn4c
2019/08/14(水) 16:51:47.26ID:tpn/GSyz
>>173
みんなそうやって C から C++ に移ってきたのだと、私は思います
176デフォルトの名無しさん
2019/08/14(水) 19:59:27.72ID:H7xh21M5
>>175
お前はC++の機能はまともに使えてないけどな
177◆QZaw55cn4c
2019/08/14(水) 20:13:46.55ID:tpn/GSyz
>>176
どんなところが「まともに使えていない」と感じられるものだったのでしょうか?
178デフォルトの名無しさん
2019/08/14(水) 21:53:50.90ID:xRZNaRgT
いや、もうc言語とかいいじゃん、 c++使おうよ
配列で悩むのめんどくさくね?
配列のサイズ渡せないとか欠陥だからマジで
179デフォルトの名無しさん
2019/08/15(木) 06:20:44.75ID:KtlbsHo8
>>176
どうせメタプログラミングもまともに出来ない雑魚だろ?

>>178
vectorやarrayじゃないと渡せないと思ってる?
180デフォルトの名無しさん
2019/08/15(木) 07:46:25.74ID:xtiqLszO
>>179
じゃあ、共通的なやり方で動的配列のサイズ渡してくださいよ
どうやるんですか?
181デフォルトの名無しさん
2019/08/15(木) 08:00:09.50ID:KtlbsHo8
>>180
お前わざと条件増やしたろ?
182デフォルトの名無しさん
2019/08/15(木) 23:28:39.14ID:/raW50Q0
メタプロなんてできない方がかえって生産性あがるわ。
カスが使うと無駄にモジュラリティーの低いもの作るだけ。
183◆QZaw55cn4c
2019/08/16(金) 15:30:12.59ID:s6h04g1l
>>182
貴重なお言葉恐悦至極に存じます、メタプロとかは私は一生理解できないと思っていますが、それでもいい、というお言葉ですよね…
184デフォルトの名無しさん
2019/08/16(金) 17:52:44.76ID:WXGx/ZZ4
>>182
> 「カスが使うと」無駄にモジュラリティーの低いもの作るだけ。
よくわかってるじゃないかw
185デフォルトの名無しさん
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:Y5iyjQTU
>>177
何か指摘するとまたイチャモンつけて否定するだけだろ
俺がまともに使えてないと感じた
理由は自分で考えな
188◆QZaw55cn4c
2019/08/16(金) 23:02:28.12ID:s6h04g1l
>>187
>何か指摘するとまたイチャモンつけて否定するだけだろ
そうでもないと思いますよ…実感では 3% くらいしか使っていないかと
189デフォルトの名無しさん
2019/08/16(金) 23:54:46.13ID:thOVjQYW
>>183
理解の問題じゃなくてセンスの問題だつってんだよバカ。
190◆QZaw55cn4c
2019/08/17(土) 00:55:09.12ID:ToRIVhzM
>>189
そうですか、でも、それはそれで興味深いですね
センスの問題、ということは非言語領域的テーマだろうか、と推察しますが、
コンピューター言語という極めて形式的=言語的な領域の話にて非言語的概念が語られる、いや、それが最重要であるというところに奥の知れない「恐ろしさ」を予想します
191デフォルトの名無しさん
2019/08/17(土) 02:40:02.84ID:MepC3sRG
(どうもコンパイル時最適化が効くからテンプレートメタプログラミングするって人がいないように思う)
192デフォルトの名無しさん
2019/08/17(土) 09:39:59.02ID:1UQd730E
コンパイル時最適化て、C++の最適化は普通コンパイル時とリンク時だけやろ
193◆QZaw55cn4c
2019/08/17(土) 11:22:38.89ID:ToRIVhzM
>>192
リンク時に最適化するのですか?単にリンカがリンクするだけだと思っていましたが
194デフォルトの名無しさん
2019/08/17(土) 12:18:18.80ID:1UQd730E
メジャーなコンパイラにはある機能だよ
リンク時最適化で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などでないとやはりコードのクオリティが下がることになってしまうのでしょうか?
198デフォルトの名無しさん
2019/08/17(土) 15:52:09.37ID:BZ3r0cTp
newからdeleteまでの間の例外処理に不備がないと自信があるなら生配列で構わん
199デフォルトの名無しさん
2019/08/17(土) 16:56:59.91ID:kME64/ZP
>>197
静的配列なら生配列もありかと思う
静的配列でもarrayのメソッド使いたいとか引数で他の関数等に渡すとかあるならarray
動的配列なら他に理由がない限りvector一択
200デフォルトの名無しさん
2019/08/17(土) 17:14:22.35ID:WCU4L4CL
>>197
生配列とarrayやvectorのメリットデメリットや使い分けを理解せずに何も考えずにarrayやvectorにする方がいいらしいなんて理解の仕方ならクオリティは低いままだよ。
201デフォルトの名無しさん
2019/08/17(土) 18:13:22.13ID:1UQd730E
>>195
その表現もおかしいけどな
テンプレートによってマクロ展開的に生成されたコードにも等しく最適化がかかるだけであって

>>197
コードのクオリティとか良いコードとかより、最終的にどちらがユーザーの利益になるかどうかを考える方が健全だと思うけど
202デフォルトの名無しさん
2019/08/18(日) 00:09:06.82ID:XCKtcmfj
>>201
マクロ展開で実行評価される必要のない部分が削られるって話なんだが
あんまり理解してないでしょ?
まあ別に理解してないならしてないでほとんどの場面で使わなくていいものではあるが。
203デフォルトの名無しさん
2019/08/18(日) 08:44:15.16ID:vyOg2WJ0
>あんまり理解してないでしょ?
こっちの台詞だよ
必要とされたときに初めて実体化されるの
必要ないのに全ての型全ての組み合わせ用意してから削ってると思ってたのか
204デフォルトの名無しさん
2019/08/18(日) 09:58:09.36ID:S9bN8HAf
>>197
「配列 キャッシュ効率」で調べると次のようなものが出てくる
平たく言うと「配列をキャッシュに乗せる」

プログラミング :: 高速なプログラムを書く為に :: メモリ
http://myoga.web.fc2.com/prog/cpp/opti02.htm

Processingで見るプログラミングスタイル七変化 - Qiita
https://qiita.com/FAL/items/19be333d55f7fcb1943a

プログラムを高速化する話
https://www.slideshare.net/KMC_JP/ss-45855264
205デフォルトの名無しさん
2019/08/18(日) 12:05:15.42ID:XCKtcmfj
>>203
やっぱ変数評価の問題とマクロの関係を全く理解してないんだな。
>>196
そういう型マッチングシステムに依存しまくったものの危険性を全く理解してないのが
問題なんだよ。
SFINEとか型マッチングシステムのデバッグしずらいものに頼る問題を
全く意識していない輩が多すぎる。
206デフォルトの名無しさん
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ってやつじゃないの?

理解させるために言葉を工夫するつもりが無いなら黙ってくれていい。
210デフォルトの名無しさん
2019/08/18(日) 18:15:25.68ID:XCKtcmfj
>>209
理解してないならそういえばいい。
とりあえずcommon-lispでも勉強することをオススメする。
少しは見識が広がると思うよ。
211デフォルトの名無しさん
2019/08/18(日) 22:22:43.25ID:4oEGaRbg
>>210
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言うたら相手びびるはずやっ
215デフォルトの名無しさん
2019/08/19(月) 11:27:33.54ID:icNxZHqv
まずはダイナミックとスタティックの違いがある
静的なものは未来永劫不動なので、一度作ったら未来でも一切変わらない
動的なものは「未来は不定である」「未来は誰にも分からない」という哲学あるいは神学から作られたので、未来に挙動が変わる

決定論的な未来の世界観では一度作ったらそれきり、静的なものが出来上がる
ここでいう決定は本当に神学で、全知全能の神を指している
未来の事柄があらかじめ全部分かっていれば、ダイナミックなことはしなくて良くなる、というのが、彼ら西洋人の究極の理想論

今分かることは動かす前に全部決め打ちすりゃーいい、ってのが静的だ
216◆QZaw55cn4c
2019/08/19(月) 18:55:20.55ID:D6AI5dRa
>>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を呼ばないといけない。
219蟻人間 ◆T6xkBnTXz7B0
2019/08/19(月) 20:48:42.67ID:GYeBbzEk
ただし、同じ実体に対して2回free関数を呼ぶことはできない。
また、解放した実体のメンバーは参照することができない。
参照すると、不正読み込みでプログラムが異常終了するかもしれない。

ということでパズルのように解放方法のアルゴリズムを考案しないといけない。
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;
}
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:OunjwQY3
>>218
かなりコンパクトに纏めていただきありがとうございます
ただまだcallocとポインタ型のキャストがいまいち分からなくて😪
すいません
224さまよえる蟻人間 ◆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適切なキーワードを教えてください.
226デフォルトの名無しさん
2019/08/20(火) 13:45:18.40ID:XxGMpj+X
animalの配列にdog, catをアップキャストしてぶち込む
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先生に質問できます.
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>());
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+X
>>232
std::unique_ptrだからうまくいかない
生ポインタにするだけで通る
235デフォルトの名無しさん
2019/08/20(火) 19:03:13.66ID:KUiZK6p2
>>230
普通にとおるような
236デフォルトの名無しさん
2019/08/20(火) 19:04:40.28ID:KUiZK6p2
https://wandbox.org/permlink/cnOTu7uhuEfon7Nv
237デフォルトの名無しさん
2019/08/20(火) 19:05:34.46ID:PwBGX6fG
>>230
VS2019だと問題なくコンパイルできるけど。
Animalをpublic継承していないとかだったりして。
238デフォルトの名無しさん
2019/08/20(火) 19:54:26.69ID:vf53Ia55
>>230
> push_backでエラーが出てコンパイル出来ませんが…
なぜエラーメッセージを貼らないの?
239デフォルトの名無しさん
2019/08/20(火) 20:23:10.77ID:QkieET4w
つか、エラー貼るまでもないだろ

std::unique_ptr

コイツはmovしかできないから、コンテナに格納できる条件に合わない。

スマートポインタをコンテナに入れたかったらsharedポインタを使う

常識じゃなかったのか
240デフォルトの名無しさん
2019/08/20(火) 20:36:33.84ID:rT2paKVb
unique_ptrはコンテナに格納可能という俺の常識とは違うようだな
241デフォルトの名無しさん
2019/08/20(火) 21:46:43.07ID:vf53Ia55
>>239
>>235-237でエラーなくコンパイルできるのに何を言ってるんだよw
242デフォルトの名無しさん
2019/08/20(火) 23:47:14.68ID:ehCs1rOT
>>239
std::unique_ptrはコンテナに入れられるぞ
std:auto_ptrをコンテナに入れた場合に起きるCOAPという問題は起きないんだぜ
243230
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:
...
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に読み込む速度は違うんですかね。
248さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/08/26(月) 19:30:09.75ID:doK8kIo2
>>247
後者は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画像読み込みの方が気がラク
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で巨大ファイルをリソース化しようとしたときに出るコンパイルエラーだな
どのタイミングで出たエラーか書いてないからわからんけど
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ぐらいになるとエラーが出ます。
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
って設計するかな
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
の対策を片っ端からやればいいんじゃね?
263デフォルトの名無しさん
2019/09/12(木) 12:49:41.16ID:J5GPib5U
スレチのような気もするんですが,ここが一番適切な回答がありそうなんで,質問させて下さい.
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はけっこうがっかりだった記憶が….
タッチでジャンプできると嬉しいのですが….
便利そうなエディタは何個かあるみたいなんですが,ジャンプ機能がないんですよね.
266225
2019/09/17(火) 22:40:09.17ID:iQJ8U52u
以前 >>225 で質問させてもらったものです。
>>230 で書いたようなプログラムを作ってるんですが、
DogやCatだけでループを回したいんですがどうしたら良いですか?
Dogだけの配列とCatだけの配列作ってから、Animalのポインタでそれらの配列を
参照すれば出来るのかなと思ってるんですが、考え方はあってますか?
267デフォルトの名無しさん
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のポインタを突っ込めるはず。
269デフォルトの名無しさん
2019/09/17(火) 22:54:48.57ID:cgXPZZnO
>>268
んでサウンドは使えるようになったか?w
270デフォルトの名無しさん
2019/09/17(火) 23:00:14.32ID:iQJ8U52u
>>268
ポインタ突っ込む方法を具体的に教えてくれませんか?
ポインタがよく分からないです…。
271蟻人間 ◆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];
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
275デフォルトの名無しさん
2019/09/17(火) 23:12:50.50ID:iQJ8U52u
DogやCatのインスタンスも複数あって、
Dog だけでループとかCatだけでループとかしたいんです。
animalだけでループするなら書いていただいたので良さそうなんですが。
276蟻人間 ◆T6xkBnTXz7B0
2019/09/17(火) 23:15:14.33ID:vrvr50SL
>>275
目標の設定と要件定義が先
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:iQJ8U52u
>>278
何言ってるか不明ですがキーワードありがとうございます。
とりあえずググります。
284デフォルトの名無しさん
2019/09/17(火) 23:23:03.14ID:Ps8IF7R/
for(auto a : animals){
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.関わらない\ (゚Д゚,,)
          ||________⊂⊂ |
  ∧ ∧    ∧ ∧    ∧ ∧    | ̄ ̄ ̄ ̄|
  (  ∧ ∧ (   ∧ ∧ (  ∧ ∧ |      |
~(_(  ∧ ∧ __(  ∧ ∧__(   ∧ ∧ ̄ ̄ ̄
  ~(_(  ∧ ∧_(  ∧ ∧_(   ∧ ∧  は~い、先生。
    ~(_(   ,,)~(_(   ,,)~(_(   ,,)
      ~(___ノ  ~(___ノ   ~(___ノ
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:iQJ8U52u
>>284
理解しました。
そのif文つかうとOpenMP使うときにロードが均等に分散されないので、
dogだけの配列欲しいですね。
290デフォルトの名無しさん
2019/09/17(火) 23:41:03.11ID:4Zel//hf
>>289
それなら条件に該当するエントリのポインタを抜き出した配列を作ってループすればいいんじゃないか?
ループ内の処理が並列化する価値があるくらいコストかかるなら、ポインタを抽出してコピーするコストは無視できるかと思われる。
291デフォルトの名無しさん
2019/09/18(水) 00:08:00.90ID:yNiXaOMn
>>290
ありがとうございます。
それやってみます。
292デフォルトの名無しさん
2019/09/18(水) 12:06:57.92ID:L8SHYgAR
>>266
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年以上前に配列要素を一つ以上書かないといけない処理系があったな
タイムスリップでもしてきたか
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?
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?
298デフォルトの名無しさん
2019/09/22(日) 17:27:15.07ID:kTa1SMwh
>>296
ポインタだぞ?
299デフォルトの名無しさん
2019/09/22(日) 18:52:04.08ID:9/tlWbjv
>>294
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++ とは直接の関係がなくてスマソ。 どのスレがベストかわからんかったもんで。
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 くらいしか選択肢がなくなる。
でも嫌。 っていう話。
304デフォルトの名無しさん
2019/10/01(火) 20:00:47.20ID:gawiB1ps
20年以上前からある問題だな
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 をコマンドラインでも適用してくれよって思ってる。
308デフォルトの名無しさん
2019/10/02(水) 12:47:26.92ID:55+aQRnY
>>301 >>303
C:\bin
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アプリケーション側は知らなくて良いし知らない方が良い
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 が必要なのでしょうか。
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 が実行されない可能性があるのでなるべくならスマートポインタを使うのが望ましいし楽。
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はコピーできなくなる。
315310
2019/10/16(水) 18:53:13.17ID:imXCztCz
なるほど。B* bで書いたつもりが間違ってました。
しかしA内でbを使い回すなら、B b の方が良さそうですね。
どうもありがとうございました。
316蟻人間 ◆T6xkBnTXz7B0
2019/10/22(火) 20:10:13.74ID:+0Lq2R8m
C++相談室 part145
http://2chb.net/r/tech/1568362404/
から移住しました。
YappyCamという録画ソフトを作っています。
https://github.com/katahiromz/YappyCam
よろしくお願いします。
317デフォルトの名無しさん
2019/10/23(水) 00:02:04.30ID:FSIo0WLO
多分スレチな話題だけど
高速化目的で固定小数点数クラス作って満足してた所に、コンパイラの設定で浮動小数点モデルをfastにしたら何倍も速度差つけられたんだが
どういう原理でそうなるのかわからない 調べても中々資料出てこないし
誰か教えて下しい
318はちみつ餃子 ◆8X2XSCHEME
2019/10/23(水) 01:44:13.82ID:GER+FSVM
>>317
現代では浮動小数点はハードウェア (CPU) のサポートがあるので丸め方の一貫性とか捨ててめいっぱいに CPU の機能を利用したら速いよ。
319蟻人間 ◆T6xkBnTXz7B0
2019/10/23(水) 02:19:12.55ID:DFr4VJRt
昔、インテルの一部のCPUにfloating pointの処理に不具合があって、それで高い精度が求められるプログラムでは、ソフトで対応できるようなコンパイラが作られたらしい(要出展?)。
320蟻人間 ◆T6xkBnTXz7B0
2019/10/23(水) 02:24:10.56ID:DFr4VJRt
これだ。
https://ja.m.wikipedia.org/wiki/Pentium_FDIV_%E3%83%90%E3%82%B0
321デフォルトの名無しさん
2019/10/23(水) 07:13:23.64ID:chxy1JWV
ARMのEABIとは逆方向の流れだな
322デフォルトの名無しさん
2019/10/23(水) 09:00:32.48ID:FSIo0WLO
>>318-320
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)
324蟻人間 ◆T6xkBnTXz7B0
2019/10/23(水) 13:01:09.43ID:bxABcYeD
SSDは早い。400MB/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を用意することにする。
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のせいか?
332蟻人間 ◆T6xkBnTXz7B0
2019/10/24(木) 21:21:54.34ID:ZzyW2UAB
WM_TIMERの精度が低いから音ずれが起きている。
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起動しながらやってみたらどうなる?
339蟻人間 ◆T6xkBnTXz7B0
2019/10/25(金) 13:15:44.76ID:OgTxIR48
Visual Studio 2017だと音ズレはなくなった。
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 (映像生成スレッド)。

次はパフォーマンスを出来る限り高めないといけない。
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)
343蟻人間 ◆T6xkBnTXz7B0
2019/10/25(金) 16:30:53.82ID:OgTxIR48
https://twitter.com/katahiromz/status/1187632297601716225

これ見て原因わかりますか?
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:OgTxIR48
>>346
なんか意味あるの?

当たり前だが、フレームレートに枚数をかけ算すると、動画の時間が求まる。これを音声の長さと比較して音声が長ければ音声の先頭を削除。これでいってみるか。
348デフォルトの名無しさん
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では画面録画は標準機能だ
352デフォルトの名無しさん
2019/10/25(金) 22:35:35.48ID:cKRHja93
>>347
とりあえずやってみたらいいのに
353蟻人間 ◆T6xkBnTXz7B0
2019/10/25(金) 22:50:25.82ID:OgTxIR48
>>351
核心情報キタ―――(゚∀゚)―――― !!
ありがとうございます。
354デフォルトの名無しさん
2019/10/25(金) 22:56:14.57ID:APY4ctz9
timeBeginPeriod使えで済む話だろう
355蟻人間 ◆T6xkBnTXz7B0
2019/10/26(土) 11:07:21.59ID:Q5f3+aYX
YappyCam 0.9をリリースしました。
https://katahiromz.web.fc2.com/yappycam/ja
- パフォーマンスの改善。
- 音ズレを修正。
356蟻人間 ◆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で読み込めるはずだ。
359蟻人間 ◆T6xkBnTXz7B0
2019/10/26(土) 17:16:55.73ID:Q5f3+aYX
>>354
ありがとうございます。
360デフォルトの名無しさん
2019/10/26(土) 22:31:16.45ID:Gui6HX0l
クラスの中の処理を別のプロセスのプログラムに行わせたいんですけどどのような方法があるでしょうか
64bit環境のプログラムにインターフェースのみを提供するクラスがあって、中の処理を32bitのプログラムに行わせたいです
クラスは状態を保持する必要があるので呼び出す度にプログラムを実行することはできません
361デフォルトの名無しさん
2019/10/26(土) 22:31:33.65ID:Gui6HX0l
windows環境です
362デフォルトの名無しさん
2019/10/26(土) 22:38:25.84ID:SyjizfQh
まずお前が何を試してどうだったか書いて
363蟻人間 ◆T6xkBnTXz7B0
2019/10/26(土) 22:42:34.07ID:Q5f3+aYX
>>360
プロセス間通信
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やってない訳?
370蟻人間 ◆T6xkBnTXz7B0
2019/10/27(日) 17:28:47.53ID:irXhIBVc
>>370
古くて枯れた技術を触っているから、マイナーな言語は使ってない。
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をチューニングして使用する。
373蟻人間 ◆T6xkBnTXz7B0
2019/10/27(日) 22:11:26.78ID:cNZwDfUU
読み込んだプラグインは有効か無効かを選べる。プラグインの順序も変えられる。そこでプラグインを管理するダイアログが必要だ。
そのダイアログはメインメニューからアクセスできる。ダイアログからプラグインの名前やバージョン情報にアクセスできるようにリストビューを使用する。
読み込んだ全てのプラグインが有効であるとは限らない。有効なプラグインは、プラグインを表す文字列のリストで記録する。高速にアクセスするためにさらにプラグインのインデックスのリストを使用する。
374蟻人間 ◆T6xkBnTXz7B0
2019/10/27(日) 22:34:37.57ID:cNZwDfUU
順序の変更には上・下ボタンを使用する。
有効・無効の切り替えはリストビューのチェックボックスを使用する。
時刻表示には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)
376蟻人間 ◆T6xkBnTXz7B0
2019/11/03(日) 12:41:34.03ID:nr4jSbTs
https://github.com/katahiromz/YappyCam/blob/master/PluginFramework.cpp#L25
ドライバ関数を通じてDLLからEXEの関数にアクセスできる。凄いだろ?
377デフォルトの名無しさん
2019/11/11(月) 09:09:46.18ID:TRmuSqs3
完全初心者です
苦しんで覚える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コアを使いつくす

これで、スレッドと状態を持つ地獄から、おさらば!
380デフォルトの名無しさん
2019/11/11(月) 12:32:20.68ID:2oMqNNOD
>並行処理が得意

そんなもん今どきの言語なら皆そうなんだが?
いい加減スレ違いの書き込みはやめろ
ここはC/C++スレだ
381デフォルトの名無しさん
2019/11/11(月) 13:44:52.51ID:dWj5v9Wo
>>377
終わってから考えろ
382デフォルトの名無しさん
2019/11/11(月) 16:13:50.62ID:JcIJLOOR
義務教育を受けてる若者なのか、教える立場の教師なのか、
はたまた我が子の勉強を心配する教育ママか。
とりあえず義務教育で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
パヨチン教師に論理的思考ωを教えさせるのは無理やろ
386◆QZaw55cn4c
2019/11/11(月) 21:00:22.89ID:br96B5K/
>>385
kwsk
387デフォルトの名無しさん
2019/11/11(月) 21:28:40.68ID:+nZ+GxSE
>>377
完全初心者で作ってみるのがまず目標ならscratch辺りが無難じゃないかな?取っつきやすくプログラミングの基本に触れられると思うよ。

初心者がCから始めても作る喜びを見つける前に細かなところで躓きを繰り返して挫折する率が高いと思う。
入門書一冊読んだ時点でその知識を組み合わせてなんか試してみようと自発的に思い付くとか、文字だけの画面で入力した数字を並び替えただけで喜びを感じられるとかなら、向いているとは思うけど。
388デフォルトの名無しさん
2019/11/12(火) 09:36:03.48ID:uG6HIbdY
>知識を組み合わせてなんか試してみようと自発的に思い付く

コピペしか出来ない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:VlcbOuJw
これか
https://ezoeryou.github.io/cpp-intro/
別に自由だろ
悪い意味でも良い意味でもC++の自由なところ
397デフォルトの名無しさん
2019/12/20(金) 17:42:09.99ID:mI5I/WU7
>>396
ありがとうございます
楽なのは事実だし、そこよりもまずは中身がまともに使えなきゃ無意味でしたね
398デフォルトの名無しさん
2019/12/20(金) 17:47:54.25ID:VlcbOuJw
Java で import *;
399はちみつ餃子 ◆8X2XSCHEME
2019/12/20(金) 18:50:13.84ID:smtL92ik
>>395
意味がわかってるならやりたいようにやっていいよ。
「プラグラマがやりたいことをさまたげない」という意味のことは D&E に書いてある。
言語仕様としてはさまたげないという意味なのでやった結果がクソになっても自己責任だけど。
そのあたりは言語仕様がどうこうよりも設計の話になるんじゃないかなぁ。

まあまずは言語を理解しないことにはどうにもならんので、
いい感じの作法は後回しでもいいでしょ。
(そういってずっと後回しにし続けるのはよくある話なのでちゃんと計画を立てて学習しような!)
400デフォルトの名無しさん
2019/12/20(金) 20:36:03.32ID:PIQAyvT8
はちみつが江添を腐すのは意外だな
401はちみつ餃子 ◆8X2XSCHEME
2019/12/21(土) 01:13:26.24ID:hBrPM7yJ
>>400
俺は >>399 で江添氏による C++ 入門書については何も言ってないよ。
「作法は後回しにして言語 (C++) の入門書を読め」ってだけ。

言語の入門書っていうのは特に限定しないけど、江添氏のでも別にいいんじゃね。
俺は読んだことないから知らんけど。
402デフォルトの名無しさん
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
その前提をわかってなかった。 すまぬ。

わかってる人からするとこれは説明の便宜のためであって作法を示すものではないことがわかるけど、
入門書の冒頭でやっちゃうのは思い切りが良すぎるな。
409デフォルトの名無しさん
2019/12/23(月) 12:35:08.34ID:sEnpgkKc
禿添を擁護する気は無いが
そもそも他の入門書だって
#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のどんな使い方までがスパゲッティにならないかだけど合意を得られる共通認識はないから、組織のルールに合わせるくらいしかないかも。
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ネタまだやってんのか
初心者に使い方を教えれば終わりだよ
422◆QZaw55cn4c
2019/12/24(火) 18:02:52.32ID:Kb/HLSFP
所詮 goto は関数内でジャンプするだけだから、たいしたスパゲッティにはならないのでは?
むしろ setjmp()/longjmp() 大好き人間のほうが怖い…
423はちみつ餃子 ◆8X2XSCHEME
2019/12/24(火) 18:36:41.63ID:HGX5RVNB
>>422
そんな奴はおらん。
424デフォルトの名無しさん
2019/12/24(火) 18:39:15.66ID:IBUEMR4t
setjmp/longjmpって具体的に使われてるプロジェクト今ある?
425蟻人間 ◆T6xkBnTXz7B0
2019/12/24(火) 18:49:21.37ID:4kM/Vj6H
>>424
JPEGライブラリで使われてるよ。
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です。
427デフォルトの名無しさん
2019/12/25(水) 16:34:37.25ID:TfD43SqC
カレントディレクトリでググって。
428デフォルトの名無しさん
2019/12/25(水) 16:34:37.50ID:ZI663GBY
まず、端末とFinder は、異なる!

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、他はバイナリエディタで開けます。
430デフォルトの名無しさん
2019/12/25(水) 20:28:55.00ID:KX6i+Zbe
>>429
カレントディレクトリの概念は分かったの?
プログラムを何らかの方法で起動したときに、そのプログラムはどこかのディレクトリを「現在位置」として処理を行う。
だからプログラム中でファイルを指定するときに絶対パスではない書き方、つまり相対パス(point.vertや./point.vertという書き方)で指定すると、それは現在位置から見てその名前の場所にあるファイルを指す。
macの環境は詳しくないけど、terminalから実行したならカレントディレクトリはterminal上のカレントディレクトリだろうし、finderから実行したらプログラムの実行ファイルがある場所だろう。
そこと、開きたいファイルの位置関係を確認して、適切な相対パスを指定してみて。
431デフォルトの名無しさん
2019/12/25(水) 20:45:23.56ID:ZI663GBY
>>429
loadProgram と言う名前から想像すると、
特定のディレクトリだけから、ファイルを探すとか?
カレントディレクトリ内からは、探さないとか?

絶対パスなら読めるのなら、絶対パスへ変換すれば?

例えば、ruby -e 'puts $:'
と、Ruby でライブラリの探索パス・ロードパスを表示すると、
その中に、カレントディレクトリは入っていない

他には、エラーの前後で、カレントディレクトリがどこにあるか、確認すれば?
432デフォルトの名無しさん
2019/12/25(水) 20:48:27.13ID:88EUoeVm
まず相対パスを絶対パスに変換してどうなるか確認したらいいんでないの
433デフォルトの名無しさん
2019/12/25(水) 21:06:23.06ID:KX6i+Zbe
>>430
質問者はC++のifstreamで目的のファイルを開くと言ってるだろ。
的外れなことを言って混乱させるのはやめれ。
434デフォルトの名無しさん
2019/12/25(水) 21:07:02.85ID:KX6i+Zbe
上のレスは>>431宛だった
435デフォルトの名無しさん
2019/12/25(水) 22:03:46.49ID:R9J1PIns
iOSのシミュレータで実行するアプリ??(IOSとか書いてるから
それだったら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
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が入ってるので多分そうかもしれません、入門書
http://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でどう違うか確認した方がいいかと
440デフォルトの名無しさん
2019/12/26(木) 00:44:53.30ID:mIZi4PgB
MacってBSDらしいじゃん
多分じゃなくて、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のあるディレクトリに変更できる。
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
446デフォルトの名無しさん
2019/12/26(木) 04:42:31.39ID:T0QuicHn
Ruby なら、あちこちに、p Dir.pwd
って書けば、その時点のカレントディレクトリがどこか、すぐわかる

それに、File.expand_path で、相対パスを絶対パスへ変換できるし

何でも、p を付けるだけで、分かるから!
エラーを解決する速さが、桁違い!

C/C++ とかは、ポインターもあるし、1週間ぐらい解決できないのも、ザラ。
効率が悪い
447デフォルトの名無しさん
2019/12/26(木) 04:48:44.82ID:91oPsedU
消えろ
448430
2019/12/26(木) 06:51:13.58ID:CYmUjjjA
>>445
finderから起動したときのカレントディレクトリについて誤った情報を書いてすまんかった。正しくは>>442が書いた通り(=445で自分で確認した通り)だね。

ついでに、知ってるかもしれないけど補足情報。
「Rubyでは~」といってる奴はこの板の有名な荒しなのでスルー推奨。どこかで聞き齧った上辺だけの知識と構ってちゃん精神によって、的外れな情報や誤った情報を垂れ流す困り者。いくら周りが指摘しても改まる気配がない。
書き方が特徴的だからすぐに分かると思う。
449デフォルトの名無しさん
2019/12/26(木) 09:04:48.57ID:cN+Hl7PN
>>438,445
解決したみたいだけど一応補足

>>432 > まず相対パスを絶対パスに変換して
これはハードコードで絶対パスを指定するって意味ではなく
指定している相対パスそのものを関数を使って絶対パスに変換してみれば?って意味ね
450デフォルトの名無しさん
2019/12/26(木) 11:32:31.02ID:qmNoWNu8
CどころかOSすらまともに使えないような香具師は
まずpythonで練習汁
話はそれからだ
451426
2019/12/26(木) 11:47:02.89ID:hx3t0oVF
>>442,448,449
(安価打ちすぎると書き込めないらしいのでひとまとめになります)
ありがとうございました、書き忘れてましたが無事解決しました!
とりあえず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:rOhR0D35
https://ja.cppreference.com/w/cpp/compiler_support

gccが一番対応が進んでる
457デフォルトの名無しさん
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の改造をすればいい
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しか返してないんだけどなんで?
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のエラーメッセージがよさげなんで乗り換えたいんだけど
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では正しく実行できています
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が足りないんだと思います
473デフォルトの名無しさん
2020/01/01(水) 12:54:53.74ID:kPvcajv8
いまさらながら、std::vector::swap がC++14までnoexceptじゃなかったことに気付いた。
今まで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
475デフォルトの名無しさん
2020/01/01(水) 15:11:33.16ID:kPvcajv8
>>474
実際に例外が発生する処理系はまずないんだろうけど、規格の上ではnoexceptがついていない以上
それに備えなければならないわけで。
476デフォルトの名無しさん
2020/01/01(水) 15:40:05.94ID:MYEeMeEE
noexcepつける理由ってほぼ自己満足だよな
unwindの最適化気にするぐらいなら例外禁止にするわ
477デフォルトの名無しさん
2020/01/01(水) 16:29:22.59ID:kPvcajv8
>>476
つまり、>>473のようなケースではそのままnoexceptを付けないmoveコンストラクタにするということかな。
例外禁止というのがどこのことを言っているのかよくわからないが。
478はちみつ餃子 ◆8X2XSCHEME
2020/01/01(水) 17:53:46.55ID:6jqQqgz1
C++17 からは 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ライブラリをインストしろ
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以降じゃないと対応しない
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/9nqAWN
>>485
え?私はそれで解決したんだけど
知りもしないで碌ないちゃもんつけんな
487デフォルトの名無しさん
2020/01/08(水) 16:50:37.82ID:3hPXf+vV
>>486
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;
}
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です
492デフォルトの名無しさん
2020/01/13(月) 12:56:31.05ID:A/MByXKy
Xが何者か書いてない
Xが型ならtypename Xを<>の中に付け足すべし
493デフォルトの名無しさん
2020/01/13(月) 13:00:00.75ID:A/MByXKy
template<template<typename X> L>
は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 の型を返すのはどうすればいいんですかね?
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)
497デフォルトの名無しさん
2020/01/13(月) 13:44:12.54ID:Tr5rZ1p8
>>492
>Xが型ならtypename Xを<>の中に付け足すべし

Func(const L<double> & l, const R<double> & r)

と具体的にXを書く必要があるってことでしょーか?
498デフォルトの名無しさん
2020/01/13(月) 14:14:22.42ID:Tr5rZ1p8
>>496
なるほど。
わかりました。
499デフォルトの名無しさん
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になりますね。
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の型情報を埋め込むにはどうすればいいのか?
ってことになると思うんですが。
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 +の特殊化を書くなりいくらでもやり方はある
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の型情報を持っているように思うのですが。
507デフォルトの名無しさん
2020/01/14(火) 18:39:49.77ID:3su9tm6y
>>500
https://ideone.com/3Hp3q6
508デフォルトの名無しさん
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 か
めっちゃ参考になります。
てかこれでほぼ解決です。
聞いて良かった。ありがとうございました
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:CVktcrTk
>>510-512
自分もちょっと偉そうだな、と思ったけどな
>>506に対するレスとかね
答え教えてもらってて経験不足で理解できてないのに言い返してる
読んでてわからんなら同レベルってことだろ
514430
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;
}
}
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/以下にあるファイル群がなんなのか分かりません、
どうすれば良いのでしょうか。
518蟻人間 ◆T6xkBnTXz7B0
2020/01/16(木) 13:27:47.37ID:xhLhfq9D
>>517
シンボルが重複している。
たぶんinline指定を忘れてるか、変数の定義が重複している。
519デフォルトの名無しさん
2020/01/16(木) 14:34:35.42ID:vo+Ub67N
>>513
オマエ何様のつもりだ。
匿名掲示板でいったいどんな言葉使いを期待してるんだアホww
だいたい>>507のレスにしても大概だろ
using valu_type= T
とかww
こんな回答もらってよろこんでるほうもアレだが、

auto
operator[](std::size_t i) const{
return Op::Apply(l_[i], r_[i]);
}
ですむ話
レベルの低い奴に相応の応対したんだろww
520デフォルトの名無しさん
2020/01/16(木) 14:39:29.98ID:vo+Ub67N
>>513
>答え教えてもらってて経験不足で理解できてないのに言い返してる

その答えのレベルのわからんおまえも同レベルって乞田ww
521デフォルトの名無しさん
2020/01/16(木) 14:50:56.26ID:sHruIOmX
乞田川
乞田型
乞田首
522513
2020/01/16(木) 16:00:48.56ID:CVktcrTk
>>519
質問者が聞いてるのは内部で使ってる型に応じて実装を変えたいって話なんだが
お前何もわかってないアホだろ、autoにしても何も変わらねーんだよ
523デフォルトの名無しさん
2020/01/16(木) 16:06:03.64ID:CVktcrTk
あと
>>517-518
_mainてあるから多分エントリポイントが重複してるのでは?
524デフォルトの名無しさん
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" をどう渡せばいいのか困っています。
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>
とするだけで、
質問者のやりたいことはいくらでも出来ますがなにか。
お前自身低レベルの極みなんだよ馬鹿たれ
526デフォルトの名無しさん
2020/01/16(木) 16:23:29.03ID:vo+Ub67N
>>522
お前は
Op::Apply(l_[i], r_[i]); の型がvalu_typeの型そのものってことがわかってない
アホは死にな。
527デフォルトの名無しさん
2020/01/16(木) 16:27:23.02ID:CVktcrTk
質問者は型情報を渡したいと言ってるだろうが
お前のやり方だと要素ごとのbitwise orとか実装するときに困るんだよアホ(多分他にも困る場面あるはず
整数だろうが浮動少数点数だろうが表記が同じ演算ならお前の言うそれでいいけどな
528デフォルトの名無しさん
2020/01/16(木) 16:28:28.38ID:CVktcrTk
あと
>オマエ何様のつもりだ。
>匿名掲示板でいったいどんな言葉使いを期待してるんだアホww
そっくりそのまま返すわキチガイが
529デフォルトの名無しさん
2020/01/16(木) 16:33:49.27ID:vo+Ub67N
>>522
言ってることがわからなければ>>507
のコードで
typename L::value_type →auto に置換
using value_type = T; → 削除
Vector<int> →Vector<double>に置換

とでもして実行してみろ低脳
530デフォルトの名無しさん
2020/01/16(木) 16:39:34.67ID:CVktcrTk
>Op::Apply(l_[i], r_[i]); の型がvalu_typeの型そのものってことがわかってない
お前の言ってるそれは>>506そのもの

そういや俺operator +の特殊化とか書いてたけど
Applyの方だな
あとオーバーロードが抜けてた
531デフォルトの名無しさん
2020/01/16(木) 16:40:27.48ID:vo+Ub67N
>>527
はぁ?文盲か低脳
>>500
ex template をVector内部に持たせるんじゃなく、独立させて、
t= x+y+z;
演算型をfloat double int に汎用性を持たせたいといってるんだろうが。
だれが"要素ごとのbitwise orの実装"の話なんかしてるんだ。お前の勝手な妄想だろが馬鹿たれ
>多分他にも困る場面あるはず

を、妄想の自己弁護か?www
夢でも見て寝ぼけてんのかアホ

テメエみたいな低脳ごときが俺様に対して言葉の使い方気をつけろ
532デフォルトの名無しさん
2020/01/16(木) 16:42:45.67ID:vo+Ub67N
>>530
はぁ?
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にするだけで質問者の解決だ。ばかたれ
534デフォルトの名無しさん
2020/01/16(木) 16:47:00.45ID:CVktcrTk
まじめんどくせぇこいつ
俺はtypeだのvalue_typeだの余計な要件増やすことを良い実装だとは思ってないぞ
>>506を挙げてそれに言い返してるのを批判的に言ったのはそれが理由
お前がドヤ顔でautoとか言い出す前からな
535デフォルトの名無しさん
2020/01/16(木) 16:52:26.75ID:CVktcrTk
>>525
>template <typename T>
>とするだけで、
それ>>507の時点ですでにそうなってるんだが
536デフォルトの名無しさん
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
申し訳ありません、無知だったので色々調べたのですがエントリポイントという物が
よく分かりませんでした。気がつかないうちに何かまずいところ弄って他のプログラムと
開始アドレスが被ったとかそんな感じでしょうか?
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関数を定義してる余計なソースコードがあるとかそういうのが原因だとおも
542デフォルトの名無しさん
2020/01/16(木) 19:40:09.05ID:ZhNhElM8
リロードしてなくて被った
543デフォルトの名無しさん
2020/01/16(木) 20:19:17.16ID:J+/qaxiI
>>539>>541
とりあえずファイル内にmain関数を持つc.cppとd.cppがある状態だったので、
試しに適当なディレクトリを作ってそこにc.cppを移してみたらコンパイル成功しました!
ずっと詰まっていたので感謝します、お二方とも本当にありがとうございます!!

恐らく原因である runFiles=`ls *.cpp` の部分が以前どうなっていたか
覚えていないのですが、前は同ディレクトリにmain文複数あっても成功しているんですよね…
VScodeの自動更新等でビルドの設定が変わったとかでしょうか…?
544デフォルトの名無しさん
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
エントリポイントに関しては大変参考になりました。
545デフォルトの名無しさん
2020/01/17(金) 10:27:22.98ID:fMuYUnvE
>>522
戻り値の型をテンプレートにするのってどうするの
546デフォルトの名無しさん
2020/01/17(金) 14:15:38.50ID:GiayRj2a
Tかautoでいんじゃね
あるいは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
全部違う型?
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 っていう意味。
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{
・・・
}

では何の問題もない。
561デフォルトの名無しさん
2020/01/20(月) 15:51:26.28ID:UDU8umXR
>>507

のコードはおよそ使えない間違いコードといいっていい。
562デフォルトの名無しさん
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のコードはコンパイルすら通らない間違いコードだ。
563デフォルトの名無しさん
2020/01/20(月) 16:08:08.21ID:UDU8umXR
コンパイル通らないってのは
以下を追加したときの話ね

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{
・・・
}

で多項間でも問題なくいけるはず。
565デフォルトの名無しさん
2020/01/21(火) 18:43:12.30ID:of4oLLe2
>>563
3項以上でなければメリット無くなるわけではないぞ
というかまぁ今どきはETより先にSIMD使えって話だけど
566デフォルトの名無しさん
2020/01/21(火) 22:39:57.57ID:jv9UY41A
>>565
2項迄の演算では式テンプレートに何のメリットもない。
デバッグを困難にするだけの糞コーディングだ
バグに気づくことも出来なかった一知半解の口だけウスノロはすっこんでな

そもそも、質問者は
>>500
>t= x+y+z;
>という計算ができるようにしたい。

と希望を述べているのに>>507のコードは要求仕様を満足できてないゴミコードということだ。
567デフォルトの名無しさん
2020/01/21(火) 22:42:13.76ID:jv9UY41A
>>565
>というかまぁ今どきはETより先にSIMD使えって話だけど

能力不足をHWに補ってもらわないとなww
その分電力無駄に食ってることは覚えとけ
568デフォルトの名無しさん
2020/01/21(火) 23:33:50.08ID:oeYN0gBf
え?
SIMDで並列化できたら電力あたりのパフォーマンスはあがるぞ
ETと比べるものとは思わないが
569デフォルトの名無しさん
2020/01/22(水) 10:04:13.26ID:RE1hbZ/o
>>566
お前大して攻撃的でもない書き込みにすぐ喧嘩売ってイキるの辞めたほうがいいよ
俺はETとSIMD両方使って自作の線形代数ライブラリ(4行4列まで限定だが)作った上で言ってる
恥書く前に謝っとけよ

>能力不足をHWに補ってもらわないとな
アホだろお前、ETがSIMD以上に速度上がると思ってんの?


>ETと比べるものとは思わないが
確かに速度が目当てと勝手に限定してたね
570デフォルトの名無しさん
2020/01/22(水) 10:18:16.91ID:s6VTVCIo
最近のコンパイラならETできれいに展開しておけば
勝手にはSIMD化してくれんじゃない?
571デフォルトの名無しさん
2020/01/22(水) 10:27:28.86ID:RE1hbZ/o
Intelのは使ったことないんで知らんけど、VCだと基本そういうのは期待できないよ
(最適化かけたEigenのコードの逆アセでも見てみればわかる)
単一の要素の計算にxmmレジスタ使ってはくれるけど並列にやってくれることは無い
SIMDに収まる範囲のベクトルなら、手動できっちりSIMD使いつつ
インターフェースを使いやすくするのは普通に出来るから先にそうした方がいい
572デフォルトの名無しさん
2020/01/22(水) 12:20:19.61ID:mLtdNNMm
>>569
言うだけ無駄
意図的に絡んでるのが大半だから
自然体だったら残念な性格としか

ソースは無い
573デフォルトの名無しさん
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!
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
580デフォルトの名無しさん
2020/01/31(金) 16:53:29.94ID:Hjj/uk/N
g++やclangで-std=c++17オプションをterminal、VScode共に一括で
デフォルトにしたいのですが何か良い方法ってありませんか?
環境は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条件持ち出してきて速度向上ほざいてアホの極みか低脳
582デフォルトの名無しさん
2020/01/31(金) 22:45:37.50ID:I/eJOw0W
>>569
あぁ
言い忘れてたわ式テンプレートは一時領域コピー時間の削減と言う意味で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のバグやね
まだ、気づいてない人多いんだろな検索してもヒットしない
585デフォルトの名無しさん
2020/02/01(土) 04:58:28.47ID:sDMEFbxi
>>581
ずいぶん反論に時間がかかったな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項以上でやると重大な問題が起きるわけだが、それが何か即答できるよな?
587デフォルトの名無しさん
2020/02/01(土) 07:35:36.44ID:tav2AwxI
最適化、高速化は具体的な用途とセットじゃないと語っても意味がない

要素ごとに演算すれば良い巨大ベクタと
1個の結果を得るのに広範囲にアクセスしなきゃならない巨大行列の乗算
全然違う話
588デフォルトの名無しさん
2020/02/01(土) 07:57:11.83ID:sDMEFbxi
大きな行列の場合、高速化手法なんて他にいくつもあるからね(詳しくはないが

それ以前になぜ遅くなるのかも分かってない&ET以前にSIMDと言われて
「能力不足をHWに補ってもらわないとなww」とか(ライブラリ実装したことある立場ではないにもかかわらず)
平気で言える時点で、20年仕事でってのは嘘だろう
C++かじっただけのどこかの暇な学生だろ
589デフォルトの名無しさん
2020/02/01(土) 08:20:06.35ID:tav2AwxI
HWを使わない最適化(高速化)なんてあり得ないからね

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+O
>>593
具体的にどの段階?
ハードウェアに依存したアルゴリズムの最適化って何?
例えばロックフリーでCASが前提とかはあるけどあれも具体的なハードではないだろ
595デフォルトの名無しさん
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つの装置だから
598デフォルトの名無しさん
2020/02/03(月) 15:01:01.85ID:Exvuz9nd
>>595
それはアルゴリズムとは言わないでしよ
計算のオーダー変わるわけじゃないし
599デフォルトの名無しさん
2020/02/03(月) 15:46:17.64ID:MWPuXKWI
>>598
いや、計算量も変わるしアルゴリズムでもあるけど?
600デフォルトの名無しさん
2020/02/03(月) 17:07:19.92ID:Exvuz9nd
>>599
計算量でなく計算オーダー
知らずにしゃしゃり出てくるとか
601デフォルトの名無しさん
2020/02/03(月) 17:13:32.87ID:Si1aHG26
ビッグオーが変わるようなのはアルゴリズムの違いだろうけど
ビッグオーがそのままで計算量だけが変わるのはどっちとも言いがたい
602デフォルトの名無しさん
2020/02/03(月) 17:33:31.72ID:MWPuXKWI
>>600
より除算回数の少ないアルゴリズムを選択することは現状の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:GCTF3gV7
>>611
>>608が最適と豪語したから反例挙げてるだけだろ
お前のほうが論点ずらしだよw
616デフォルトの名無しさん
2020/02/05(水) 01:36:02.88ID:RkJ0eyiK
>>615
悔しそうですね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:rzfrqein
>>620
あーそんなのありましたな
ちょっとググったらライブラリも出てきたしよさそう
ありがとうございます
622デフォルトの名無しさん
2020/02/05(水) 15:41:12.41ID:zWcxLf4u
それでいいんだw
623デフォルトの名無しさん
2020/02/05(水) 16:07:18.33ID:ImPcpEtv
それでいいなら%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%ではないが
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..." が一番楽じゃね
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..." />
632デフォルトの名無しさん
2020/02/06(木) 00:01:41.26ID:7WdfZf7H
base64って7bit通信路通すためのもんでしょ?
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:bk3hpXlE
>>634
ishなつい
パソコン通信の時代に使ってたけどもう30年近く前なんだな
637デフォルトの名無しさん
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などの他のシリアライザに替えて解決するものでもなさそうだし、どうしたもんかな…
641デフォルトの名無しさん
2020/02/07(金) 11:04:33.34ID:j3f+aFgv
>>637
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/
>>642
やればいいんじゃね?
やれない理由があるならそれ書かないとわからんし
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フルアセンブラ
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よりスペックが高いからあまり制約を考えずに触れるからいいよ
655デフォルトの名無しさん
2020/02/07(金) 18:25:14.52ID:tbpxydmI
組み込みって難しそうなのに年収は総じて低めだよね
オラオラ系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 が機能するように環境を設定するにはどうしたら良いでしょうか。

よろしくお願い致します。
662661
2020/02/11(火) 18:13:22.88ID:poOKFhcK
貼り付けるエラー文言間違い得ました。

```
略/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
665デフォルトの名無しさん
2020/02/26(水) 08:41:15.23ID:PiyizPRV
アンカもマトモに撃てないってアホじぇねえのコイツ
666デフォルトの名無しさん
2020/02/26(水) 11:09:35.39ID:wiEfavJ1
見ないで答えるけど
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に追加するしかないですか?
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:RXnANkEf
>>668
ありがとうございます

>>669
純粋仮想関数が含まれているので継承しないと使用できません
671デフォルトの名無しさん
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 )
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:R9m18Hk4
>>675
先に異動してしまってそこで学ぶ方がいいのでは?
若いなら可能だよ
おっさんならそもそも実務経験なしのスキルは評価されないと思う
680デフォルトの名無しさん
2020/02/27(木) 23:05:06.65ID:IR/jNZBp
>>679
29歳は若手ですか?
681デフォルトの名無しさん
2020/02/27(木) 23:12:49.02ID:R9m18Hk4
>>680
転職で考えればまだポテンシャルで採ってもらえる年齢
まぁ30前半までだと思うけど
企業文化にもよるけど可能性はあるんじゃない?
だめもとでいってみて、ダメでもそれが将来のコネになるかもしれないのだから
情熱あるなら動いてみるのが正解だと思うよ
682デフォルトの名無しさん
2020/02/27(木) 23:19:52.21ID:IR/jNZBp
>>681
ありがとう。
上司にはいつかは異動したいとは言ってる。後は組み込みやってるところにアピールする必要もあると思うんだ。
だから基礎でもいいから勉強しときたい。
683デフォルトの名無しさん
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:DhCS2IXf
>>680
29ならもうおっさん
その歳で経験無いなら組み込み系は絶望的
686デフォルトの名無しさん
2020/02/27(木) 23:43:07.61ID:dsi+r0l9
>>684
個人的にはプログラミング的なことなんざ実務やってりゃ嫌でも身につくんでそんな気にしない
素養とか基礎知識はあったほうがそりゃいいけどね
どれくらい部署間の関係性が強いかわからんが他部署出身者はその部門のことをケアした提案とかができるからむしろ重宝するくらい
やる気ある人間にやらせたほうが結果的に効率上がるからそういうのは積極的に対応する

まぁとは言っても企業文化次第ではあるけどねー
687デフォルトの名無しさん
2020/02/28(金) 00:06:09.61ID:bgqQewMR
>>682
勉強するのはもちろん構わない
でもしっかり勉強してから異動とか思ってたら機を逃すから注意ね

上でも言ってるとおり組み込みといっても千差万別で幅広い
組み込み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;
690デフォルトの名無しさん
2020/02/28(金) 23:53:01.56ID:bgqQewMR
>>689
簡単に言うと浮動小数の中身は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
どうやれば出来るという簡単なものではないのでちゃんとした専門書で学ばないといけないと思う。

浮動小数点で計算するのは諦めて速度も諦めるなら
十進小数ライブラリを作るか導入してもいいだろうし、
計算の内容によっては有理数型を導入するとか
まあ出来ることは色々とあるよ。
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入力しかできないのでキャストしています。
695デフォルトの名無しさん
2020/02/29(土) 08:23:33.95ID:a4Xwg1lT
厳密に表現出来ない値があるのは当たり前
floatやdoubleで表現出来る値は有限通りなんだから
696デフォルトの名無しさん
2020/02/29(土) 08:32:37.79ID:a4Xwg1lT
floatの中身が元々10進数で簡単に表せる数という事がわかってるなら
doubleにするときに単純なキャストではなく
そういう補正を加えれば良い
10進7桁までならdouble精度に復元出来る
697デフォルトの名無しさん
2020/02/29(土) 14:00:46.61ID:3sltTQiA
>>693
>>689 のは既にfloatの時点で0.0002じゃないんだよなω
698デフォルトの名無しさん
2020/02/29(土) 17:13:36.11ID:VpO1O9GW
>>694
許容できる誤差の閾値がどうやって決まってんのか謎だけど
0.0002を救いたいなら例えば入力は10000倍しておくという運用にして
doubleにするときに10000で割るとかね
699デフォルトの名無しさん
2020/02/29(土) 23:21:10.14ID:6IdZMwnf
浮動小数点は、非連続・飛び飛び。
数値の間が、ものすごく小さいこともあるし、大きい事もある

よく起こるバグは、ソフト・サーバーなどは、連続して3日しか動かないというもの

float に、1ずつ足していくと、3日後には数値間が、1以上になって足せなくなる。
組み込みプログラマーは、こういう基礎的なことを、知らない香具師が多いw

しかも発見するのに、3日も掛かるから、テストで発見できないので、こういう製品が多いw
700◆QZaw55cn4c
2020/02/29(土) 23:26:17.95ID:c0ztbNyQ
>>699
えーと、組み込みの人なら、そもそも float/double は昔は劇的に遅かったという名残があって最初から float/double を使わないんじゃないかな?
最近はそうじゃないのですか?
701デフォルトの名無しさん
2020/02/29(土) 23:38:03.03ID:wnKEWZ56
>>700
老害ですか?
702デフォルトの名無しさん
2020/02/29(土) 23:50:06.95ID:uIzTDUXo
組み込みを一括りにしてる奴は見識が狭い井の中の蛙
703◆QZaw55cn4c
2020/02/29(土) 23:51:06.93ID:c0ztbNyQ
>>701
ジジイ、ジジイか…
それじゃお前はなんだ、この餓鬼が
おれはお前さんがこの世に落っこって来る前からバグつくってんだ
704デフォルトの名無しさん
2020/03/01(日) 00:15:22.67ID:QmxFkZ5G
1ずつ足していく単純なカウンターにfloatを選ぶヤツがいるとも思えんが
組み込みだと特に
705デフォルトの名無しさん
2020/03/01(日) 00:23:59.37ID:2kmwzB0g
>>704
>>699は例のRubyバカだろうから、まともに考えるだけ無駄だと思うよ。
初心者スレで嘘や意味不明なことを垂れ流して周りに迷惑かけるのやめて欲しい。
706◆QZaw55cn4c
2020/03/01(日) 01:17:16.77ID:7ZOlNSWM
>>705
決心しました
私も ruby で逆襲粉砕してやろうじゃありませんか
ruby のいい教科書を教えてください…
707デフォルトの名無しさん
2020/03/01(日) 13:19:26.60ID:WMkrI5AG
706
https://www.尼損.co.jp/dp/B00QR4JST2
708デフォルトの名無しさん
2020/03/01(日) 22:54:47.39ID:NSpMdQYF
たのしいRuby 第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が本当に取り立てる、と。

変な擬人化をした、厳密とは言い難い説明だけど。
715デフォルトの名無しさん
2020/03/05(木) 06:44:44.35ID:zdEofaoY
本当にリークだったりして
716デフォルトの名無しさん
2020/03/05(木) 10:32:20.81ID:ZZWMeQXX
>>714
プログラムは全インスタンス解放後にstd::chrono::secondsでスリープかけていて
2GBほど掴んだメモリが半日経ってもそのままでした
こういうのもシステム起因の挙動なのでしょうか?
717デフォルトの名無しさん
2020/03/05(木) 11:03:11.50ID:2gUuzrSw
>>716
心配なら Valgrind とかで調べてみれば?
Linux はなるべくメモリを使い切る方針だったはず (※) なので、 >>714 のようなことは普通にあると思う。

※ 空いているメモリがある状態というのは要するにメモリを無駄にしている状態ってこと
718デフォルトの名無しさん
2020/03/05(木) 13:46:12.81ID:866E1Ujc
他のプログラムで多量に確保してみれば?
719デフォルトの名無しさん
2020/03/05(木) 14:55:04.52ID:LYrzkUWd
>>716
まず質問者の心がけとして
言葉だけでなく実際のコードと計測結果をそのまま書け
720デフォルトの名無しさん
2020/03/05(木) 16:41:49.18ID:ZZWMeQXX
713=716ですが、malloc_trim関数を呼んだらメモリが空きました
>>714さんの仰るようにOSに返していないのが原因のようです

>>719
すみません、自社内のかなり複雑で汚いコードなので晒せませんでした
厄介なことにスクラッチから同じ程度のメモリを使うテストコードを書いたら現象は再現しませんでした
721デフォルトの名無しさん
2020/03/05(木) 17:13:53.55ID:ywFWHxIm
OSからのリクエストと返却はコスト高だから
ランタイムのアロケーターが握ったままでOSには返さない
OSへ返すタイミングはプロセスが終わるとき、という実装は割りとありえそう
722デフォルトの名無しさん
2020/03/05(木) 18:22:39.16ID:ZZWMeQXX
お礼を言うのを忘れてました
回答くれた方ありがとうございました
723デフォルトの名無しさん
2020/03/05(木) 18:46:09.59ID:LYrzkUWd
>>722
malloc_trim使えるなら
malloc_statsも見てみたらいい
たぶんmmapで確保した分は返却されない
724◆QZaw55cn4c
2020/03/05(木) 21:06:25.30ID:BOwkxST5
>>713,716
http://www.kouno.jp/home/c_faq/c7.html#25
たぶん C++ もそうだと思います
725デフォルトの名無しさん
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++では違う、みたいな情報の有用性が高いから、かも。
少なくとも、こういう質問と回答のようなスレッドでは。
728デフォルトの名無しさん
2020/03/07(土) 08:55:37.01ID:gWhxXX2s
ならC言語勉強するならC++もやれってことか?
729デフォルトの名無しさん
2020/03/07(土) 10:45:02.41ID:XLWmxUUx
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 の側も是としている。
731デフォルトの名無しさん
2020/03/07(土) 16:53:11.21ID:wgBH55a3
いや、コンストラクタやデストラクタが暗黙で動く時点で全然違う言語でしょ。。
解釈を 2、3層入れてやっと表面上は同じように動くみたいな状況なわけでさ。
その辺誤魔化すからロクでもないことが起きるんだよ。
732デフォルトの名無しさん
2020/03/07(土) 17:26:14.19ID:jUFqUInS
>>731
いや、もちろん違う言語だよ。 >>729

> cの方はもう切り離して一緒にされたくないだろうが。

に対して、仕様の策定では連携していく方針があるってことを言ってるだけ。
733デフォルトの名無しさん
2020/03/07(土) 18:33:23.15ID:RZgTMQsN
>>728
Cを使える人は(C++知らない状態からでも)C++もそこそこすぐ馴染む
C++を使ってる人(C知らない人)はCだと使えないことが多いと思う
734デフォルトの名無しさん
2020/03/07(土) 18:38:46.76ID:RZgTMQsN
C++2017の電子本が無料らしい
Embarcaderoからメール来た
735デフォルトの名無しさん
2020/03/07(土) 20:21:56.03ID:V3yrok8D
Cから始めてC++に移行した時は
クラス・継承(仮想関数)・例外・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:4I7RYXwm
>>738
無駄ではないが遠回りしたような…
>>739
その部署の新人教育見てたらJAVAとC++しかやってなかった。
741デフォルトの名無しさん
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言語をやる
744デフォルトの名無しさん
2020/03/10(火) 21:50:37.20ID:808QYtU8
>>742
どういう組み込み機器なんだ?
javaならjavaでsmartcard制御するのか、gui作るのかでかなり違う
745◆QZaw55cn4c
2020/03/10(火) 21:50:59.61ID:7t0MtDjq
>>742
両方書いている者としては、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
組み込みってひとまとめに言っても範囲広すぎるからもう少し具体的な情報無いとアドバイスしづらいよね
748デフォルトの名無しさん
2020/03/10(火) 22:07:13.07ID:3+CC2Qsy
相互参照がかんたんな方からやればいいんだよ
749デフォルトの名無しさん
2020/03/10(火) 22:18:40.36ID:HIU8QCM9
>>747
C99 に対応してないコンパイラってことか。
理屈の上では実際のメモリの確保は関数の頭にまとめてしまえばいいから
実行時のリソースが限られていても関係なく出来るはずなんだが、
マイナーな環境だとコンパイラもまともなものがなかったりするんだよな……。
750デフォルトの名無しさん
2020/03/10(火) 22:20:49.11ID:808QYtU8
>>743
おれとしてはc++から始めることをおすすめするな
javaから入るとc++でもjavaの作り方をずっと引きずる
そういう人数多く見てる
それだと組み込みでつらい場合が考えられる
ただしc++極めるのはまず無理なので
適当なところで打ち切る必要はある
751デフォルトの名無しさん
2020/03/10(火) 22:22:24.15ID:EBgJJlCp
C++勉強するなら江添亮のやつがいいのか?
752◆QZaw55cn4c
2020/03/10(火) 22:37:05.22ID:7t0MtDjq
>>751
かつては、旧版独習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

まぁ業界によってはこんな組み込みだって居るんだよって程度で
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/
757デフォルトの名無しさん
2020/03/11(水) 00:14:52.72ID:EKM5ywjJ
>>751
江添亮の本は、勉強用じゃないw
プロが見て、あれこれ議論する土台になる本

10年以上やっていないと、まず読めないw

どの言語でも、勉強用は「Effective 何々」
758デフォルトの名無しさん
2020/03/11(水) 00:27:33.10ID:FbH1Tm9+
>>757
それはひょっとして「江添亮の詳説C++17」と混同してない?

「江添亮のC++入門」は初心者が基本的なツール (make やコマンドライン) の使い方さえわかってないからってんで、
そのあたりから記述している上にクラスの継承を説明しないという思い切った簡略化をしてる本だぞ。
759757
2020/03/11(水) 02:06:23.50ID:EKM5ywjJ
C++11/14 コア言語、江添 亮、2015

この神の書と勘違いした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
後輩の若いポリ公も、グルだった
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#をよく使う
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 がそれを推奨しているのは「そこでつっかえて先に進まないよりは良い (競技の上では問題ないことが多いし)」みたいな
ニュアンスだし、ちゃんと理解してちゃんと書くならそれに越したことはないはずなんだよ。
771はちみつ餃子 ◆8X2XSCHEME
2020/03/29(日) 02:53:17.00ID:tSgWoZoj
>>767
ワイは Scheme が好きで日常的には C++ より使うなぁ。
興味があるのは Rust。 入門書を読みながら色々といじって遊んでる。
772デフォルトの名無しさん
2020/03/29(日) 04:41:47.48ID:b/iWTQc8
そらトリップにSCHEMEいれてるぐらいやしの
773デフォルトの名無しさん
2020/03/29(日) 09:44:17.77ID:c4x4s1tb
【初心者歓迎】C/C++室 Ver.105【環境依存OK】 	->画像>4枚
774デフォルトの名無しさん
2020/03/29(日) 10:05:56.36ID:vg0TAzW0
二重言語であり真顔で「わたくしはC言語を極めました」と言えるのが第一関門
775デフォルトの名無しさん
2020/03/29(日) 12:55:27.64ID:Kzf4aDfw
>>771
Rustの入門書はどれがお勧めですか。
Box<T>や、Option<Box<T>> の代入や参照について詳しいものがあれば幸いです。
776デフォルトの名無しさん
2020/03/29(日) 15:54:38.44ID:7B/pleQ/
>>765
そういう視点より自分が何を造りたいかを考えろ
777デフォルトの名無しさん
2020/03/29(日) 15:55:46.75ID:7B/pleQ/
>>767
Python
C#
D
Go
Nim
778◆QZaw55cn4c
2020/03/29(日) 16:08:26.57ID:GnieE+99
>>767
>C++使いのみなさんはC++以外だったら何の言語が好きなんですか
C です

>もしくは次何覚えたいですか
classpath を C++ に移植したいです
779デフォルトの名無しさん
2020/03/29(日) 18:35:29.30ID:Kzf4aDfw
>>778
Javaのclasspath相当の機能をC++に移植したいということかね。
780デフォルトの名無しさん
2020/03/29(日) 20:08:59.77ID:GFdzppn9
>>768,771,777,778
どうも
色々ご意見ありがとうございます。みな人それぞれですね

>>773
さすがねねっち
781デフォルトの名無しさん
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は使いにくいと思ってしまっている。
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 は高速だが使いにくくされた。
785デフォルトの名無しさん
2020/03/31(火) 09:24:13.17ID:Ow5tuxOJ
ハードウェアの種類が減ったんだよね。
その分だけ低レイヤまで踏み込ませても互換性が維持できる……
かと思いきや割とそうでもないな? みたいな闇が出来てしまった。

元から低レイヤを触る人にとってはハードウェアに近いところまで触れる方が使いやすいってのは
普通にあることなので、 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
791デフォルトの名無しさん
2020/03/31(火) 16:29:23.37ID:daGoeiYK
>>786
そうじゃない。
俺は3Dを専門にやってきた。
792デフォルトの名無しさん
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枚書ける。
このコードを見ればマニュアルを見なくてもなんとなくやってることが分かるだろう。
それと、行列計算がとても判りやすくできるようになっている。
793デフォルトの名無しさん
2020/03/31(火) 18:33:37.31ID:aMyLRkM9
hello world的なプログラムなら1.0が楽だが、まともなアプリやゲーム作ろうとしたら、一々頂点定義していくのは面倒なだけ
しかも性能落ちる
794デフォルトの名無しさん
2020/03/31(火) 18:36:35.46ID:chhHfIYK
一見簡単に見えるだけ
問題だらけのAPIデザインだよ
とにかくそんな遠い過去の技術どうでもいいから
795デフォルトの名無しさん
2020/03/31(火) 18:46:15.18ID:fXRU3fg2
>>793
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とか理解できないんだろう
799デフォルトの名無しさん
2020/03/31(火) 19:12:17.41ID:chhHfIYK
使い物になるだけD3Dの方がまし
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の一番良くないところは、ハンドラが引数になくて、操作されるコンテキストがどれかということが
見えない状態になってしまっていることじゃない?
802デフォルトの名無しさん
2020/03/31(火) 20:21:22.12ID:1hnfAhIg
シェーダーとかなしで
グラフを書くだけの用途だから OpenGL1.0でごりおしだな

※ glBegin の対の glEnd を忘れて頂点バッファ漏らすのを ラッパークラスで回避する程度
803デフォルトの名無しさん
2020/03/31(火) 20:57:23.49ID:BqWL8gxf
OpenGL 2.0 専用スレ
http://2chb.net/r/tech/1126268759/
804デフォルトの名無しさん
2020/03/31(火) 21:29:07.74ID:l+T/nNRF
GLFWなんて使うのは試作や使い捨てツールとかくらいだと思ってた。
805デフォルトの名無しさん
2020/03/31(火) 23:22:06.63ID:hFZHkIvl
つーか昔はフレームバッファに書きこんだところにドットが表示されてすっきりしてわかりやすかった
今は全部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 にも同じ違和感を感じる(重箱)
809デフォルトの名無しさん
2020/04/01(水) 10:18:19.76ID:5VJq6KKK
>>804
オレオレルール上は glut までですね判ります
810デフォルトの名無しさん
2020/04/01(水) 11:06:09.53ID:15FH3/nz
>>808
さすがにそういう30年ぐらい前のAPIデザインはいけてないってことで
direct state accessが導入されたんだけど、中途半端でぐだぐだ
811デフォルトの名無しさん
2020/04/01(水) 16:12:02.61ID:bFLEHtBu
教えてください。
三項演算子

auto a=1;//なんでもいい
a?return 0:return -1;

なんでコンパイルエラー?
812デフォルトの名無しさん
2020/04/01(水) 16:12:55.86ID:S74lm4t5
>>811
return は文であって式ではない。
813デフォルトの名無しさん
2020/04/01(水) 16:13:30.82ID:x/Ef9YKS
>>811
return は式じゃないから
814デフォルトの名無しさん
2020/04/01(水) 16:14:38.38ID:9AsYpIKM
あっ被った
なので解決策書いとく
return a ? 0 : -1;
815デフォルトの名無しさん
2020/04/01(水) 16:59:46.58ID:bFLEHtBu
ありがとうございました。
式と文がまだわかっていませんでした。

>>814
なーるです。
816デフォルトの名無しさん
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の頻度を減らした別のアルゴリズムを考えるか、同じ計算が繰り返し行われるなら覚えておくかするしかないと思う。
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資源使って計算させるほどでもない
無駄なことして他の処理が遅くなることもあり得るからの
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を使う

なと色々と工夫の余地はある
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ですよろしくお願いします
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】
http://2chb.net/r/tech/1521786252/

ってのが見つかった。たらい回しにするみたいで気が引けるが。
なお、そちらのスレッドは見てないので紹介が適切かも分からない。
836デフォルトの名無しさん
2020/06/13(土) 19:12:26.60ID:Q06gyfKt
>>835
すみません
マルチプラットフォームで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に変換されるという事かな~意味不明だ
839デフォルトの名無しさん
2020/06/14(日) 03:01:38.31ID:k9aaiAZC
>>828
exp って pow よりどの程度速いの?
840デフォルトの名無しさん
2020/06/14(日) 06:59:24.45ID:fieD7Z6G
powは内部的にはexp(log(a)*b)
当然環境次第だけど
おおよそ半分くらいかな

もちろん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回押す
という別の関数だということは無いとして
846蟻人間 ◆T6xkBnTXz7B0
2020/06/15(月) 00:32:18.14ID:xMj5gyYr
こうか?
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」との
どちらで書くのを自然に感じるかという話だが。
848デフォルトの名無しさん
2020/06/15(月) 11:50:24.26ID:6B2IPoD1
クリティカルでないものならどう表記しようが別にどうでもいいがな
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を混ぜ込まなきゃならなかったり計算ごとに有効桁に丸めこまなきゃならなかったり
乗算の場合は有効桁を減らしたりとかまあいろいろ

無限精度で計算して最後に丸め込んだら×もらう仕組みになってたりする
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;
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++が必要でしょうか?
860デフォルトの名無しさん
2020/06/16(火) 06:19:28.37ID:JnjsQYAt
普通の2dゲーム作るぐらいならluaとかでいいよ
861デフォルトの名無しさん
2020/06/16(火) 06:29:18.93ID:ehL8QS9+
ゲームと言うよりゲームエンジンでした
すみません
テクスチャの描写にすら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などを使うのですか?
865デフォルトの名無しさん
2020/06/16(火) 07:26:08.75ID:JnjsQYAt
奥の方では2dでも使ってるよ
今どきのコンピュータならインタプリタでも速度は足りるけどc++を使うのはまあそれが一般的で資産があるからだと思うよ
866デフォルトの名無しさん
2020/06/16(火) 07:32:04.70ID:Z1WD1bfY
足りるかどうかなんて処理次第
867デフォルトの名無しさん
2020/06/16(火) 07:37:01.12ID:1BidYCqI
GUIのOS画面「🐴🦌🦋」
CUIのOS画面「AAA」
868デフォルトの名無しさん
2020/06/16(火) 08:00:15.69ID:TW5yPVrb
ライフゲーム「•|•/•-•\•|•/•-•\」
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++に手を出して挫折する可能性を高める必要はない。他の使いやすい言語やフレームワークを使っとけ。
871デフォルトの名無しさん
2020/06/16(火) 09:09:25.61ID:eN791Gfm
>>869
>>859> 2dゲームにおいてもc++が必要でしょうか?
C++をディスってるのが分からな🐗?
872デフォルトの名無しさん
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:6qjQ65l0
>>872
おお、またやってしまった。
以前会社の上司にも似たような誤字を送ったことがある。いまだにスマホのフリック入力は慣れない...
875デフォルトの名無しさん
2020/06/16(火) 09:25:37.05ID:ehL8QS9+
>>870
何の言語が適切でしょうか
876デフォルトの名無しさん
2020/06/16(火) 10:11:49.65ID:ZzQUhJK1
Unityスレにもいた人だけどなんでこんな少ない情報で最適な言語を求めるんだろうか?
別に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 になる
879デフォルトの名無しさん
2020/06/16(火) 11:14:52.80ID:ehL8QS9+
ゲームではなく、タイルエディタでもunityという選択なんですか?
880デフォルトの名無しさん
2020/06/16(火) 11:21:02.46ID:ZzQUhJK1
一般論なら使い慣れた言語でいいんじゃね?程度だと思うよ
実現したい機能の実装が不可能で無い限り関係ない
利用者の多い言語のほうがフレームワークやライブラリの面で開発は楽になるかもしれない

electronは言語ではなくフレームワークだけどなんで言語と比較してるの?
electronの質問は該当スレへ
今の質問もスレからずれてると思うけど
881デフォルトの名無しさん
2020/06/16(火) 11:26:32.29ID:ehL8QS9+
すみません。
既存のエディタがなぜc++なのか知りたかったのです。
882デフォルトの名無しさん
2020/06/16(火) 11:52:06.13ID:ZzQUhJK1
いや、unityスレでも言われてたけど作った人に聞け以外に答えは無いよ
ウルフエディタを触ったことは無いがやってることはC++でもC#でもjavaでもできるはず
他言語は俺じゃわからんが画像を任意座標へ表示するようなことができる仕組みさえあれば大抵のことはできるだろう
883デフォルトの名無しさん
2020/06/16(火) 11:55:46.30ID:HRUNOXRJ
初学者なら兎も角、熟練者が少人数で使う分には言語による開発効率の差なんて大差ない
手足となるライブラリが一通り揃って使い方知っていれば、c++だろうがサクッと作れる
884デフォルトの名無しさん
2020/06/16(火) 12:27:02.09ID:ehL8QS9+
ごめんなさい
じゃあ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++
887デフォルトの名無しさん
2020/06/23(火) 21:41:19.55ID:zFVhfcF5
競技プログラミング始めたいんだけど、どうやって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:NciFLwYZ
>>887
普通に本屋で入門書買ってきてやればいいだろう。
それとC++をcppと呼ぶのはやめれ。
891デフォルトの名無しさん
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++ で競技プログラミングを始めると変なクセが付いちゃう。
894デフォルトの名無しさん
2020/06/25(木) 00:56:50.75ID:Dxq2c9AW
おっと using 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
違う賢者と歴史に教えを請うのだ
904◆QZaw55cn4c
2020/06/27(土) 03:53:16.94ID:5JNhQ0LT
>>900
誰の言葉なんでしょうか?大概は誰(チャーチルとかルーズベルトとか)という情報とセットで引用されるものなんですが、この言葉はそういうのがあまりないのはどうしてなんでしょうか?
905デフォルトの名無しさん
2020/06/27(土) 07:12:11.81ID:cFqQOOIi
>>904
普通にググって出て来るけど?ほんまかどうかは知らん

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 の意味で
要するに「自分の経験のみで考えずに常に他者の経験を見聞きしてそこから学べ」という
意味だった
この他者の経験の集合の事を「歴史」なんつーて壮大な単語に集約しちゃったせいで
なんか「経験論で判断したらあかん、歴史書にあるような高尚な理論を学べ」
みたいな話になっちゃってるっていう
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:TsX0h7IG
>>900
愚者は経験を含めた色々な事から学ぶ
なんて文ではないだろ
918デフォルトの名無しさん
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のようなことを言い出すのだろう。
921デフォルトの名無しさん
2020/06/27(土) 10:01:34.50ID:wwwZDyDi
#include <stdio.history>

const 自動運転車 = require('運転経験');

import 数学史
922デフォルトの名無しさん
2020/06/27(土) 10:59:13.05ID:3D9ce/Tt
>>921
言語捏造すんなやゴミが
923デフォルトの名無しさん
2020/06/27(土) 11:10:43.60ID:05T2q1jf
>>920
誰が読んでもわかる文章にするべきだろう
小説じゃないんだから
924デフォルトの名無しさん
2020/06/27(土) 11:43:34.76ID:iSXUJw2h
>>922
クエっクエっクエっチョコボー~ル~
921>gcc a.c
stdio.history: No such file or directory
925デフォルトの名無しさん
2020/06/27(土) 11:46:58.91ID:h6eax6A3
名言・格言・故事成語は枝葉や細部を切り捨てた理想的な空間だろ
その場その場に合わせたすっからカンのいいくるめだ
だから欧州も誰が言ったかに矢鱈と拘る

こういうのはマジで作り話で都合のいいことしか書いてない
虚偽のお話を信じさせられてるんだから虚構と現実のズレが生じる
926デフォルトの名無しさん
2020/06/27(土) 11:51:17.17ID:tKkUIu86
>>923
バカ向けに要約するね。

ID:TsX0h7IG は低能
927デフォルトの名無しさん
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>
----
みたいなものを想像した
929デフォルトの名無しさん
2020/07/03(金) 09:37:34.50ID:DB1hQWD+
表紙に一休さんみたいな男が写った専門書を見つけたのだけど、買うのためらった
930デフォルトの名無しさん
2020/07/03(金) 11:41:58.59ID:OljhRJZm
UNIX公案なるものが存在するのでプログラミングを理解するには禅をやるのが早い
GEBでも公案の論理分解が行われてるくらいに当時のアメリカ西海岸では大麻と禅とLSDが流行った
931デフォルトの名無しさん
2020/07/03(金) 14:32:59.27ID:/+uSoVK/
>>929
江添亮のC-入門?
【初心者歓迎】C/C++室 Ver.105【環境依存OK】 	->画像>4枚
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
江添のやつはわかりにくくない?
935◆QZaw55cn4c
2020/07/05(日) 22:58:40.95ID:UizTuhh+
>>934
私は好きです!
while (), do while (), for () をやる前に goto を導入し、「if () と goto があれば何でも出来る!」という潔さ!
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++入門は継承すら取り扱わないレベルの入門という位置づけなので、
不足する分はより本格的な本を読む前提だろうし、まあこんなもんじゃないの。
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
二章からポインタの説明が始める入門書で勉強した。今思えば酷いサディスティック教本だったと思う。
タイトルが思い出せない…
946◆QZaw55cn4c
2020/07/06(月) 21:27:01.83ID:YRpfyW1U
>>943
独習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が重要なのかしら
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++ でポインタを避けて説明する (理解を試みる) 方がつらくない?
952デフォルトの名無しさん
2020/07/07(火) 07:56:58.77ID:bJbvn87/
>>949-950
「大丈夫、パイプカットしてるから」みたいな感じかも。
break や continue を「去勢されたgoto」って喩えるじゃない。

if のネストが深くなるのは嫌だし、
関数からの早期returnも(デバッガで追うのが面倒になるので)ダメ、
goto なんかもっての外、という時に do {} while(0); でゴニョゴニョと。

で、コンパイラさんに「常に偽となる条件式です」とか警告されるの。
953デフォルトの名無しさん
2020/07/07(火) 12:13:10.64ID:bEGKo5iM
>>951
はい、もちろん。
でもそれが2章でなくてもいいのかな、と。
出鼻くじく気満々やん、みたいな
954はちみつ餃子 ◆8X2XSCHEME
2020/07/07(火) 13:48:51.21ID:tzlORGl2
>>953
選択肢があることが大事なんだって。

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個用意してアドレス割り振るとか好き
ポインタ変数分サイズ増えるのは目をつむる確保速度重視
958◆QZaw55cn4c
2020/07/07(火) 21:28:33.53ID:7uEBIb8C
>>945
私は ** を使うくらいなら *& の方がマシだと思っているのですが、 *& で書いた本はまったくないですね…
959はちみつ餃子 ◆8X2XSCHEME
2020/07/07(火) 22:00:58.59ID:tzlORGl2
>>958
何をいいたいのかわかんないのでもうちょっとくやしく
960デフォルトの名無しさん
2020/07/07(火) 22:12:29.39ID:TeF3RSyR
あんだけクズをバカにしてたのに、同じエディタを使ってたなんて!
961デフォルトの名無しさん
2020/07/07(火) 22:17:27.53ID:4bY8cpqR
>>960
くやしいのうwwwww
962◆QZaw55cn4c
2020/07/07(火) 23:10:29.18ID:7uEBIb8C
>>959
https://ideone.com/LnS5rf

>>945
こういうのも、やっぱりサドになりますか…
963はちみつ餃子 ◆8X2XSCHEME
2020/07/07(火) 23:17:48.32ID:tzlORGl2
>>962
そういうデザインのプログラムがあっても不自然だとは思わないが、
初心者向けでポインタの説明をする段階という前提を置くと参照と混ぜて示すのは混乱の元ちゃう?
& という記号の多義性がアレなのが根本原因ではあるんだが……。
964◆QZaw55cn4c
2020/07/07(火) 23:21:02.99ID:7uEBIb8C
>>963
>初心者向けでポインタの説明をする段階という前提を置くと参照と混ぜて示すのは混乱の元
そうかもしれませんね

>& という記号の多義性がアレなのが根本原因
まあ、そうですよね…
965デフォルトの名無しさん
2020/07/08(水) 08:50:17.72ID:sJ2uy93A
>>947-948
同じ人からの連続投稿、ひとつの質問だと気づかなかった。

マクロの実体を do {...} while (0) で囲む定型については
「#define do whole false」でネット検索すると色々出てくる。
この場で説明するには少々分量が多いのだ。
966デフォルトの名無しさん
2020/07/08(水) 09:23:35.50ID:hADFKHgu
そのうち
#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」
968デフォルトの名無しさん
2020/07/09(木) 20:13:12.08ID:gJQJWBxs
テキストファイルに文字列を書き込みしたいのですが

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の役割をする。
971デフォルトの名無しさん
2020/07/09(木) 20:48:42.31ID:gJQJWBxs
>>969 >>970
理解できましたありがとうございます!
972デフォルトの名無しさん
2020/07/11(土) 00:06:30.27ID:87hwO6K6
ポインタを初心者に完璧に理解させる方法分かったわ。
ポインタ=ショートカットアイコンと教えればいいんだ。

メモ帳に文字書いて保存して、ショートカットアイコン作って「これがポインタだよ」って言えばいい。
メモ帳の容量見てごらん?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のポインタは色々と意味不明
978デフォルトの名無しさん
2020/07/11(土) 11:20:02.10ID:fm8o+adg
嬉々として大量に出題されるポインタパズルが難易度を無駄に押し上げてる
この時のアドレスは何か、変数は何かと、無駄に凝った問題を作り易いのがポインタの難点

テストのための問題を作る必要があって、そこではふるい落とす必要がある
全員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:J0INoyBc
>>981
百歩譲って厳密じゃないのを許すとしても
明らかな間違いは遺憾
984デフォルトの名無しさん
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
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++でバリアント型って使えますか??
992蟻人間 ◆T6xkBnTXz7B0
2020/07/12(日) 10:07:58.94ID:bazuV89L
>>991
Boost
993デフォルトの名無しさん
2020/07/12(日) 10:26:26.21ID:NK7E+AG5
pythonのctypes使うときに役に立ってる
ctypes.POINTERとか謎仕様過ぎた
994デフォルトの名無しさん
2020/07/12(日) 21:37:47.68ID:PErY82OB
C++って団塊ジュニアまでの言語って感じがする
これから爆発的に需要が伸びていく可能性なんてないよね?
995デフォルトの名無しさん
2020/07/12(日) 21:51:26.17ID:dmFXGwc3
伸びるとかよくわからんが
今時のウェーイってしている言語にしたって、大抵コア部分のライブラリやらランタイムやらはcやc++で書かれているのだから

その言語のお客様で済む用途を越えて何かしようとしたら、出来ないと困るだろ
996◆QZaw55cn4c
2020/07/12(日) 22:14:41.38ID:YoHAyY/u
>>994
世に存在する計算機言語の半分以上は C/C++ で記述されていたりするのです
997はちみつ餃子 ◆8X2XSCHEME
2020/07/13(月) 02:47:06.70ID:vJz2FqxN
陣取り合戦をしているわけでもなし、
需要が伸びればいいってもんでもない。
重要なのは居場所を見つけるかどうかって話だと思う。

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秒
10021002
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php

ニューススポーツなんでも実況



lud20250513124436ca
このスレへの固定リンク: http://5chb.net/r/tech/1556142878/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「【初心者歓迎】C/C++室 Ver.105【環境依存OK】 ->画像>4枚 」を見た人も見ています:
郵政選挙で堀江が当選してたらどうなってたんだろうな
【北海道】20代女性の胸触り撮影した疑い 歯科医師60歳男逮捕「マッサージはしたが胸はもてあそんでいない」と容疑否認
識者「もういっそ、歴史教科書はマンガにしてしまったらどうだろう」
乃木坂欅坂にひめたんの妹が入ってたらどうなってた?
ワイ、統合失調症かもしれない
【英国】年金生活者3人を殺した28歳のレウィスランウェル被疑者、統合失調症による幻覚症状のせいとして無罪に
35歳、統合失調症扱いのB型作業所通い18
35歳、統合失調症扱いのB型作業所通い16
南区、統合失調症、ダウン症サダ男山根健一
「シャア専用マッサージチェア」が発売。ガンダム芸人土田晃之さんも絶賛で価格は10,500円の60回払い
【F9川本】ニュー速VIP君、統合失調症を罵倒
【恐怖】まんさん、統合失調症になってぶっ壊れる
【速報】シーザー、統合失調症(キチガイ病)と判明
一家6人殺害犯人、統合失調症のキチガイだった!!
統失の魔法
統合失調症
連続テレビ小説「マッサン」(再)7
連続テレビ小説「マッサン」(再)13
身体に優しく
PSユーザーは何故、統合失調症を併発していることが多いのか?
神と統合失調症
統合失調症の絶望
日本軍による放火
派遣会社によるBPO
スピロ平太、統合失調症の矛先がプロレスヘイトという稀代の精神異常wwwww
【アバター療法】ののしりアバター、統合失調症患者の「声」との闘いに有効
【社会】認知症の夫(82)、統合失調症の妻(79)を殺害 「お母さんはどこに行った?」
【議論】結局F9特定騒動とは何だったのか、統合失調症患者しかいなかったよな
岡村ほまたんが佐藤まーを崇拝してる件
2回目すんなり勃起しなくなったワイ(31)に競馬板住民が優しくアドバイスしてあげるスレ
青葉真司による放火
統合失調症あるある
喪女による迷言集
統合失調症の妄想
沖縄による奄美差別
統合失調症は治せる
最近優しくできない
統合失調症新薬スレ
統合失調症の突然死
預言者は統合失調症
統失の漏れの日記帳
ハゲによるパワハラ
統合失調症 緊張型
破瓜型の統合失調症
自律神経失調症の人
自律神経失調症辛い
統合失調症 再発怖い
「頭が良く心優しく人望もあり先見の明のある人による独裁」 何が悪いのか反論できる?
【研究】カルボニルストレスによる統合失調症発症メカニズムを解明 東大などの研究
【悲報】大塚製薬、統合失調症の薬にマイクロチップを導入。飲み忘れや体温、心拍数などを医者に電波で送信
【医学】LSDが自分と他人の境界線をあいまいにする仕組みが明らかに、統合失調症の治療の一歩[03/28]
【コテOK】統合失調症雑談スレ★33春日井糖ストくそむしなまらタカトシは統失の上糖尿病で手遅れ親不孝
元農水事務次官に殺害された40代の息子、統合失調症でアスペ持ちでネトウヨだった ドラクエ10界では有名人
【東京高裁】ひき逃げで5人殺傷の中国人女性、統合失調症悪化の理由で逆転無罪 裁判員裁判の判決(懲役8年)を破棄
【福岡】「精神障害影響せず」 北九州の同居人殺害、統合失調症被告の完全責任能力認め懲役15年…地裁差し戻し審判決
【ラグビー】<W杯の開幕が近づいても「人気」がブレークしない理由>「新参者に対してあまり優しくなかったと思います」★2
岡村ほまたんと真莉愛が肌と肌のふれあい事案
ゆるゆりキャラが酔っ払ったらどうなるかな
第二次日中戦争が起こったらどうなるだろう?
650hPaの台風が東京に上陸したらどうなるの?
ブラタモリがノーブラだったらどうなるの?
【原駅ステージ】原宿駅前パーティーズ【本スレ】★99
働いてよかった毎日屋、悪かったマッサージ屋
【科学】より低い学歴、低下した知能、統合失調症リスクに相関…まれな神経発達障害のリスクはありふれた遺伝的変動の影響を受ける
【千葉】小6女児、男性教諭に服の中から胸触られてPTSD・不登校に・・・教諭「励ますつもりでくすぐったが胸は触ってない」と否認
「Q」と名乗る投稿者による陰謀論を信じてしまう人がアメリカで急増。彼らを分析した結果「統合失調症傾向」という気質を持っていた。
13:46:33 up 63 days, 14:45, 0 users, load average: 8.35, 8.83, 8.80

in 0.1064829826355 sec @0.1064829826355@0b7 on 062002