C++相談室 part149

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2020/02/18(火) 06:19:41.54ID:xvjipUWj
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part148
https://mevius.5ch.net/test/read.cgi/tech/1580471646/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1556142878/

■長いソースを貼るときはここへ。■
 http://codepad.org/
 https://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
127デフォルトの名無しさん
垢版 |
2020/02/20(木) 18:45:18.27ID:MajNX5le
キャッシュに乗るか乗らないか、それが人生のすべてだと思う。
128デフォルトの名無しさん
垢版 |
2020/02/20(木) 18:47:17.83ID:MajNX5le
ツリーも試作してみたんだけど、std::vectorの上にヒープ作った。
ヒープの何が良いかって、そのままserializeできるとこだと思う。
129デフォルトの名無しさん
垢版 |
2020/02/20(木) 18:54:16.16ID:MajNX5le
耳が嫌なら鼻に車輪をつけるべき。
130デフォルトの名無しさん
垢版 |
2020/02/20(木) 22:11:14.05ID:fXEOX4Gg
linuxでC++使ってる人っている?
2020/02/20(木) 23:17:42.47ID:vG9Ftm7S
今はwindows案件ばかりだけど
数年前くらいまではlinuxばかりだった
LL以外はほぼc++のみ
2020/02/21(金) 00:34:16.72ID:/A8YzA6j
車輪の最発明は
2020/02/21(金) 00:35:19.65ID:/A8YzA6j
車輪の再発明は結果的にそうなるというものであって
そういう現象なのであって
良いも悪いも善も悪も
ないお
2020/02/21(金) 00:37:46.17ID:/A8YzA6j
真に手間をかけたくなくて時間が惜しい当事者ならアルゴリズム辞典ぐら普通当たるし
そうではなくて他者とか部下が車輪の再発明に時間を浪費するのが我慢ならないのなら
正解を提示してやるべきだろうJK
マ板でやれ、
135デフォルトの名無しさん
垢版 |
2020/02/21(金) 00:42:29.43ID:IvNL6hmL
車輪の再発明って例えばどんなものをいうの?
2020/02/21(金) 00:52:38.31ID:/A8YzA6j
文明を0からやり直すとか
糸車と水車でコンピューターを作ることとか
いろいろ
2020/02/21(金) 03:47:53.07ID:4WjPaOvH
>>135
何かをやりかけた人をやめさせて、それ以上発展させないようにするために使われる言葉かもしれない。
2020/02/21(金) 03:49:56.83ID:4WjPaOvH
>>137
もう一つは、既存のプログラムのステークホルダーが、新しく作らせずに既にあるものを使わせようとするための口実や詭弁かも。
2020/02/21(金) 04:13:25.48ID:4WjPaOvH
この言葉、NPO団体勤務の人が使っているのを見た。
偉そうなこと行ってるけど、実績も学歴もたいしたこと無い。
2020/02/21(金) 04:21:00.31ID:4WjPaOvH
とある掲示板を見ていたが、この言葉は「その人の中では正しい」だけだと思った。
彼によれば、「自分で書くより既存のものを使ったほうが、大抵の場合は優秀だから」
ということであるが、それは彼の場合であって、自分で書いた方が優秀なものが出来上がる確率が高い人には当てはまらない。
要はIQが人並みを遥かに超えた人と、人並みの人の場合では異なってくる。
2020/02/21(金) 08:00:14.20ID:bpnRR2uh
メンデルの遺伝の法則とか車輪の再発明がもう何度目だナウシカ状態、
2020/02/21(金) 08:01:15.19ID:2hInWAVR
そもそも自分が優秀だと勘違いしてるヤツだからこそ
糞の山を量産して満足げなんであって

自分の愚かさを理解できてるやつは
糞の山作りかけてる時にそれに気付いて引き返す
2020/02/21(金) 08:11:44.84ID:Ml11ZCQR
そろそろC++の話に戻ろうか
2020/02/21(金) 08:51:54.20ID:XQ35bdbs
なんで既にあるものをそんなにもう一回作りたがるの?
めんどくせえじゃん
2020/02/21(金) 08:54:49.38ID:CRE0rstC
わかったC++の話にもどろう
まずはC++で効率のよいコレクションクラスの実装について・・
2020/02/21(金) 10:54:03.44ID:ZYgKzVvr
>>144
ねえ、プログラマなんて既に数え切れないほどいるのに
なんで自分もなりたがるんだろうね

