!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること
次スレは>>980が立てること
無理なら細かく安価指定
※前スレ
C++相談室 part163
https://mevius.5ch.net/test/read.cgi/tech/1672409791/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
C++相談室 part164
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 33da-QP0H)
2023/05/09(火) 11:50:52.06ID:EYc2I7oW0125デフォルトの名無しさん (ワッチョイ 4b01-nxBO)
2023/05/27(土) 00:10:57.47ID:U8Vd2x100 自分もVCから別環境のclangに数万行のコード移したら未定義踏んでた部分あるけど、試さずにそれを最初から予知出来てたかというと無理がある
どちらかのコンパイラのバグで通らなかったりおかしな動作する場合もあるんだし(特にテンプレート周りは多い)
書いてる最中でも疑問に思ったらすぐ調べる癖がついてりゃいいんじゃないかな
どちらかのコンパイラのバグで通らなかったりおかしな動作する場合もあるんだし(特にテンプレート周りは多い)
書いてる最中でも疑問に思ったらすぐ調べる癖がついてりゃいいんじゃないかな
126デフォルトの名無しさん (ワッチョイ 6b5f-S+HU)
2023/05/27(土) 00:12:11.79ID:ne0x12BC0 >>124 いや、文を分けて順序付けするなり、やりようはあっただろ。
127デフォルトの名無しさん (オイコラミネオ MM4f-/RYi)
2023/05/27(土) 00:24:40.55ID:bsq21T/IM >>126
上にも書かれてるけど既存のコードのどこで問題が発生してるか全てを特定できないんだよ
上にも書かれてるけど既存のコードのどこで問題が発生してるか全てを特定できないんだよ
128蟻人間 ◆T6xkBnTXz7B0 (スフッ Sdbf-JQ4Y)
2023/05/27(土) 00:41:28.44ID:LEdjjvJrd 最近のVisual C++なら「コード分析」機能でコードの改良点を教えてくれるかも知れない。
129デフォルトの名無しさん (ワッチョイ 3bda-DntA)
2023/05/27(土) 00:45:08.14ID:JrAUAXG20 AIが他人が書いたクソコードのリファクタリングやってくれると助かるな
130デフォルトの名無しさん (アウアウウー Sa8f-BLq/)
2023/05/27(土) 01:23:22.98ID:D5N3c6HOa 超すごい!人間を越えた!とかワイワイさわがしいAIだが
実際にそういう感じの「マジに困ってる、やってくれたら本気で助かる」
ような事案は結局できない、という地獄
実際にそういう感じの「マジに困ってる、やってくれたら本気で助かる」
ような事案は結局できない、という地獄
131デフォルトの名無しさん (ワッチョイ 0bb5-jMfM)
2023/05/27(土) 04:58:22.78ID:wRHxWgs90 言われたとおりやるだけ、なやつの極端な例だからな
132デフォルトの名無しさん (ワッチョイ 3bf0-TYVD)
2023/05/27(土) 08:03:41.82ID:hUTpNjv00 AIが人間並みの知性を持てば人間並みにエンバグしてくれるはず
133デフォルトの名無しさん (アウアウウー Sa8f-BLq/)
2023/05/27(土) 08:08:34.97ID:ap1zYrbma すごい!まさに人間そのもののAIじゃないか!
134デフォルトの名無しさん (ワッチョイ 6b5f-r/x3)
2023/05/29(月) 16:30:05.50ID:AteM0zCG0 責任転嫁するようになるまで人間に並んだとは認めない
135デフォルトの名無しさん (ワッチョイ 0b6e-jMfM)
2023/05/29(月) 17:54:13.71ID:I9NccWA+0 会社で嫌われるイヤな奴の特徴を全てプログラミングされたAIとか?
136デフォルトの名無しさん (ワッチョイ 4bc0-3xLk)
2023/05/29(月) 18:33:58.19ID:IrTtCTAo0 AIに相談したせいで鬱になって辞める社員が続出しそうだな
AIポイゾニングは新手のリモート攻撃として流行るかもね
AIポイゾニングは新手のリモート攻撃として流行るかもね
137デフォルトの名無しさん (ワッチョイ 0b6e-jMfM)
2023/05/29(月) 20:15:39.44ID:I9NccWA+0 ヘイテトリスみたいな社員AI
138デフォルトの名無しさん (ワッチョイ 0128-w4Nq)
2023/06/04(日) 08:29:54.68ID:5jvZ+YKl0 質問ですがstd::stringに格納された数値文字列を数値にしたい、
しかし数値以外の文字(ただし空白文字は認める)が後ろにくっついていたらエラーにしたい、と言う場合どうす
れば良いの?
ダチャい書き方ならできうるけど人類はいつまでstrtod()や&(str[0])……
std::string str;
str ← なんか文字列入る
char* end;
double d = std::strtod(&(str[0]), &end);
if (end == &(str[0])) { エラー }
while (*end != '\0') {
if (!std::isspace(*end)) { エラー }
end++;
}
しかし数値以外の文字(ただし空白文字は認める)が後ろにくっついていたらエラーにしたい、と言う場合どうす
れば良いの?
ダチャい書き方ならできうるけど人類はいつまでstrtod()や&(str[0])……
std::string str;
str ← なんか文字列入る
char* end;
double d = std::strtod(&(str[0]), &end);
if (end == &(str[0])) { エラー }
while (*end != '\0') {
if (!std::isspace(*end)) { エラー }
end++;
}
139デフォルトの名無しさん (ワッチョイ 61f0-7HAn)
2023/06/04(日) 08:38:19.14ID:Wo5LOckB0140デフォルトの名無しさん (ワッチョイ 0128-w4Nq)
2023/06/04(日) 09:23:46.19ID:5jvZ+YKl0 誘導されたので誘導先に建てたはサーセン、
141デフォルトの名無しさん (オイコラミネオ MMe9-N/Lw)
2023/06/04(日) 11:01:36.99ID:/SPLhkOjM 文字列(char配列)とstringの仕組みはダサいけど他も大体これ
さらにspanもいれる
どこも大体同じ
さらにspanもいれる
どこも大体同じ
142デフォルトの名無しさん (ワッチョイ edf0-+LPJ)
2023/06/04(日) 18:06:29.89ID:HhL1J/ge0 しかしstodの「文字列が数値で始まる場合、数値化不可能な文字があっても例外は投げずに数値化出来るところまでの部分で数値化する」ってむしろ不便だよな。
143デフォルトの名無しさん (ワッチョイ eefb-dBHf)
2023/06/04(日) 18:43:24.19ID:XolxJINE0 charに変換して文字コード比較して範囲内外で変換分ける処理がシンプルじゃね
144デフォルトの名無しさん (ワッチョイ eefb-dBHf)
2023/06/04(日) 18:44:47.92ID:XolxJINE0 速度気になるなら二分探索の処理に追加してやればいいし
145デフォルトの名無しさん (ワッチョイ eefb-dBHf)
2023/06/04(日) 18:45:10.55ID:XolxJINE0 再帰処理でやってもいいかな
146デフォルトの名無しさん (ワッチョイ eefb-dBHf)
2023/06/04(日) 18:45:59.18ID:XolxJINE0 順序保証したいならリンクリストもありか
147デフォルトの名無しさん (ワッチョイ eefb-dBHf)
2023/06/04(日) 18:46:48.29ID:XolxJINE0 ちんこ痒い
148デフォルトの名無しさん (ワッチョイ a101-tVFH)
2023/06/04(日) 18:58:47.70ID:ym4W3arT0 リンクトリストな
149デフォルトの名無しさん (ワッチョイ eefb-dBHf)
2023/06/04(日) 19:08:45.19ID:XolxJINE0 内挿探索でも良さそう
150デフォルトの名無しさん (ワッチョイ a236-OEcF)
2023/06/04(日) 20:01:40.57ID:0KyMklrL0 STLへの多重配列クラス追加まだ?
151はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c23e-N/Lw)
2023/06/04(日) 22:37:10.94ID:MHoxWKtY0 >>142
トークナイズするときに便利。
文字列が数値表現だけになっている状態を扱うことってそんなになくない?
なんらかの文字列から取り出す操作になることは多いし、
それを前提として考えたら自然な設計だと思う。
トークナイズするときに便利。
文字列が数値表現だけになっている状態を扱うことってそんなになくない?
なんらかの文字列から取り出す操作になることは多いし、
それを前提として考えたら自然な設計だと思う。
152デフォルトの名無しさん (ワッチョイ 0128-w4Nq)
2023/06/04(日) 22:54:17.16ID:5jvZ+YKl0154デフォルトの名無しさん (ワッチョイ 8d7c-vcK2)
2023/06/04(日) 23:16:49.21ID:bxWaSYac0 仕様も確認できない奴が仕様に文句付けるとかお笑いだわ
155デフォルトの名無しさん (ワッチョイ b901-1DxI)
2023/06/04(日) 23:21:12.95ID:QWRuQk/m0 勉強になるなぁ
boost::lexical_cast
ばっか使ってきた
boost::lexical_cast
ばっか使ってきた
156デフォルトの名無しさん (ワッチョイ 0128-w4Nq)
2023/06/05(月) 01:56:30.15ID:yTJt/rkc0 >>154
仕様を確認して文句つけているのだから無問題
仕様を確認して文句つけているのだから無問題
157デフォルトの名無しさん (ワッチョイ 0128-w4Nq)
2023/06/05(月) 02:01:37.37ID:yTJt/rkc0 つか自分のスキルに合わせて仕様を変えてしまう香具師よりはマシ
158デフォルトの名無しさん (ワッチョイ 0128-w4Nq)
2023/06/05(月) 02:39:23.25ID:yTJt/rkc0 つか初心者スレで今教えてもらったわサーセン;;;
std::stod()の第2引数でどこまで読んだのかわかるのかそうか、、、
std::stod()の第2引数でどこまで読んだのかわかるのかそうか、、、
159デフォルトの名無しさん (アウアウウー Sac5-Rr/m)
2023/06/05(月) 09:40:21.73ID:ejs/048Ga 1e-3
0.4E+5
どうせ . とか + とか - とか e とか E が数字の後ろに来たらエラーにする糞オレオレ関数の出来上がり
0.4E+5
どうせ . とか + とか - とか e とか E が数字の後ろに来たらエラーにする糞オレオレ関数の出来上がり
160デフォルトの名無しさん (アウアウウー Sac5-+LPJ)
2023/06/05(月) 18:46:42.35ID:QlKvcf+ua fortran爺が1e-3を1-3と書いて送ってくるの辛い
161デフォルトの名無しさん (ワッチョイ 0128-w4Nq)
2023/06/05(月) 22:24:29.81ID:yTJt/rkc0 charやwchar_tのうちは文字数くれたら別段間違うことは無いはず……
162デフォルトの名無しさん (ワッチョイ 916e-UlWg)
2023/06/06(火) 05:24:35.89ID:sRXlIYgz0 0xe5a3ec05p-10
163デフォルトの名無しさん (ラクッペペ MMe6-aBKW)
2023/06/07(水) 18:16:46.44ID:yJ6NJbScM regex 使って、全角半角タブはreplace
しつつも、正規表現で、数字だけ残して
ってしたらいいのでは
しつつも、正規表現で、数字だけ残して
ってしたらいいのでは
164デフォルトの名無しさん (ワッチョイ 7d02-lxw5)
2023/06/07(水) 19:51:43.45ID:Y1IkEaDo0 ファイル名で並び替えるとき数字を文字列じゃなく数として判断して並び替えるの便利だよね。StrCmpLogicalWみたいなの
165デフォルトの名無しさん (ワッチョイ eefb-dBHf)
2023/06/07(水) 20:17:49.58ID:Wtu+kJ5G0 digitntegerみたいな関数なかったっけ
javaと混同してるかもしれん
javaと混同してるかもしれん
166デフォルトの名無しさん (ワッチョイ eed6-hc5i)
2023/06/07(水) 20:48:56.87ID:DVJV7mYE0 大文字小文字とか小数とか半角全角とか漢数字とかあるから闇が深い
167デフォルトの名無しさん (ワッチョイ e54e-sceX)
2023/06/07(水) 21:25:16.49ID:nzVrXgF60 アンダーバーの位置関係も結構罠だよね
文字コード的には 大文字<アンダーバー<小文字 だから
文字コード的には 大文字<アンダーバー<小文字 だから
168デフォルトの名無しさん (オイコラミネオ MMe9-sceX)
2023/06/07(水) 23:13:43.57ID:ZHL7BfYmM 言語+コンパイラの仕様が拡張してるのにライブラリは貧弱なまま
自己流に実装してしょうもないバグが紛れ込む
関係ないけどstd::stodはC言語版と微妙に仕様が違うのだろうけどそんなの調べてない
自己流に実装してしょうもないバグが紛れ込む
関係ないけどstd::stodはC言語版と微妙に仕様が違うのだろうけどそんなの調べてない
169デフォルトの名無しさん (ワッチョイ 469a-D/IE)
2023/06/08(木) 00:14:20.61ID:mm4FKY9+0 例えばstodが解釈できる数値表現を正規表現でも解釈したいと思ったらどうしたら
170デフォルトの名無しさん (アウアウウー Sac5-tVFH)
2023/06/08(木) 11:09:51.53ID:rxjbLVG0a 仕様の不備は運用でカバー
171デフォルトの名無しさん (ワッチョイ b901-1DxI)
2023/06/09(金) 00:34:29.94ID:Y9bb1A2p0 std::sort (std::execution::par, v.begin(), v.end());
上記で並列ソートできるとのことですが何並列なんでしょうか?
もし環境に合わせて良きに計らってくれるのなら
その良き並列数を取得する関数などありますか?
上記で並列ソートできるとのことですが何並列なんでしょうか?
もし環境に合わせて良きに計らってくれるのなら
その良き並列数を取得する関数などありますか?
172はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e53e-N/Lw)
2023/06/09(金) 01:32:53.73ID:vjFKJkM00 >>171
詳細は言語仕様では規定されていない。
リソースが不足していれば並列化されないこともあり得る。
並列化は大抵の場合に OS のサポートが必要だし
どういうサポートがあるかわからんので言語として明瞭な規定を決められない。
並列化される保証はないのにデータ競合が発生しないように実装するのは
プログラマの責任なので若干の理不尽さを感じなくもないが
C++ ってのはそういうもんなので……。
詳細は言語仕様では規定されていない。
リソースが不足していれば並列化されないこともあり得る。
並列化は大抵の場合に OS のサポートが必要だし
どういうサポートがあるかわからんので言語として明瞭な規定を決められない。
並列化される保証はないのにデータ競合が発生しないように実装するのは
プログラマの責任なので若干の理不尽さを感じなくもないが
C++ ってのはそういうもんなので……。
173デフォルトの名無しさん (ワッチョイ 6293-1rII)
2023/06/09(金) 07:16:14.12ID:bBOCrSG+0 週末のレイトレーシングで1-17あたりをマルチスレッドにしてみたんだけど、ubuntu上でg++やインテルコンパイラだとスレッド数を増やすと逆におそくなるんです。windows上でvisualstudioでコンパイルすると、望み通りスレッド数を増やすほど速くなりました。何でなんでしょう?
174デフォルトの名無しさん (ワッチョイ eef2-2RXP)
2023/06/09(金) 08:07:59.94ID:e2G6/2re0175デフォルトの名無しさん (ワッチョイ 916e-aXLw)
2023/06/09(金) 08:18:32.57ID:m5f79nsG0 gccはね・・・どうも平行/並列処理には本気じゃないところがある
たとえばstd::execution::parなんか真面目にやらんかこらって言いたくなる
たとえばstd::execution::parなんか真面目にやらんかこらって言いたくなる
176デフォルトの名無しさん (ワッチョイ 916e-aXLw)
2023/06/09(金) 08:19:05.88ID:m5f79nsG0 無料なので強く出られないけどね
177デフォルトの名無しさん (ワッチョイ b901-1DxI)
2023/06/09(金) 11:49:37.37ID:Y9bb1A2p0 皆さんレスを有り難うござます
うちは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.
うちは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:32.96ID:uysUozYZ0 なるほどなあ
179デフォルトの名無しさん (ワッチョイ 13ad-2rqm)
2023/06/10(土) 02:07:59.33ID:oiDhCbH60 EASTLが久しぶりにバージョンアップしたね
180デフォルトの名無しさん (ワッチョイ c901-7YjN)
2023/06/10(土) 07:02:46.03ID:kaZ6v5kb0 ほう!いいね
181デフォルトの名無しさん (ワッチョイ b16b-q0yD)
2023/06/14(水) 07:54:14.73ID:/jeWb7sY0 time コマンドで調べたメモリの使用量 (max resident set size) が理論値よりも多くて、原因を特定するためにコード内の各箇所でその時点でのメモリ使用量を出力できたら良いなと思います。
実行環境は Linux なのですが、どのようにするべきでしょうか?
実行環境は Linux なのですが、どのようにするべきでしょうか?
182デフォルトの名無しさん (ワッチョイ b16b-q0yD)
2023/06/14(水) 08:43:22.06ID:/jeWb7sY0 あとメモリに関連した質問で、例えばめちゃデカい std::vector を要素数 1 に resize しても capacity はめちゃデカいままですよね?
STL コンテナ以外にも、大きいメモリが割り当てられてるオブジェクトを使用後に破棄したいというケースがよくあります。
最も簡単なやり方は関数とか局所的なスコープとして切り出すことかと思いますが、他に、オブジェクトに割り当てられているメモリを手動で解放する方法があったら教えてください。
STL コンテナ以外にも、大きいメモリが割り当てられてるオブジェクトを使用後に破棄したいというケースがよくあります。
最も簡単なやり方は関数とか局所的なスコープとして切り出すことかと思いますが、他に、オブジェクトに割り当てられているメモリを手動で解放する方法があったら教えてください。
183デフォルトの名無しさん (スプッッ Sd33-5Oyn)
2023/06/14(水) 08:49:33.85ID:Xd2fVcpxd /proc/self/stat というファイルを覗きに行くか、
getrusage というシステムコールで取得することになるかな
getrusage というシステムコールで取得することになるかな
184はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c13e-2rqm)
2023/06/14(水) 09:19:31.16ID:O3itrano0 >>182
そのために shrink_to_fit がある。
詳細は実装依存なので何もしない関数であっても仕様に反しないけど
常識的には各実行環境で効率的に動くように実装されるので
まずは試してみても損はないと思う。
アロケータを自作してもあまり制御できないんよね。
アロケーションが必要になったらコンテナからアロケータが呼ばれるという
受動的な構造なのでコンテナによるメモリ管理戦略にそれほど関与できるわけではない。
本当にどうしても標準ライブラリの挙動の詳細が不満なら
自分で同等のものを実装する (または望ましいものをどこかから見つける) しかないよ。
そのために shrink_to_fit がある。
詳細は実装依存なので何もしない関数であっても仕様に反しないけど
常識的には各実行環境で効率的に動くように実装されるので
まずは試してみても損はないと思う。
アロケータを自作してもあまり制御できないんよね。
アロケーションが必要になったらコンテナからアロケータが呼ばれるという
受動的な構造なのでコンテナによるメモリ管理戦略にそれほど関与できるわけではない。
本当にどうしても標準ライブラリの挙動の詳細が不満なら
自分で同等のものを実装する (または望ましいものをどこかから見つける) しかないよ。
185デフォルトの名無しさん (アウアウウー Sadd-g1CP)
2023/06/14(水) 10:15:22.04ID:iWYHYN4ra >>182
new で造って delete (または delete []) で解放
new で造って delete (または delete []) で解放
186デフォルトの名無しさん (ワッチョイ 8bfb-Xx8j)
2023/06/14(水) 12:28:17.37ID:XWt8afSz0 更にいうと、deleteはgccでは推奨されないのでptrを使うよりはstaticもしくはvirtualを使いましょうね。
187デフォルトの名無しさん (テテンテンテン MMeb-jufV)
2023/06/14(水) 12:29:45.65ID:XEzvAdInM188デフォルトの名無しさん (ワッチョイ d9f0-EP1b)
2023/06/14(水) 13:12:37.90ID:9CAXVpD30 >>182
vector<空にしたいオブジェの要素の型>().swap(空にしたいオブジェ)
vector<空にしたいオブジェの要素の型>().swap(空にしたいオブジェ)
189デフォルトの名無しさん (アウアウウー Sadd-g1CP)
2023/06/14(水) 13:33:02.07ID:iWYHYN4ra >>188
vector<空にしたいオブジェの要素の型> hoge;
が既にあったとしたら
vector<空にしたいオブジェの要素の型>(hoge).swap(hoge);
で良いらしいけど副作用の心配無い?
vector<空にしたいオブジェの要素の型> hoge;
が既にあったとしたら
vector<空にしたいオブジェの要素の型>(hoge).swap(hoge);
で良いらしいけど副作用の心配無い?
190デフォルトの名無しさん (ワッチョイ 219b-q0yD)
2023/06/14(水) 14:03:16.39ID:0kIiqVrM0191デフォルトの名無しさん (アウアウウー Sadd-g1CP)
2023/06/14(水) 14:16:54.18ID:iWYHYN4ra reset()は違うと思う
192デフォルトの名無しさん (ワッチョイ 01da-EP1b)
2023/06/14(水) 14:26:34.51ID:HNZbb8Sq0 >>189
その場合はメモリアクセス領域が変わるのでswapする前に取得済みだったイテレータは再取得する必要あり
その場合はメモリアクセス領域が変わるのでswapする前に取得済みだったイテレータは再取得する必要あり
193デフォルトの名無しさん (ワッチョイ e95f-2rqm)
2023/06/14(水) 15:52:59.34ID:K9MvWtl90 >186 が何を言ってるのか意味不明でこわい。
194デフォルトの名無しさん (ワッチョイ e95f-2rqm)
2023/06/14(水) 15:54:13.97ID:K9MvWtl90 >>191
「reset() すれば確保していた分のメモリを捨てられる」で間違いないでしょ。
「reset() すれば確保していた分のメモリを捨てられる」で間違いないでしょ。
195デフォルトの名無しさん (テテンテンテン MMeb-jufV)
2023/06/14(水) 18:26:24.05ID:9LyNOs9uM196デフォルトの名無しさん (ワッチョイ 219b-q0yD)
2023/06/14(水) 18:51:34.14ID:0kIiqVrM0 >>195
コンテナクラスがよろしくやってくれるのに任せるのであれば、スマートポインタで持たずに単にコンテナとして持つのと変わらないように思うのですが、違うのでしょうか。
ちゃんと理解していなかったら申し訳ありません。
コンテナクラスがよろしくやってくれるのに任せるのであれば、スマートポインタで持たずに単にコンテナとして持つのと変わらないように思うのですが、違うのでしょうか。
ちゃんと理解していなかったら申し訳ありません。
197デフォルトの名無しさん (ワッチョイ d17c-sLM4)
2023/06/14(水) 18:58:01.98ID:vjajEcDc0 vectorを信頼するなら単にclear()してshrink_to_fit()すればいい
信用できないならスマポで持っといていらなくなったら手動でブチ消せばいい
それすら信用できないならイチから自分で作れ
お前がどれだけ心配消化による
信用できないならスマポで持っといていらなくなったら手動でブチ消せばいい
それすら信用できないならイチから自分で作れ
お前がどれだけ心配消化による
198デフォルトの名無しさん (テテンテンテン MMeb-jufV)
2023/06/14(水) 19:18:20.42ID:YeSwNDrrM199デフォルトの名無しさん (ワッチョイ 219b-q0yD)
2023/06/15(木) 03:20:48.20ID:J1cG0ikp0 >>198
そもそもvectorのスマートポインタ (あるいはより一般的にサイズが動的なクラスのスマートポインタ) を作り、そのvectorやクラスのサイズを変えたときって確保されてる領域のサイズも変わるんでしたっけ?
手動で変えなきゃいけないと思っていました
(また、vectorのポインタとvectorの先頭要素のポインタは意味が違うのでよりわけが分からなくなりました)
そもそもvectorのスマートポインタ (あるいはより一般的にサイズが動的なクラスのスマートポインタ) を作り、そのvectorやクラスのサイズを変えたときって確保されてる領域のサイズも変わるんでしたっけ?
手動で変えなきゃいけないと思っていました
(また、vectorのポインタとvectorの先頭要素のポインタは意味が違うのでよりわけが分からなくなりました)
200デフォルトの名無しさん (ワッチョイ d17c-sLM4)
2023/06/15(木) 06:50:20.05ID:usfnoco+0 std::vectorはshrink_to_fit()呼ばない限り勝手にcapacity縮めたりしないはずだけど
201デフォルトの名無しさん (ワッチョイ d19c-jufV)
2023/06/15(木) 08:48:34.83ID:hMmgKiSo0202デフォルトの名無しさん (ワッチョイ b96e-ofsu)
2023/06/15(木) 09:00:49.34ID:K4jCDX8M0 シビアな状況でC++が使えないやつがCならOKなはずはない
203デフォルトの名無しさん (アウアウウー Sadd-g1CP)
2023/06/15(木) 10:11:47.24ID:dLjlwX4ma204デフォルトの名無しさん (ワイーワ2 FF63-pDI4)
2023/06/15(木) 10:56:55.78ID:kyFBXozFF 他所スレで同じ様な流れが
>742
質問の仕方が悪いだけwww
欲しい情報を引き出すには一定以上の質問能力が必要
>743
質問の仕方が重要なのはその通りだけど
ここで問題にしてるのは自分が詳しくない領域では質問の仕方が悪かったかどうかも分からないってことでしょうよ
>744
>>742
質問のしかたさえ良ければ正確な情報が手に入ると思ってるのは素人だけだぞ?w
>742
質問の仕方が悪いだけwww
欲しい情報を引き出すには一定以上の質問能力が必要
>743
質問の仕方が重要なのはその通りだけど
ここで問題にしてるのは自分が詳しくない領域では質問の仕方が悪かったかどうかも分からないってことでしょうよ
>744
>>742
質問のしかたさえ良ければ正確な情報が手に入ると思ってるのは素人だけだぞ?w
205デフォルトの名無しさん (ワッチョイ 219b-q0yD)
2023/06/15(木) 12:02:49.40ID:J1cG0ikp0 >>201
いや、ポインタのサイズなんて全く気にしてない。
質問は、メモリの解放をコンテナに任せるならわざわざスマポで持つ意味ないよね? ってこと。
で、コンテナに任せるというのは元の質問(>>182)への回答に全くなってないよね? ってこと。
(その理由は>>184,200様の書いてくださってる通り)
つーかお前が何も分かってないのは>>195でreset()しなくて良いとかほざいてる時点でお察し。
>>203-204
笑
>>203は>>191で「reset()しなくても良い」とかほざいてて>>195と同レベ。
>>183-185,194,197,200様
ご丁寧な回答をくださりどうもありがとうございました。
勉強になります。
いや、ポインタのサイズなんて全く気にしてない。
質問は、メモリの解放をコンテナに任せるならわざわざスマポで持つ意味ないよね? ってこと。
で、コンテナに任せるというのは元の質問(>>182)への回答に全くなってないよね? ってこと。
(その理由は>>184,200様の書いてくださってる通り)
つーかお前が何も分かってないのは>>195でreset()しなくて良いとかほざいてる時点でお察し。
>>203-204
笑
>>203は>>191で「reset()しなくても良い」とかほざいてて>>195と同レベ。
>>183-185,194,197,200様
ご丁寧な回答をくださりどうもありがとうございました。
勉強になります。
206デフォルトの名無しさん (テテンテンテン MMeb-jufV)
2023/06/15(木) 12:29:34.24ID:QcI//Xn+M >>205
コンテナのsmart ptrの扱いは調べた?
コンテナの要素とポインタの参照先の違いについて根本的な誤解がありそう。
vectorはまだ構築していないインスタンス用のメモリ領域を予約するけど、smart ptrはそんなことしないよ。
vector<smart ptr>もsmart ptr の予約はするけど、smart ptrの参照先インスタンスの予約はしない。
コンテナのsmart ptrの扱いは調べた?
コンテナの要素とポインタの参照先の違いについて根本的な誤解がありそう。
vectorはまだ構築していないインスタンス用のメモリ領域を予約するけど、smart ptrはそんなことしないよ。
vector<smart ptr>もsmart ptr の予約はするけど、smart ptrの参照先インスタンスの予約はしない。
207デフォルトの名無しさん (ワッチョイ 219b-q0yD)
2023/06/15(木) 13:15:56.80ID:J1cG0ikp0 >>206
だから、結局任意のコンテナ、クラスに対してスコープ内でメモリを解放する方法は?
new で生ポを持って delete するか、スマポを持って reset するかだろ?
> vectorはまだ構築していないインスタンス用のメモリ領域を予約するけど、smart ptrはそんなことしないよ。
そりゃそう。
ゆえに、メモリを間違いなくリリースしたいなら reset すればよいのですねと>>190で述べている。
それで終わりなのにお前と来たら reset は不要だの元のコンテナの挙動に任せるだの、論旨を全く理解してないとんでもレスばっかり。
> vector<smart ptr>も……
論外。
誰もスマポのvectorの話なんてしてねえ。
だから、結局任意のコンテナ、クラスに対してスコープ内でメモリを解放する方法は?
new で生ポを持って delete するか、スマポを持って reset するかだろ?
> vectorはまだ構築していないインスタンス用のメモリ領域を予約するけど、smart ptrはそんなことしないよ。
そりゃそう。
ゆえに、メモリを間違いなくリリースしたいなら reset すればよいのですねと>>190で述べている。
それで終わりなのにお前と来たら reset は不要だの元のコンテナの挙動に任せるだの、論旨を全く理解してないとんでもレスばっかり。
> vector<smart ptr>も……
論外。
誰もスマポのvectorの話なんてしてねえ。
208デフォルトの名無しさん (ワッチョイ 8bfb-Xx8j)
2023/06/15(木) 14:56:16.78ID:M9bt3STi0 186でも言ってるがstaticもしくはvirtualでデストラクタ使えよ
それがシンプルで高速で1行も無駄のない設計な
それがシンプルで高速で1行も無駄のない設計な
209デフォルトの名無しさん (ワッチョイ 01c9-6bUV)
2023/06/15(木) 15:01:28.21ID:B8g22vaD0 182の
>最も簡単なやり方は関数とか局所的なスコープとして切り出すことかと思いますが
がコンストラクタで確保してデストラクタで消す話というのはわかってる上で
>他に、オブジェクトに割り当てられているメモリを手動で解放する方法があったら教えてください。
なんじゃないの?
そんなものは無いっていう答えもあるにはあるけどサ
>最も簡単なやり方は関数とか局所的なスコープとして切り出すことかと思いますが
がコンストラクタで確保してデストラクタで消す話というのはわかってる上で
>他に、オブジェクトに割り当てられているメモリを手動で解放する方法があったら教えてください。
なんじゃないの?
そんなものは無いっていう答えもあるにはあるけどサ
210デフォルトの名無しさん (ワッチョイ 13f0-8sUu)
2023/06/15(木) 18:41:07.51ID:QIwD56Ju0 最近IPP触り始めたんですが全部飽和演算で面食らってます
Modulo関数は無いんですか?
Modulo関数は無いんですか?
211デフォルトの名無しさん (ワッチョイ fb8c-jufV)
2023/06/15(木) 21:00:11.51ID:W1C5TI4i0 >>207
ああ、ごめん。めっちゃデカイインスタンスのvectorじゃなくて、めっちゃデカイvectorね。
それなら実装依存だけど>184か、>192とか参照無効化の制限とかコピーコストとかあるけど>189。189はsmart ptrにしとけば実用上問題ないかね。vectorのイテレーターは保存するものじゃないし。
ああ、ごめん。めっちゃデカイインスタンスのvectorじゃなくて、めっちゃデカイvectorね。
それなら実装依存だけど>184か、>192とか参照無効化の制限とかコピーコストとかあるけど>189。189はsmart ptrにしとけば実用上問題ないかね。vectorのイテレーターは保存するものじゃないし。
212デフォルトの名無しさん (ワッチョイ c14e-8sUu)
2023/06/15(木) 21:28:08.23ID:3cvhbwG+0 実際の所、vectorならclear()→shrink_to_fit()でメモリが開放されないこってありうるの?
213デフォルトの名無しさん (ワッチョイ d17c-sLM4)
2023/06/15(木) 22:10:40.95ID:usfnoco+0 規格上はshrink_to_fit()にメモリ解放する義務はないし、実装定義で何やっても自由(capacityを増やすような真似だけは禁止)
shrink_to_fit()がなんにもしない実装でも一応規格準拠になる
そんな糞みたいな実装が実在するかは知らない
shrink_to_fit()がなんにもしない実装でも一応規格準拠になる
そんな糞みたいな実装が実在するかは知らない
214デフォルトの名無しさん (US 0H0b-q0yD)
2023/06/16(金) 02:13:28.00ID:PZdB0bgSH215はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c13e-2rqm)
2023/06/16(金) 11:31:25.61ID:QEmhRLek0 >>212
基本的には効率的に実装されるものだと信じて良いと思うが
どういう実装が効率的であるかは実行環境の事情による。
たとえばメモリ管理がページ単位というのは普通のことだし
その場合にページ単位より細かく確保したり解放したりしても非効率になる。
常に何もしないというような実装はあまりないと思うけど
解放するほうが非効率だと考えられる状況では
shrink_to_fit を呼んでも解放しなかったり部分的にだけ解放する
ということはそれなりにあり得そうだと思うよ。
基本的には効率的に実装されるものだと信じて良いと思うが
どういう実装が効率的であるかは実行環境の事情による。
たとえばメモリ管理がページ単位というのは普通のことだし
その場合にページ単位より細かく確保したり解放したりしても非効率になる。
常に何もしないというような実装はあまりないと思うけど
解放するほうが非効率だと考えられる状況では
shrink_to_fit を呼んでも解放しなかったり部分的にだけ解放する
ということはそれなりにあり得そうだと思うよ。
216デフォルトの名無しさん (ワッチョイ 01c9-6bUV)
2023/06/16(金) 12:08:14.46ID:nWXjt7Za0 capacityと OS側からみた空きメモリはまた別かもしれんわけで
アロケーターがOSからじかに要求してる場合もあれば
OSへの要求回数を減らして内部でプールしてやりくりしてるのもあるし
制御したいレイヤーによっては全部自前でやるしかない という落ちにも
アロケーターがOSからじかに要求してる場合もあれば
OSへの要求回数を減らして内部でプールしてやりくりしてるのもあるし
制御したいレイヤーによっては全部自前でやるしかない という落ちにも
217デフォルトの名無しさん (ワッチョイ c14e-8sUu)
2023/06/16(金) 12:26:43.83ID:B2wRJ7jC0 >>215
まぁ、細かい単位のメモリだったら、実際に開放されているかどうかなんて、ほとんど動作に影響しないとも言えるしね
(未初期化変数の不具合が発覚しづらい、くらいか)
とりあえずshrink_to_fitを呼んでおいて、細かいことは気にしないのが一番かもしれないw
まぁ、細かい単位のメモリだったら、実際に開放されているかどうかなんて、ほとんど動作に影響しないとも言えるしね
(未初期化変数の不具合が発覚しづらい、くらいか)
とりあえずshrink_to_fitを呼んでおいて、細かいことは気にしないのが一番かもしれないw
218デフォルトの名無しさん (ワッチョイ 934f-q0yD)
2023/06/16(金) 12:46:08.57ID:H6XPX5qB0 「STLコンテナ以外にも」という文言が読めてない文盲さんたちがvectorの話ばっかしててワロ
219デフォルトの名無しさん (ワッチョイ d969-2rqm)
2023/06/16(金) 15:41:25.79ID:KX+TErXo0 「STLコンテナ以外にも」はSTLコンテナも含むということ
STLコンテナの話をしても何もおかしくない
STLコンテナの話をしても何もおかしくない
220デフォルトの名無しさん (アウアウウー Sadd-g1CP)
2023/06/16(金) 15:43:23.81ID:ly+Q1cW8a いつものことだが
ほんの最初の数レスで終わってるのに
どうでも良い脱線ほど盛り上がってgdgdレスでスレが延びる
ほんの最初の数レスで終わってるのに
どうでも良い脱線ほど盛り上がってgdgdレスでスレが延びる
221デフォルトの名無しさん (アウアウウー Sadd-Xx8j)
2023/06/16(金) 15:46:42.75ID:/DJegtL/a ほんそれ
回答終了してんのにちんこかゆい
回答終了してんのにちんこかゆい
222デフォルトの名無しさん (スフッ Sd33-pDI4)
2023/06/16(金) 15:49:19.69ID:YNpYq5+wd >>182 良く読むと
>STL コンテナ以外にも、大きいメモリが割り当てられてるオブジェクトを使用後に破棄したいというケースがよくあります。
>最も簡単なやり方は関数とか局所的なスコープとして切り出すことかと思いますが
いやいやそもそも「関数とか局所的なスコープ(つまりautoだろ?stackだろ?)で大きいメモリ確保しようなんて思うな」って話なんだよな
>STL コンテナ以外にも、大きいメモリが割り当てられてるオブジェクトを使用後に破棄したいというケースがよくあります。
>最も簡単なやり方は関数とか局所的なスコープとして切り出すことかと思いますが
いやいやそもそも「関数とか局所的なスコープ(つまりautoだろ?stackだろ?)で大きいメモリ確保しようなんて思うな」って話なんだよな
223デフォルトの名無しさん (ワッチョイ e95f-2rqm)
2023/06/16(金) 16:09:01.10ID:qgM8i0iT0 ローカルなvectorを置けばヒープ確保されるので「つまりautoだろ?stackだろ?」は
また何か誤解してる人が来たなとしか。
また何か誤解してる人が来たなとしか。
224デフォルトの名無しさん (ワッチョイ 219b-q0yD)
2023/06/16(金) 16:49:22.15ID:ybGonaVE0 reset要らないとか言ってる奴らは結局何なん
225デフォルトの名無しさん (テテンテンテン MMeb-jufV)
2023/06/16(金) 19:32:47.80ID:yx9ngvFiM■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 習政権、高市首相への態度硬化 台湾有事発言で連日非難 中国 ★11 [ぐれ★]
- 日本損失1.7兆円に修正 中国渡航自粛の影響試算 [蚤の市★]
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★3 [蚤の市★]
- 「どうしようもない」 ため息つくアジアの玄関口 中国の訪日自粛で−福岡市 [蚤の市★]
- 「アベノミクス」で投資対象と化したマンション ローンの低金利続き「年収の12倍」借りる20代出現 [蚤の市★]
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 【実況】博衣こよりのえちえち朝こよ🧪 ★2
- 【!?】高市早苗「靖国神社電撃参拝プラン」浮上!これもう戦争だろ… [481941988]
- 【実況】博衣こよりのえちえち朝こよ🧪
- カカロット、腰痛い
- 【超悲報】中国への武力行使、世論調査で「賛成」「どちらかといえば賛成」48.8% 「反対」「どちらかといえば反対」の44.2%を上回る [314039747]
- 中国「高市が頭を下げて謝罪しない限り、絶対に許さない」 [329329848]
