[過去ログ] C++相談室 part164 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
119: (スッップ Sdea-Q5bc) 2023/05/26(金)21:10 ID:u5i01UPgd(1) AAS
解脱させたらに見えたし
120(1): (ワッチョイ 5f7c-aV//) 2023/05/26(金)21:19 ID:cuJor+ml0(1) AAS
「ワイのコードではこう動いてるからいいの!」「ワイが試したらこう動いたからこうなの!」
で突っ走った結果大爆発する事例が後を絶たない
121(1): (スプッッ Sd13-Cz+X) 2023/05/26(金)21:27 ID:TE50P/kBd(1) AAS
未定義まで行かなくても処理系依存とか未規定動作もあるからほんとにややこしい
知らず知らずのうちにコンパイラの拡張機能使ってたりもあるし
「動けばいいんだよ!」としか考えてないとどこで足元掬われるかわからん
122: (アウアウウー Sa2f-+waq) 2023/05/26(金)22:54 ID:C+URTl/Qa(1) AAS
んちんちんちんちんちんち
123: (ワッチョイ cb01-OHH9) 2023/05/26(金)23:25 ID:Rw5xxtFh0(1) AAS
>>120-121
そんな低レベルな奴見たことないけどな
居るには居るんだろうけど
あと逆にそういうのを「手を動かさない」「実用コードで試しもせずに机上の空論でマウント取る」ことの言い訳にしてる奴を最近よく見かけるのでな
124(1): (オイコラミネオ MMeb-owa4) 2023/05/26(金)23:42 ID:mzi7SNrwM(1) AAS
実際VS2005ぐらいに演算の順番が決まってなくて実装依存だった
それでコードを書いてた
それがVS2007には演算順序が2005と変わってた
GCCでも別の順で計算された
どうしたらいいかわからんから多分ここに聞きにきたら未定義動作だからどうしようもない
実装依存で仕方がないと返答あり
125: (ワッチョイ 4b01-nxBO) 2023/05/27(土)00:10 ID:U8Vd2x100(1) AAS
自分もVCから別環境のclangに数万行のコード移したら未定義踏んでた部分あるけど、試さずにそれを最初から予知出来てたかというと無理がある
どちらかのコンパイラのバグで通らなかったりおかしな動作する場合もあるんだし(特にテンプレート周りは多い)
書いてる最中でも疑問に思ったらすぐ調べる癖がついてりゃいいんじゃないかな
126(1): (ワッチョイ 6b5f-S+HU) 2023/05/27(土)00:12 ID:ne0x12BC0(1) AAS
>>124 いや、文を分けて順序付けするなり、やりようはあっただろ。
127: (オイコラミネオ MM4f-/RYi) 2023/05/27(土)00:24 ID:bsq21T/IM(1) AAS
>>126
上にも書かれてるけど既存のコードのどこで問題が発生してるか全てを特定できないんだよ
128: 蟻人間◆T6xkBnTXz7B0 (スフッ Sdbf-JQ4Y) 2023/05/27(土)00:41 ID:LEdjjvJrd(1) AAS
最近のVisual C++なら「コード分析」機能でコードの改良点を教えてくれるかも知れない。
129(1): (ワッチョイ 3bda-DntA) 2023/05/27(土)00:45 ID:JrAUAXG20(1) AAS
AIが他人が書いたクソコードのリファクタリングやってくれると助かるな
130: (アウアウウー Sa8f-BLq/) 2023/05/27(土)01:23 ID:D5N3c6HOa(1) AAS
超すごい!人間を越えた!とかワイワイさわがしいAIだが
実際にそういう感じの「マジに困ってる、やってくれたら本気で助かる」
ような事案は結局できない、という地獄
131: (ワッチョイ 0bb5-jMfM) 2023/05/27(土)04:58 ID:wRHxWgs90(1) AAS
言われたとおりやるだけ、なやつの極端な例だからな
132: (ワッチョイ 3bf0-TYVD) 2023/05/27(土)08:03 ID:hUTpNjv00(1) AAS
AIが人間並みの知性を持てば人間並みにエンバグしてくれるはず
133: (アウアウウー Sa8f-BLq/) 2023/05/27(土)08:08 ID:ap1zYrbma(1) AAS
すごい!まさに人間そのもののAIじゃないか!
134: (ワッチョイ 6b5f-r/x3) 2023/05/29(月)16:30 ID:AteM0zCG0(1) AAS
責任転嫁するようになるまで人間に並んだとは認めない
135: (ワッチョイ 0b6e-jMfM) 2023/05/29(月)17:54 ID:I9NccWA+0(1/2) AAS
会社で嫌われるイヤな奴の特徴を全てプログラミングされたAIとか?
136: (ワッチョイ 4bc0-3xLk) 2023/05/29(月)18:33 ID:IrTtCTAo0(1) AAS
AIに相談したせいで鬱になって辞める社員が続出しそうだな
AIポイゾニングは新手のリモート攻撃として流行るかもね
137: (ワッチョイ 0b6e-jMfM) 2023/05/29(月)20:15 ID:I9NccWA+0(2/2) AAS
ヘイテトリスみたいな社員AI
138(1): (ワッチョイ 0128-w4Nq) 2023/06/04(日)08:29 ID:5jvZ+YKl0(1/3) AAS
質問ですがstd::stringに格納された数値文字列を数値にしたい、
しかし数値以外の文字(ただし空白文字は認める)が後ろにくっついていたらエラーにしたい、と言う場合どうす
れば良いの?
ダチャい書き方ならできうるけど人類はいつまでstrtod()や&(str[0])……
std::string str;
str ← なんか文字列入る
char* end;
省6
139: (ワッチョイ 61f0-7HAn) 2023/06/04(日)08:38 ID:Wo5LOckB0(1) AAS
>>138 まず、こちらへ
0からの、超初心者C++相談室
2chスレ:tech
140: (ワッチョイ 0128-w4Nq) 2023/06/04(日)09:23 ID:5jvZ+YKl0(2/3) AAS
誘導されたので誘導先に建てたはサーセン、
141: (オイコラミネオ MMe9-N/Lw) 2023/06/04(日)11:01 ID:/SPLhkOjM(1) AAS
文字列(char配列)とstringの仕組みはダサいけど他も大体これ
さらにspanもいれる
どこも大体同じ
142(1): (ワッチョイ edf0-+LPJ) 2023/06/04(日)18:06 ID:HhL1J/ge0(1) AAS
しかしstodの「文字列が数値で始まる場合、数値化不可能な文字があっても例外は投げずに数値化出来るところまでの部分で数値化する」ってむしろ不便だよな。
143: (ワッチョイ eefb-dBHf) 2023/06/04(日)18:43 ID:XolxJINE0(1/6) AAS
charに変換して文字コード比較して範囲内外で変換分ける処理がシンプルじゃね
144: (ワッチョイ eefb-dBHf) 2023/06/04(日)18:44 ID:XolxJINE0(2/6) AAS
速度気になるなら二分探索の処理に追加してやればいいし
145: (ワッチョイ eefb-dBHf) 2023/06/04(日)18:45 ID:XolxJINE0(3/6) AAS
再帰処理でやってもいいかな
146: (ワッチョイ eefb-dBHf) 2023/06/04(日)18:45 ID:XolxJINE0(4/6) AAS
順序保証したいならリンクリストもありか
147: (ワッチョイ eefb-dBHf) 2023/06/04(日)18:46 ID:XolxJINE0(5/6) AAS
ちんこ痒い
148: (ワッチョイ a101-tVFH) 2023/06/04(日)18:58 ID:ym4W3arT0(1) AAS
リンクトリストな
149: (ワッチョイ eefb-dBHf) 2023/06/04(日)19:08 ID:XolxJINE0(6/6) AAS
内挿探索でも良さそう
150: (ワッチョイ a236-OEcF) 2023/06/04(日)20:01 ID:0KyMklrL0(1) AAS
STLへの多重配列クラス追加まだ?
151(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ c23e-N/Lw) 2023/06/04(日)22:37 ID:MHoxWKtY0(1/2) AAS
>>142
トークナイズするときに便利。
文字列が数値表現だけになっている状態を扱うことってそんなになくない?
なんらかの文字列から取り出す操作になることは多いし、
それを前提として考えたら自然な設計だと思う。
152(1): (ワッチョイ 0128-w4Nq) 2023/06/04(日)22:54 ID:5jvZ+YKl0(3/3) AAS
>>151
>なんらかの文字列から取り出す操作になることは多いし、
まさにそれやが
std::stod()ではどこまで読んだのかわからないから取り出せない……
153: はちみつ餃子◆8X2XSCHEME (ワッチョイ c23e-N/Lw) 2023/06/04(日)23:07 ID:MHoxWKtY0(2/2) AAS
>>152
わかるが。
154(1): (ワッチョイ 8d7c-vcK2) 2023/06/04(日)23:16 ID:bxWaSYac0(1) AAS
仕様も確認できない奴が仕様に文句付けるとかお笑いだわ
155: (ワッチョイ b901-1DxI) 2023/06/04(日)23:21 ID:QWRuQk/m0(1) AAS
勉強になるなぁ
boost::lexical_cast
ばっか使ってきた
156: (ワッチョイ 0128-w4Nq) 2023/06/05(月)01:56 ID:yTJt/rkc0(1/4) AAS
>>154
仕様を確認して文句つけているのだから無問題
157: (ワッチョイ 0128-w4Nq) 2023/06/05(月)02:01 ID:yTJt/rkc0(2/4) AAS
つか自分のスキルに合わせて仕様を変えてしまう香具師よりはマシ
158: (ワッチョイ 0128-w4Nq) 2023/06/05(月)02:39 ID:yTJt/rkc0(3/4) AAS
つか初心者スレで今教えてもらったわサーセン;;;
std::stod()の第2引数でどこまで読んだのかわかるのかそうか、、、
159: (アウアウウー Sac5-Rr/m) 2023/06/05(月)09:40 ID:ejs/048Ga(1) AAS
1e-3
0.4E+5
どうせ . とか + とか - とか e とか E が数字の後ろに来たらエラーにする糞オレオレ関数の出来上がり
160: (アウアウウー Sac5-+LPJ) 2023/06/05(月)18:46 ID:QlKvcf+ua(1) AAS
fortran爺が1e-3を1-3と書いて送ってくるの辛い
161: (ワッチョイ 0128-w4Nq) 2023/06/05(月)22:24 ID:yTJt/rkc0(4/4) AAS
charやwchar_tのうちは文字数くれたら別段間違うことは無いはず……
162: (ワッチョイ 916e-UlWg) 2023/06/06(火)05:24 ID:sRXlIYgz0(1) AAS
0xe5a3ec05p-10
163: (ラクッペペ MMe6-aBKW) 2023/06/07(水)18:16 ID:yJ6NJbScM(1) AAS
regex 使って、全角半角タブはreplace
しつつも、正規表現で、数字だけ残して
ってしたらいいのでは
164: (ワッチョイ 7d02-lxw5) 2023/06/07(水)19:51 ID:Y1IkEaDo0(1) AAS
ファイル名で並び替えるとき数字を文字列じゃなく数として判断して並び替えるの便利だよね。StrCmpLogicalWみたいなの
165: (ワッチョイ eefb-dBHf) 2023/06/07(水)20:17 ID:Wtu+kJ5G0(1) AAS
digitntegerみたいな関数なかったっけ
javaと混同してるかもしれん
166: (ワッチョイ eed6-hc5i) 2023/06/07(水)20:48 ID:DVJV7mYE0(1) AAS
大文字小文字とか小数とか半角全角とか漢数字とかあるから闇が深い
167: (ワッチョイ e54e-sceX) 2023/06/07(水)21:25 ID:nzVrXgF60(1) AAS
アンダーバーの位置関係も結構罠だよね
文字コード的には 大文字<アンダーバー<小文字 だから
168: (オイコラミネオ MMe9-sceX) 2023/06/07(水)23:13 ID:ZHL7BfYmM(1) AAS
言語+コンパイラの仕様が拡張してるのにライブラリは貧弱なまま
自己流に実装してしょうもないバグが紛れ込む
関係ないけどstd::stodはC言語版と微妙に仕様が違うのだろうけどそんなの調べてない
169: (ワッチョイ 469a-D/IE) 2023/06/08(木)00:14 ID:mm4FKY9+0(1) AAS
例えばstodが解釈できる数値表現を正規表現でも解釈したいと思ったらどうしたら
170: (アウアウウー Sac5-tVFH) 2023/06/08(木)11:09 ID:rxjbLVG0a(1) AAS
仕様の不備は運用でカバー
171(1): (ワッチョイ b901-1DxI) 2023/06/09(金)00:34 ID:Y9bb1A2p0(1/2) AAS
std::sort (std::execution::par, v.begin(), v.end());
上記で並列ソートできるとのことですが何並列なんでしょうか?
もし環境に合わせて良きに計らってくれるのなら
その良き並列数を取得する関数などありますか?
172: はちみつ餃子◆8X2XSCHEME (ワッチョイ e53e-N/Lw) 2023/06/09(金)01:32 ID:vjFKJkM00(1) AAS
>>171
詳細は言語仕様では規定されていない。
リソースが不足していれば並列化されないこともあり得る。
並列化は大抵の場合に OS のサポートが必要だし
どういうサポートがあるかわからんので言語として明瞭な規定を決められない。
並列化される保証はないのにデータ競合が発生しないように実装するのは
プログラマの責任なので若干の理不尽さを感じなくもないが
省1
173(1): (ワッチョイ 6293-1rII) 2023/06/09(金)07:16 ID:bBOCrSG+0(1) AAS
週末のレイトレーシングで1-17あたりをマルチスレッドにしてみたんだけど、ubuntu上でg++やインテルコンパイラだとスレッド数を増やすと逆におそくなるんです。windows上でvisualstudioでコンパイルすると、望み通りスレッド数を増やすほど速くなりました。何でなんでしょう?
174: (ワッチョイ eef2-2RXP) 2023/06/09(金)08:07 ID:e2G6/2re0(1) AAS
>>173
>週末のレイトレーシングで1-17
全く意味がわからないんだが?
>何でなんでしょう?
お前のコーティングのせいじゃないか?
175: (ワッチョイ 916e-aXLw) 2023/06/09(金)08:18 ID:m5f79nsG0(1/2) AAS
gccはね・・・どうも平行/並列処理には本気じゃないところがある
たとえばstd::execution::parなんか真面目にやらんかこらって言いたくなる
176: (ワッチョイ 916e-aXLw) 2023/06/09(金)08:19 ID:m5f79nsG0(2/2) AAS
無料なので強く出られないけどね
177: (ワッチョイ b901-1DxI) 2023/06/09(金)11:49 ID:Y9bb1A2p0(2/2) AAS
皆さんレスを有り難うござます
うちはstd::execution::parで効果絶大です
$ g++ --version
g++ (Debian 10.2.1-6) 10.2.1 20210110
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
178: (ワッチョイ b901-mwg1) 2023/06/09(金)22:45 ID:uysUozYZ0(1) AAS
なるほどなあ
179: (ワッチョイ 13ad-2rqm) 2023/06/10(土)02:07 ID:oiDhCbH60(1) AAS
EASTLが久しぶりにバージョンアップしたね
180: (ワッチョイ c901-7YjN) 2023/06/10(土)07:02 ID:kaZ6v5kb0(1) AAS
ほう!いいね
181: (ワッチョイ b16b-q0yD) 2023/06/14(水)07:54 ID:/jeWb7sY0(1/2) AAS
time コマンドで調べたメモリの使用量 (max resident set size) が理論値よりも多くて、原因を特定するためにコード内の各箇所でその時点でのメモリ使用量を出力できたら良いなと思います。
実行環境は Linux なのですが、どのようにするべきでしょうか?
182(8): (ワッチョイ b16b-q0yD) 2023/06/14(水)08:43 ID:/jeWb7sY0(2/2) AAS
あとメモリに関連した質問で、例えばめちゃデカい std::vector を要素数 1 に resize しても capacity はめちゃデカいままですよね?
STL コンテナ以外にも、大きいメモリが割り当てられてるオブジェクトを使用後に破棄したいというケースがよくあります。
最も簡単なやり方は関数とか局所的なスコープとして切り出すことかと思いますが、他に、オブジェクトに割り当てられているメモリを手動で解放する方法があったら教えてください。
183(2): (スプッッ Sd33-5Oyn) 2023/06/14(水)08:49 ID:Xd2fVcpxd(1) AAS
/proc/self/stat というファイルを覗きに行くか、
getrusage というシステムコールで取得することになるかな
184(2): はちみつ餃子◆8X2XSCHEME (ワッチョイ c13e-2rqm) 2023/06/14(水)09:19 ID:O3itrano0(1) AAS
>>182
そのために shrink_to_fit がある。
詳細は実装依存なので何もしない関数であっても仕様に反しないけど
常識的には各実行環境で効率的に動くように実装されるので
まずは試してみても損はないと思う。
アロケータを自作してもあまり制御できないんよね。
アロケーションが必要になったらコンテナからアロケータが呼ばれるという
省3
185(4): (アウアウウー Sadd-g1CP) 2023/06/14(水)10:15 ID:iWYHYN4ra(1/3) AAS
>>182
new で造って delete (または delete []) で解放
186(2): (ワッチョイ 8bfb-Xx8j) 2023/06/14(水)12:28 ID:XWt8afSz0(1) AAS
更にいうと、deleteはgccでは推奨されないのでptrを使うよりはstaticもしくはvirtualを使いましょうね。
187(2): (テテンテンテン MMeb-jufV) 2023/06/14(水)12:29 ID:XEzvAdInM(1) AAS
>>182
>>185とほとんど同じだけどunique ptrで管理。
ヒープの確保時間が問題になるならアロケーター使ってヒープを予約する。
188(1): (ワッチョイ d9f0-EP1b) 2023/06/14(水)13:12 ID:9CAXVpD30(1) AAS
>>182
vector<空にしたいオブジェの要素の型>().swap(空にしたいオブジェ)
189(2): (アウアウウー Sadd-g1CP) 2023/06/14(水)13:33 ID:iWYHYN4ra(2/3) AAS
>>188
vector<空にしたいオブジェの要素の型> hoge;
が既にあったとしたら
vector<空にしたいオブジェの要素の型>(hoge).swap(hoge);
で良いらしいけど副作用の心配無い?
190(3): (ワッチョイ 219b-q0yD) 2023/06/14(水)14:03 ID:0kIiqVrM0(1/2) AAS
>>183
ありがとうございます
> getrusage
を試してみようと思います
>>185-187
STL コンテナを使うとしても自作クラスを使うとしても、オブジェクトを unique_ptr で持つことにして要らなくなったら reset() すれば確保していた分のメモリを捨てられるということでしょうか
依存関係が絡み合っていて簡単に小さいスコープに分割できないときは試してみようと思います
191(2): (アウアウウー Sadd-g1CP) 2023/06/14(水)14:16 ID:iWYHYN4ra(3/3) AAS
reset()は違うと思う
192(1): (ワッチョイ 01da-EP1b) 2023/06/14(水)14:26 ID:HNZbb8Sq0(1) AAS
>>189
その場合はメモリアクセス領域が変わるのでswapする前に取得済みだったイテレータは再取得する必要あり
193: (ワッチョイ e95f-2rqm) 2023/06/14(水)15:52 ID:K9MvWtl90(1/2) AAS
>186 が何を言ってるのか意味不明でこわい。
194(1): (ワッチョイ e95f-2rqm) 2023/06/14(水)15:54 ID:K9MvWtl90(2/2) AAS
>>191
「reset() すれば確保していた分のメモリを捨てられる」で間違いないでしょ。
195(2): (テテンテンテン MMeb-jufV) 2023/06/14(水)18:26 ID:9LyNOs9uM(1) AAS
>>190
resetする必要は無いよ。
コンテナから普通に要素を削除すれば、後はコンテナクラスがよろしくやってくれる。効率は実装次第だけど。
196(1): (ワッチョイ 219b-q0yD) 2023/06/14(水)18:51 ID:0kIiqVrM0(2/2) AAS
>>195
コンテナクラスがよろしくやってくれるのに任せるのであれば、スマートポインタで持たずに単にコンテナとして持つのと変わらないように思うのですが、違うのでしょうか。
ちゃんと理解していなかったら申し訳ありません。
197(1): (ワッチョイ d17c-sLM4) 2023/06/14(水)18:58 ID:vjajEcDc0(1) AAS
vectorを信頼するなら単にclear()してshrink_to_fit()すればいい
信用できないならスマポで持っといていらなくなったら手動でブチ消せばいい
それすら信用できないならイチから自分で作れ
お前がどれだけ心配消化による
198(1): (テテンテンテン MMeb-jufV) 2023/06/14(水)19:18 ID:YeSwNDrrM(1) AAS
>>196
どのコンテナを使うかによる。
vectorとかdequeはまだ確保していない要素用の領域をしばしば予約するから、>>182のような状況を回避するのは面倒臭い。
listとかmapは(これも実装次第だけど)まだ確保していない要素のための領域を予約したりしないから、他のデメリットを許容するなら>>182対策の選択肢になる可能性はある。
いずれにしても、そこまで気にするならまずベンチマークを取って実態を調査すべきだし、そもそも巨大なメモリを頻繁に確保・解放するのは設計に問題があることが多いから、メモリを解放しないで済む方法を検討してみる。
199(2): (ワッチョイ 219b-q0yD) 2023/06/15(木)03:20 ID:J1cG0ikp0(1/3) AAS
>>198
そもそもvectorのスマートポインタ (あるいはより一般的にサイズが動的なクラスのスマートポインタ) を作り、そのvectorやクラスのサイズを変えたときって確保されてる領域のサイズも変わるんでしたっけ?
手動で変えなきゃいけないと思っていました
(また、vectorのポインタとvectorの先頭要素のポインタは意味が違うのでよりわけが分からなくなりました)
上下前次1-新書関写板覧索設栞歴
あと 803 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.028s