他の職業にもすべて当てはまるね
無職がいいの?
147デフォルトの名無しさん
垢版 |
2020/02/21(金) 12:36:04.12ID:TKnLlA6x
無職も既に沢山居るのでもう不要だね
148デフォルトの名無しさん
垢版 |
2020/02/21(金) 12:38:05.46ID:TKnLlA6x
あ、死ねって意味じゃないよ。死者の数はもっと多いのでそっちの方がもっと不要。
2020/02/21(金) 14:12:28.80ID:0hFCFeWT
「自分の愚かさを理解できてるやつ」
これはみんなが同じ力量であることを前提にしていて、こういうところが嫌だ。
2020/02/21(金) 16:33:28.19ID:ZYgKzVvr
天狗になるのも、どうせ馬鹿だからと居直るのも
正反対のようで共通点がある
2020/02/21(金) 16:43:32.32ID:0hFCFeWT
この分野はレベルの差が大きいので、一般レベルからは有り得なくても天狗とは限らない。
2020/02/21(金) 17:42:31.96ID:Q29ljCA8
gotoの次は車輪か。
テンプレに付け加えていけよ。
記録することで無駄な議論を減らすってあたりまえのことができてないから
馬鹿なことを何回でも繰り返すんだよ。
安倍政権といっしょでさ。
2020/02/21(金) 17:49:18.82ID:ZYgKzVvr
gotoの話はみんな通る道なんだよ
後輩が議論するのを邪魔してやるな
2020/02/21(金) 17:51:05.91ID:EehroR5T
152
ドヤ顔で語ってそう
2020/02/21(金) 18:18:48.49ID:kxM5KQ/J
goto hell;
156デフォルトの名無しさん
垢版 |
2020/02/21(金) 19:02:09.52ID:IvNL6hmL
コンテナの基本はどうやらヒープのようなのですが。
157デフォルトの名無しさん
垢版 |
2020/02/21(金) 22:32:22.91ID:IvNL6hmL
テストを書くのがとても難しい。
158627
垢版 |
2020/02/21(金) 23:03:40.37ID:3bMJAyBr
書いて下さい。さあ!
2020/02/22(土) 00:13:48.42ID:3tA6OTRM
>>154
おまえみたいな馬鹿にうんざりしてるとこだよ。。
馬鹿はゴキブリみたいなもんだからな。
160デフォルトの名無しさん
垢版 |
2020/02/22(土) 00:18:04.12ID:M9bzP2wG
std::vectorはPODだと最終的にmemmoveが呼ばれるのにmemmoveよりだいぶ遅い。
それと何故memomoveなのかよくわからない。
2020/02/22(土) 01:05:00.59ID:TST3TeQo
159
くやしそう
2020/02/22(土) 01:19:12.99ID:+dvEVrBH
ここは趣味でプログラミングやってるギーク多そうだけど
まともなC++人材がいないせいで進歩がウン十年遅れてる業界がかなりあるから
どうかそういうことに飛び込んでいってくれないかな?
あ、給料はたぶんクソ安いけど日本への貢献と思って
2020/02/22(土) 01:23:04.30ID:5xQhS6+V
>>159
その気持ち分かるよ
>>152みたいな隙あらばアベガーゴキブリにはいい加減ウンザリだよな
2020/02/22(土) 10:02:22.31ID:3tA6OTRM
実際に馬鹿に馬鹿って言わないと安倍政権みたいな状態になるってのが今の政治に対する教訓だわな。。
ここも同じか。
2020/02/22(土) 10:46:14.31ID:L9oQb3BP
>>164
誰に向かって言っているのかは知らないがお前自身に言い聞かせているんだろうな
166デフォルトの名無しさん
垢版 |
2020/02/22(土) 10:46:44.30ID:M9bzP2wG
---------- std__pair__construct_1 ----------
std::pair<std::uint32_t, std::uint32_t>[]
  size(): 104,857,600
  construct: 0ms
  for (std::uint32_t i = 0; i < n; ++i) a1[i].second = i; 30ms
struct twice { std::uint32_t i1, i2; }[]
  size: 104,857,600
  construct: 0ms
  for (std::uint32_t i = 0; i < n; ++i) a2[i].i2 = i; 0ms
167デフォルトの名無しさん
垢版 |
2020/02/22(土) 10:47:53.49ID:M9bzP2wG
一億個書き込んで0msなのは最適化で消えるんですかね?
168デフォルトの名無しさん
垢版 |
2020/02/22(土) 11:07:40.21ID:M9bzP2wG
なんと最適化で消えていました。
2020/02/22(土) 11:12:11.00ID:4F0O272/
そりゃn=0なら繰り返すわけない
170デフォルトの名無しさん
垢版 |
2020/02/22(土) 11:14:58.08ID:M9bzP2wG
n == sizeなんですよ。
171デフォルトの名無しさん
垢版 |
2020/02/22(土) 11:18:06.93ID:M9bzP2wG
今度は最適化で消えないように末尾をIOしたら、なぜかstd::pairのほうが速くなった。
std::pair<std::uint32_t, std::uint32_t>[]
size(): 10,485,760
construct: 0ms
for (std::uint32_t i = 0; i < n; ++i) a1[i].second = i; 20ms
1[n - 1].secondt10,485,759
struct twice { std::uint32_t i1, i2; }[]
size: 10,485,760
construct: 0ms
for (std::uint32_t i = 0; i < n; ++i) a2[i].i2 = i; 42ms
a2[n - 1].i2 10,485,759
172デフォルトの名無しさん
垢版 |
2020/02/22(土) 11:19:11.90ID:M9bzP2wG
最適化で変数が消されないようにするおまじないってないんですかね?
173デフォルトの名無しさん
垢版 |
2020/02/22(土) 11:21:18.77ID:M9bzP2wG
当然と言えば当然だけど消されないようにしたらスタックオーバフローするので、グローバル変数に追い出したら、構築時間を測る方法が無くなった。
174デフォルトの名無しさん
垢版 |
2020/02/22(土) 11:22:23.37ID:M9bzP2wG
意味が分からない。
175デフォルトの名無しさん
垢版 |
2020/02/22(土) 11:24:06.01ID:M9bzP2wG
nをsizeと書いておいた方が後でわかりやすいのかな。
176デフォルトの名無しさん
垢版 |
2020/02/22(土) 11:27:04.70ID:M9bzP2wG
大きなスタックをとる方法かms以下を測る方法みつけないと測れない。
177デフォルトの名無しさん
垢版 |
2020/02/22(土) 11:32:12.14ID:M9bzP2wG
C++の最適化は異常すぎる。
2020/02/22(土) 11:37:21.93ID:FQZLMBs9
おまえが頭悪いのは十分わかったから、もう書き込むな
179デフォルトの名無しさん
垢版 |
2020/02/22(土) 11:37:23.90ID:M9bzP2wG
ちなみにグローバル変数で一億個確保したら今度はClangがギブアップした。
1000万個ならClangでもいけた。
180デフォルトの名無しさん
垢版 |
2020/02/22(土) 11:56:13.47ID:M9bzP2wG
std::vectorは初期化子リストによる構築が出来るんだけど、そこでもオーバーフローしたような気がする。
でも、元ネタは別にスタックに入れなくてもどこかにあるはずなので、なぜそうなるのかよくわからなかった。
2020/02/22(土) 12:30:58.63ID:sQwxiot/
特殊学級の子が乱入してきちゃってるやん・・・
182デフォルトの名無しさん
垢版 |
2020/02/22(土) 13:42:24.73ID:M9bzP2wG
なんだと!
183デフォルトの名無しさん
垢版 |
2020/02/22(土) 15:42:46.89ID:M9bzP2wG
スタック使えるのがC++の利点だよね。
2020/02/22(土) 16:27:02.47ID:vUJdNmYs
そもそもコードを書いた時点でされるであろう最適化を
まったく予想できていない
もうこの時点で脳味噌がコンパイラの知能より劣ってるのが確定
これすらわからんから延々と馬鹿な実験を続ける
2020/02/22(土) 16:38:08.08ID:/f58S0oT
バカな実験は勝手にやっててくれて構わないが、いちいちここに書き込むのはやめて欲しい。バカなことでも呟いていれば誰かが正しいことを教えてくれるだろうというスタイルなのだろうか?
186デフォルトの名無しさん
垢版 |
2020/02/22(土) 16:49:06.66ID:M9bzP2wG
>>185
ハイそういうスタイルです。
C++コミュニティは親切なので誰かが「ちげーだろバカ」と教えてくれます。
187デフォルトの名無しさん
垢版 |
2020/02/22(土) 17:30:17.04ID:M9bzP2wG
他に気付いたことは。
gotoはかなり使い道がある。
newは意外と速い。
std::vectorはコンテントによって最適化してくれるので基盤としてなかなか良い。
188デフォルトの名無しさん
垢版 |
2020/02/22(土) 17:33:20.63ID:M9bzP2wG
メモリー分断化は全く問題にもならなかった。
そんなに心配ならOSもJavaで書くしかない。
2020/02/22(土) 18:27:04.22ID:8Q4grnkR
構うから図に乗るんだよ
煽られてもガン無視しとけ
2020/02/22(土) 18:30:13.87ID:5jIrjfcF
>>186-187
マイクロベンチマークは特性を見極めるのに使うべきで、
その特性が用途に適合するかどうかという視点で見ないと意味ない。
当たり前だがあらゆる意味で最強ってことはそうそうあることではなくて、
良い部分もあれば悪い部分もある。

普段はかなり良質な機能でも、その悪い部分を使うような用途だったら
使い物にならないかもしれない。

「間違い」っていうのは目的にマッチしないってことなんだよ。
目的・用途が示されないベンチマークがダラダラ流れててもそこに間違いもクソもない。
指摘を期待するなら指摘できるような形に整理して欲しい。

C++ スレだから言語仕様に反することは (目的にかかわらず) 間違いと言うかもしれんけど、
言語仕様で未定義のことでもやむをえずやることは C++ ではあることだしな。
191デフォルトの名無しさん
垢版 |
2020/02/22(土) 18:36:22.97ID:M9bzP2wG
まずbenchmarkをとる方法がわかってないから。
2020/02/22(土) 22:36:47.98ID:8zrZxrX6
ベンチマーク取ること自体が目的なのはプロセッサベンダーとパソコンオタクだけ
まず要件があって、それを満たすことの判定のために設計するのがベンチマークだ
193デフォルトの名無しさん
垢版 |
2020/02/22(土) 23:06:34.77ID:M9bzP2wG
だいたいの感覚がわかればいいんだけど。
2020/02/23(日) 00:36:06.65ID:VTsgWMQb
ベンチマークは比較のために行うものなのでは…
2020/02/23(日) 03:50:37.25ID:e8YTPgwZ
>>188
そもそも、Javaの方がメモリー効率が悪い。
現実的にはGarbage Collectionはメモリーの節約にはならない。
2020/02/23(日) 06:59:13.39ID:pCDQSm7+
>>194
実装と実装の比較をする場合もあれば
試作と要求スペックの比較をする場合もあるね
197デフォルトの名無しさん
垢版 |
2020/02/23(日) 10:37:28.13ID:UFB+Qlam
>>194
比較のために取ってるんだよ。
入力がランダムな場合と、整列されてる場合とか。
生ポインタとstd::vectorとか。
だいたいの傾向が見たい。
2020/02/23(日) 14:00:58.11ID:5lcMrU2O
でお前は何を相談したいわけ?
中身のない活動報告しないくていいから
199デフォルトの名無しさん
垢版 |
2020/02/23(日) 14:18:49.75ID:UFB+Qlam
>>198
まあそういわれればそうかも。
スイマセンでした。
2020/02/23(日) 14:24:51.96ID:DiMPdgV2
Twitter とか Qiita とかで書いといて
2020/02/23(日) 14:40:09.27ID:yDpSritD
車輪どころか分裂勘違い君を再生産するのがC+++じゃねえか
202デフォルトの名無しさん
垢版 |
2020/02/23(日) 17:05:04.58ID:UFB+Qlam
だから悪かったって。
そんな怒らなくたっていいやん。
203デフォルトの名無しさん
垢版 |
2020/02/23(日) 17:08:42.45ID:UFB+Qlam
しかも+一個多いし。
2020/02/24(月) 01:13:48.48ID:1U5lho1x
質問ですが「〜の最大値」って英語で書くと「Maximum value of 〜」だと思うのですが、
<limits.h>のINT_MAXのようにMAXimumを後置にする書き方もそこそこ見かけます
〜MAXという名前と、
MAX〜という名前では英語圏の人的にはどっちが自然?
2020/02/24(月) 01:20:48.67ID:ZsrQSj47
〜MAXはINT_MAXみたいな不変の固定値
max〜はある配列の最大要素みたいなその場で求めた最大値の変数名に使いたくなる
日本人だからこれがネイティブな感覚かどうかは知らん
2020/02/24(月) 09:25:34.25ID:T8+Aa3p6
std::numeric_limits<int>::max() も語順は int, max だね
2020/02/24(月) 10:19:08.00ID:Bhg0SWzZ
>>206
C++ の文法的な制約による順序だから命名規則としての語順とは別物だと思うけど、
こういう風に文法で縛ってくれる形での記法だと (英語的な) 自然さに悩まなくて良いよね。
2020/02/24(月) 10:26:25.85ID:T8+Aa3p6
int というカテゴリの中に max があるべきか
max というカテゴリの中に int があるほうが合理的か
どっちだと思う?

俺は後者は、あまりにも漠然とした概念のカテゴリ名で探す気が失せそうに思う
205が指摘しているように同じ英単語でもどういう意味で使っているのか解釈に幅がありすぎ
2020/02/24(月) 11:45:35.94ID:FPuN7ayr
無理にクラスにせず関数にしろってのは
「無理な分類はするな」っていうC++の理念じゃないの
2020/02/24(月) 12:00:57.87ID:T8+Aa3p6
ファンクタなんかその逆なんだが
2020/02/24(月) 12:20:34.36ID:QkZvP/Ht
ここまで「英語圏の人」からの回答ひとつもナシ
2020/02/24(月) 12:33:29.35ID:T8+Aa3p6
そんなん5chに期待してるのか?
2020/02/24(月) 12:50:58.82ID:uK6l/p4b
>>211
西洋圏の人の場合、例えばハンガリアン記法では、人の人数は、numPerson、
CPersonへのポインタは、pPerson、Textが0終端文字列であることを表すためには、
pszTextとする。
これらは、number of persons, pointer to a person,
pointer to string with zero end for Text (???)
などに対応している。最後のはよく分からない。

ならば、maxPerson のようなつけ方もあってよいはず。しかし、
でも、PERSON_MAX というような命名法もある。
他の変数と並べたような時に、どちらが整理し易いかなどでそのプログラマが判断しているのだと思われる。
結論から言えば、オールマイティーな命名法は無い。
2020/02/24(月) 12:59:00.32ID:T8+Aa3p6
システムハンガリアンはハンガリー人が作ったんじゃないぞ
アメリカ人がtypeという英単語の意味を誤解して始めた今日では物笑いの種になってるやつだ
2020/02/24(月) 13:01:10.57ID:T8+Aa3p6
英語圏にもアホはいるんだよ
マイクロ波とガンマ線が区別できなくてヌークだヌークだ言ってる田舎者のせいで
スマホ恐怖症になってる情弱が後を絶たない
2020/02/24(月) 13:02:35.90ID:y8NirncW
むしろ英語圏こそアホの割合が多い
2020/02/24(月) 13:21:01.25ID:vxbZ0MKw
英語ができる=かしこい
と日本人は思いがちだ
日本では外国語はかしこくないと習得が難しいが話し相手の外国人は普通のやつが多い
知能指数が20くらいは違ってるはずだから会話内容は絶対かみ合っていない
でも話している日本人は交流できていると思って喜んでいる
日本人の言う知能と外国人の知能も多分かみ合っていないんだろう
2020/02/24(月) 19:53:54.48ID:XuGp3j1T
ここも話がまったくかみ合ってないしな
2020/02/25(火) 15:34:57.13ID:djWltYEA
>>63
少し話がずれるが、OOPには、「SOLID」原則なるものも有る。
2020/02/25(火) 19:09:36.06ID:SJd9VeEz
SOLIDとoopはそんなに関係はないけどな。
oopに神経使うくらいならSOLIDやTDDの理解に時間をかけた方が近道だわ。
2020/02/26(水) 11:19:43.59ID:L12u8R2Z
std::mapの値を取得するときに、右辺値で取得するより.at使う方が例外処理がある分遅いですか?
2020/02/26(水) 14:11:24.83ID:VEltjo/b
そんなことも聞かないとわからない奴は安全な方使っとけ
2020/02/26(水) 21:11:26.26ID:5tO15yqv
速さにこだわるのは中二病の証。
2020/02/26(水) 21:14:58.60ID:tn+NOmwK
富豪的プログラミングは厨三病の証かw
客の表情を一切気にしないオナニー野郎
2020/02/26(水) 22:17:02.48ID:5tO15yqv
地デジになってザッピングが遅くなった。
2020/02/26(水) 22:42:40.23ID:5tO15yqv
客の表情を気にすればこそ安全性・堅牢性が最重視される。速度は二の次。
2020/02/26(水) 22:58:05.64ID:HHiZy6zP
そんなもん要件次第
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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