[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/22 21:10 / Filesize : 275 KB / Number-of Response : 1017
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part158



1 名前:デフォルトの名無しさん mailto:sage [2021/11/15(月) 18:49:18.44 ID:I69rZ/Of.net]
前スレ
C++相談室 part157
https://mevius.5ch.net/test/read.cgi/tech/1628474251/

231 名前:デフォルトの名無しさん mailto:sage [2021/12/05(日) 12:19:36.79 ID:ZXOJuLfE.net]
× C形式
○ キャスト記法

232 名前:デフォルトの名無しさん mailto:sage [2021/12/05(日) 18:20:14.63 ID:jjkrjYLo.net]
C形式のキャストでええやろ
C++ならstatic_castでキャストするべきところ

233 名前:デフォルトの名無しさん mailto:sage [2021/12/05(日) 18:26:41.52 ID:BgqX0HXa.net]
精度がfloatでいいならsinf使え

234 名前:デフォルトの名無しさん mailto:sage [2021/12/05(日) 19:23:24.64 ID:ZXOJuLfE.net]
>>230
いや、そうではなくJIS規格で定められた用語ってこと

・・・まあね、フレンドが随伴とかちょっと・・・なところあるんだけど

235 名前:デフォルトの名無しさん mailto:sage [2021/12/05(日) 20:16:51.63 ID:DeLDBVlq.net]
いまだに用語警察っているんだなw

236 名前:デフォルトの名無しさん mailto:sage [2021/12/05(日) 20:29:45.29 ID:jjkrjYLo.net]
C++11以降にJIS規格は存在しないし, ぶっちゃけ本当に誰もキャスト形式なんて呼んでないし (T) cast-expression とさえ呼ばれない。
C++ Core GuidelinesやgccやclangでもC-style(やold-style)と表現しているのだからそんな古臭い分かりにくい用語を押し付ける必然性がない

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Pro-type-cstylecast

237 名前:デフォルトの名無しさん mailto:sage [2021/12/05(日) 20:34:58.49 ID:CHJdF2OL.net]
用語の間違いで意味の取り違えが起きるような場面ならはっきりさせておくべきだが今回はどうでもいいな。

238 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 07:47:05.01 ID:g0v08EwR.net]
>>234
キャスト形式?
何に対する意見を言っているんだ?

239 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 08:09:01.81 ID:3cd7zaNc.net]
また下らん揚げ足取り君が来たw



240 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 18:36:58.89 ID:g0v08EwR.net]
揚げ足じゃねえよ
話の根幹に拘わることだ

まともに反駁できないなら
黙っているのが得策だぞ

241 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 21:16:52.28 ID:dR0HZDjS.net]
訂正の益があったとしても(今回は全くなさそうだが)用語警察は不要
書き込みの意味が文脈から一意であれば問題ない
黙ってろ

242 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 21:23:49.13 ID:XPddKxbx.net]
constructorとdestructorを常に生成子・消去子と呼んでる者だけがJIS規格を振り回しなさい

243 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 22:13:15.88 ID:Zqmej2qN.net]
オレ用語を高圧的な態度で押しつけてくるやつとは仕事したくねえ

244 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 00:15:41.50 ID:35fMaRJu.net]
>>219
今から考えれば NECのPC-8801 のBASIC言語は数学好きに合っていた。
当時のNECの社長は、東大物理の大学院出の人だったらしい。
その人がTOPにいる間はNECのパソコンは日本で一斉を風靡していたが、
その人が降りてからは、嘘の様に勢いがなくなった。

245 名前:デフォルトの名無しさん [2021/12/07(火) 13:20:30.29 ID:XtC4oDEh.net]
みんなコルーチン使ってる?

246 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 13:44:30.14 ID:bN2QwYhk.net]
コルーチンはいろいろ制限が多くてな、最近はfiberの方を使ってる
機種依存APIを使う必要がある、実行効率が若干落ちる、スタック用のメモリを大量消費する、トレースデバッグがやりづらい等のデメリットはあるが、
本物のyieldはやっぱ便利よ

247 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 14:37:49.13 ID:RTlriAYU.net]
c+のvectorって無限に要素追加したらどうなりますか?
例えばwhile (1) でemplace_back()し続けた時の挙動です。javaみたいにちゃんとoutofmemoryエラー吐くようにできてますか?

248 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 14:52:13.72 ID:N5mK0FmF.net]
「ちゃんとout of memoryエラーを吐く」というのは突き詰めるとものすごく難しい概念なので、どこまでを求めるかによる
Javaにしても本当にどのレベルまで正しくやれてるのかは知らん
まあ「なんかあったらstd::bad_alloc投げて来るやろ」で99%のケースは事足りると思うけど

249 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 14:57:50.91 ID:xk7e4Rn1.net]
例えば普通のアプリだと、C++とか関係なく最近のOSのメモリ確保は仮想メモリの確保なので、実際にそのアドレスが使われて初めて物理アドレスが確保され、スワップ領域が足りない場合もそのとき検出される。



250 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 14:57:56.04 ID:Z6YBtzSC.net]
mallocに失敗すればbad_allocが投げられるが
実際のところmallocが失敗するときにできることは殆ど無いと認識している

251 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 15:01:16.11 ID:i9OSA5UU.net]
>>179
そもそも C++ から Fortran で書かれてるオリジナルの BLAS とか LAPACK を呼ぶこともできるのだから、その辺は別に何でも良い

そんなことよりも多次元配列をどう持つかの方が C++ にとっては難しい課題だ
Cの多次元配列や一次元配列として持つのはユーザ側の負担が大き過ぎる
boost の multi_array は放置されている (move セマンティクスに対応してすらない)
xtensor みたいなサードパーティのものをわざわざ使うのも…… (つーかどれもパッとしない)
早く多次元配列くらい公式で用意してほしい

252 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 15:42:17.22 ID:bN4twrqH.net]
多次元といっても中身掛け算の一次元だしな

253 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 16:20:01.36 ID:m1NjLpbT.net]
class foo : vector<mystruct>
みたいなクラスを作っているんだけど
クラス内の関数で自身の配列の構造体の関数を呼ぶにはどうしたらいいんだろう?

this[a]->set(0);
と書いてもメンバーがありませんと出て困ってます😭

254 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 16:24:10.42 ID:bN4twrqH.net]
(*this)[a]->set(0);

255 名前:デフォルトの名無しさん [2021/12/07(火) 16:32:15.84 ID:m1NjLpbT.net]
>>252
ありがとう!ちょっと直したけど
(*this)[a].set(0);
でできました、超助かりました!チュッ!

256 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 17:48:46.48 ID:D9y2bkeI.net]
そういうときはat()使ってる

257 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 18:03:51.96 ID:bN4twrqH.net]
atは範囲チェック分鈍くなるの我慢出来るなら有
あと例外飛ばすからtry〜catch節必須

258 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 20:03:22.82 ID:CgArR1cc.net]
>>248
bad_alloc is not out-of-memory!
https://wg21.link/P1401

259 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 21:29:05.30 ID:C8BO015l.net]
std::vectorのデストラクタはvirtualじゃないから気を付けてね、念のため



260 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 22:45:19.35 ID:eXh2WItM.net]
abort()したら生きている自動オブジェクトは
どうなってし
まいますの?

261 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 00:17:43.36 ID:19ueGHR5.net]
#include <iostream>
#include <cstdlib>
using namespace std;
struct s {
~s() {cout << "called." << endl;}
};
int main() {
s a;
abort();
return 0;
}
https://ideone.com/YDdO5O
https://cpprefjp.github.io/reference/cstdlib/abort.html

262 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 00:51:11.41 ID:x9fXkANc.net]
abortより例外飛ばした方が確実だな(VC++6.0を除く

263 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 07:27:41.53 ID:HL2646/9.net]
>>258
デストラクタは実行されない
問答無用で強制終了
電源ぶっちするようなもん

264 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 07:58:51.26 ID:ZH5V4J5Q.net]
多次元配列 (mdspanだっけ) ってまだSTLに入らんの?
線形代数アルゴリズムはBLAS、LAPACKはじめ外部のライブラリに頼らざるを得ないんだから、最小限の機能だけ備えた取り回しの良いライブラリをさっさと入れちゃえば良いのに

この機械学習全盛の時代に置いてかれるよね

265 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 10:00:58.02 ID:19ueGHR5.net]
機械学習全盛なの?

266 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 13:49:53.98 ID:juXg17Zg.net]
ああいうライブラリってプラットフォームにべったり依存してるんじゃないの

267 名前:デフォルトの名無しさん [2021/12/08(水) 13:51:20.15 ID:ADK1Cn8m.net]
GoogleのGPUがオンラインで無料でつかえるぞ
Python言語だが

268 名前:デフォルトの名無しさん [2021/12/08(水) 13:56:11.42 ID:ADK1Cn8m.net]
C言語とかローカルの言語からGoogleのGPUを操作できれば
ローカルで実行してるのと大差なくできると今おもったが
探せばすでにそういったAPIとかある気はしたが

269 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 14:21:17.05 ID:19ueGHR5.net]
スレ違い。
Google Colaboratoryはjupyter notebook使えればいいだけ。
!や%%で大抵のことは出来る。



270 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 16:19:48.22 ID:ZH5V4J5Q.net]
>>264
どういうライブラリ?

271 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 00:00:00.18 ID:y//gPIop.net]
>>260
例外飛ばしたら今度はCの関数が処理の途中でぶっちされるやん……?
次のような場合:
foo() // C++で記述、例外をスロー

bar() // Cで記述、ループ内とかでfoo()を呼ぶ

baz() // C/C++で書かれた呼び出し元

272 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 01:16:56.11 ID:nwscR4Pq.net]
構造体を関数の中で宣言して戻り値に入れたら
呼び出した側が受け取った値はどこかで開放しないといけないですか?

273 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 01:43:46.28 ID:9kW8IukA.net]
なんで最近こんな無茶苦茶なの?
>>269
質問は「生きている自動オブジェクト」がどうなるかであり、例外でスコープから抜ければC/C++だろうと破棄される
>>270
「関数の中で宣言」とはどういうこと?
「受け取った値」はどうやって確保されたの?
ちゃんと伝えられないならコードで質問しないと伝わらない

274 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 07:16:10.87 ID:Gl3ymjyg.net]
>>270
要らない
構造体はintなんかと同じでコピーされるから []
[ここ壊れてます]

276 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 09:45:40.72 ID:nwscR4Pq.net]
>>272 >>271
ありがとう!助かりました

C#でGC慣れしているので
正直この辺はなかなか理解が進まなくて…
ESP32が面白くてC++を始めたんだけど
いざ自分であれこれ作ろうとすると
わからない部分が多すぎて申し訳ない

277 名前:はちみつ餃子 mailto:sage [2021/12/09(木) 10:43:53.70 ID:XwSSuf4e.net]
そこらへんのメカニズムはどんな入門書にでも書いてあるはずだよ。
C# の経験があると C++ の入門書では重複する考え方も多くて馬鹿らしく思うかもしれないけど、
似て非なる機能や用語で混乱しないためには基礎から学んだほうがいい。

278 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 11:33:51.67 ID:WBF8gVdC.net]
newを知っててもdelete知らなかったりするからな

279 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 11:45:45.22 ID:kWV4UehO.net]
そこらじゅうにうんこをばらまいておいて誰かが始末してくれると信じているというわけか



280 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 12:14:01.37 ID:WBF8gVdC.net]
やつらメモリーリークという言葉自体知らなかったりするから

281 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 17:58:28.95 ID:0JFBEVvg.net]
GC言語でもファイルのcloseはあるから
C++はメモリもあれと同じでnewした物は全部責任持ってdeleteしなきゃならないんだよって教えるんだけど
みんなこの世の終わりみたいな顔する

282 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 18:13:01.83 ID:jWh05eno.net]
>>275
w

283 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 20:34:39.79 ID:XclkFwFR.net]
おまいら「よう、うんこ掃除屋」
unique_ptr「…」


10年後、人類はAIの反乱で滅亡するのでした

284 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 21:19:33.80 ID:JHQQMY8Y.net]
コンピューターの計算だから正しいっ!!

285 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 23:56:02.90 ID:y//gPIop.net]
>>271
Cのは
破棄されない

286 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 23:59:22.21 ID:9kW8IukA.net]
>>282
Cで書かれてるならデストラクタなどはないのでメモリ解放で破棄

287 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 23:59:43.06 ID:y//gPIop.net]
Cの構造体はunwindされずただぶっちされるだけ
コードの実行がぶっちされるのはC/C++共通う

288 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 00:07:01.17 ID:4mUmJ7za.net]
自身を適切に開放なり後始末なりするデストラクタを持たないオブジェクトは例外でほぼ等しく致命傷を負う
そういうデストラクタを持っているつもりでも、コードの実行順がぶっちされることにより、
プログラマーの不注意ですぐ致命傷を負う

289 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 00:28:44.05 ID:G7csYfUf.net]
cat >sample_cpp.cpp <<EOF
#include <iostream>
using namespace std;
struct s {
~s() {cout << "called." << endl;}
};
void func1() {
s a;
throw "hoge";
}
extern "C" void func2(void(*)());
int main() {
s a;
try {
func2(func1);
}
catch(const char* m) {
cout << m << endl;
}
return 0;
}
EOF
cat >sample_c.c <<EOF
struct s {
int dummy;
};
void func2(void (*f)()) {
struct s a;
f();
}
EOF



290 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 00:29:59.22 ID:G7csYfUf.net]
gcc -g -c sample_c.c
g++ -Wall -g -c sample_cpp.cpp
g++ sample_c.o sample_cpp.o -o sample
./sample

実行結果
called.
hoge
called.

>>284-285
Cにはデストラクタがないので、メモリが開放されればOKであり、自動的に開放される
C++ではスコープから外れればデストラクタが呼ばれた後にメモリが開放される

291 名前:はちみつ餃子 mailto:sage [2021/12/10(金) 01:18:14.66 ID:ogq0Brkp.net]
JavaScript でリソースを解放 (GC で回収) するために
変数に false を代入して参照を切っているのを見たことが有って、
GC があってもこの手のバッドノウハウは要るんだなと思いました。 (小並感)

292 名前:デフォルトの名無しさん [2021/12/10(金) 01:52:31.83 ID:eLt0CNh3.net]
GCが正常に機能しているという保証がそもそもないから
そもそも何が正常な動作なのかを誰も責任とらない架空の権威によって成り立っている

293 名前:はちみつ餃子 mailto:sage [2021/12/10(金) 01:58:44.76 ID:ogq0Brkp.net]
メモリ回収のタイミングが保証されないのは大した問題ではない
(プロセスが終了すればどうせ回収されるので)
のだが、外部のリソースを掴んでいるときに後始末されないかもしれないのは困るな。

294 名前:デフォルトの名無しさん [2021/12/10(金) 02:33:47.50 ID:eLt0CNh3.net]
Windows10でコマンドプロンプトのGUIを提供するconhost.exeはナウくてヤングなC++のstd::basic_string_viewを使っている
Windows2000以来のconhost.exeが古いコードのままメンテ放置されているわけではないことがわかり少しだけほっこりする
以下、それらしきシンボル
TextBuffer::InsertCharacter(class std::basic_string_view<unsigned short,struct std::char_traits<unsigned short> >,class DbcsAttribute,class TextAttribute)


ま、本当はなにをしたかったというとpwsh.exeとconhost.exeが道連れクラッシュして困ってるってだけなんだが

295 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 05:50:56.28 ID:iiZD81ri.net]
多人数のプロジェクトほどuniqueではなくshard_ptrが増えるのはトラブった時に誰も責任取らなくていいからって事?

296 名前:デフォルトの名無しさん [2021/12/10(金) 07:04:02.57 ID:eLt0CNh3.net]
shared_ptrを乱用する職業PGよりもweak_ptrを使いこなせる厨二PGたれ
主従関係がある場合、主が従のシェアポを持ち、従が主のウイポを持て

297 名前:デフォルトの名無しさん [2021/12/10(金) 07:11:56.68 ID:eLt0CNh3.net]
多くの職業PGは依存関係を親子関係で騙りたがるが、
生物学上、親は子より先に生まれ先に死ぬのだから、FIFOは成り立つがLIFOは成り立たない
ポリコレ的にはマスター/スレーブではなくプライマリ/セカンダリが望ましいとされる
ルー語の乱用をさけるならばプライマリ/セカンダリではなく主/従がなお良い
よって依存関係を主従関係で騙るのが正しい
織豊政権のように、主君の死後に従者が取って代わった例もあるから完全ではないが

298 名前:デフォルトの名無しさん [2021/12/10(金) 07:15:52.21 ID:eLt0CNh3.net]
秀吉は主君信長のweak_ptrを持っていたので本能寺の変での主君の横死を的確に知ることができた

299 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 07:35:10.03 ID:WKa1d5RR.net]
くだらねえ
喩え話なのはみんなわかってんのに
覚えたての日本語ひけらかしてドヤるな



300 名前:デフォルトの名無しさん [2021/12/10(金) 08:04:47.84 ID:eLt0CNh3.net]
ルー語の乱用を避けるのが礼儀だぞ

301 名前:デフォルトの名無しさん [2021/12/10(金) 08:16:32.12 ID:Qqc0ky4z.net]
>>290
そうなんだよね
リソース解放のタイミングが保証されないのは言語設計のミスだった
JavaではファイルやソケットなどのリソースはGCのときに呼ばれるfinalizeで解放すればいいよって思想だったけど
いつfinalizeが呼ばれるのか予測できないことに起因するバグが多発
ついにfinalizeが廃止されることになった

リソースは自前で廃棄してねというスタンス
GCも当初の期待ほどうまくいってない

302 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 09:48:13.03 ID:IPFkCC9z.net]
ファイルやソケットの開放はcloseないしデストラクタでやるのだから保証されてるぞ?
保証されないのはメモリリソースだけ

あとjavaも当初からfinalizeが呼ばれることは保証されてなかったからfinalizeで開放しなさいなんていう慣習はなかったと思うが

303 名前:デフォルトの名無しさん [2021/12/10(金) 10:14:08.92 ID:eLt0CNh3.net]
JavaはJDBC周りのGCの挙動が厄介だYO
GC性善説に立つと痛い目にあう

304 名前:デフォルトの名無しさん [2021/12/10(金) 11:20:58.79 ID:Qqc0ky4z.net]
>>299
JavaやC#にはデストラクタないからね
C++経験者がJavaやC#ではファイナライザーを使ったりしてたんだよ
C#ではマイクロソフト謹製標準ライブラリでさえファイナライザーでファイルを閉じるクソコードがある

305 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 11:32:06.75 ID:G7csYfUf.net]
いつまでスレ違いの話続けんの?間違いの指摘すら面倒

306 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 11:49:22.35 ID:/d3oGHTa.net]
C#はファイナライザで解放でいいんだよ
Disposeパターンがそういうスタイルだから

307 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 11:51:44.78 ID:IPFkCC9z.net]
>>301
それはその個人が不勉強なだけだろ…
finalizeが呼ばれないことがあるのはあまりに初歩的なチップスで、初級でない一般的なJavaプログラマがfinalizeだけでリソース開放するとかありえない。
思想って誰の思想?

メモリ解放に気を使わないC/C++プログラマがいないのと同じ

308 名前:デフォルトの名無しさん [2021/12/10(金) 12:27:48.66 ID:Qqc0ky4z.net]
>>304
その不勉強な個人が多すぎたんでしょ
デストラクタの代わりにファイナライザーを使う誤用が多かった
finalize廃止を決断しなければならないほどにね

309 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 12:36:42.08 ID:WKa1d5RR.net]
C++の轍を踏まないはずが
ざまあねえな



310 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 12:43:00.40 ID:iN+TjAqi.net]
>>ID:Qqc0ky4z
>>298
>JavaではファイルやソケットなどのリソースはGCのときに呼ばれるfinalizeで解放すればいいよって思想だったけど
>>301
>C#ではマイクロソフト謹製標準ライブラリでさえファイナライザーでファイルを閉じるクソコードがある
>>305
>その不勉強な個人が多すぎたんでしょ
上記発言を見ればあなたが不勉強なのはわかったよ

311 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 16:09:36.14 ID:nNdO4jXs.net]
vectorのaが空じゃないと思い込んでて実は空の状態で
for (int i =0; i < a.size()-1; i++)
これやると一瞬でオワるのなんとかならないかな
まあ普通はa.sizeをintやらでキャスりましょーって話だとは思うけど
そもそもsizeの型がuなのが悪いと思うんだが
uじゃなきゃ足りないくらいの要素数確保することなんてあんのか?ぁん?

312 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 16:21:05.76 ID:UbGkGPEB.net]
i+1<a.size()

313 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 16:24:59.62 ID:4aSHek6G.net]
または、if(!a.empty()) for(...)

314 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 16:26:11.66 ID:nNdO4jXs.net]
>>309
てんさいかよ

315 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 16:40:04.25 ID:UbGkGPEB.net]
C++20にはstd::ssize()もあるぞ

316 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 16:46:05.19 ID:PJTDipJe.net]
i <= a.size()-1じゃなくて i < a.size()-1?

317 名前:デフォルトの名無しさん [2021/12/10(金) 16:54:00.86 ID:eLt0CNh3.net]
以下のような直感的でベタな条件式のほうがいいと思うよ
for (int i =0; a.size() > 0 && i < a.size()-1; i++)

318 名前:デフォルトの名無しさん [2021/12/10(金) 16:56:40.50 ID:eLt0CNh3.net]
一見すると小学生の書いた作文っぽく見えるコードが結局のところ一番良い
厨二を拗らせたような難解なコードは避けよう

319 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 16:58:49.17 ID:UbGkGPEB.net]
このループ内でa[i]とa[i+1]を使ってなんかするんだろ
a[i+1]が有効なインデックスか?という条件がi+1<a.size()でこれは自然



320 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 17:19:52.62 ID:PJTDipJe.net]
ああ、それなら納得

321 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 17:20:02.15 ID:qnyfSMbx.net]
なんで-1してるの?

322 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 18:23:30.43 ID:31VztrOJ.net]
出典忘れたけどsizeが符号無しなのは標準委員会も失敗だったと考えてるらしい(?)

323 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 20:12:16.24 ID:AEk60g9j.net]
まあ、そうでなきゃssize_tなんて恥ずかしいもの後付けしたりしないし

324 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 20:26:39.77 ID:4aSHek6G.net]
>>314
二回余計な比較にクロックを喰われる

325 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 21:01:58.48 ID:G7csYfUf.net]
最近このスレやばない?
intじゃなくてstd::vector<...>::size_typeでいい
>>310は明らかに間違ってる
1引くケースは大抵サイズ2以上がよくある事前条件なので普通事前に弾く
ループ内や別スレッドでvectorが変更されないケースならループの外で1引いた方が速い
今回ssize_tは無関係

326 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 21:13:20.54 ID:4aSHek6G.net]
>>322
どこがヤバイの?
普通に動くし

327 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 21:27:52.13 ID:G7csYfUf.net]
>>323
列挙したところ。普通にレベルがやばい。
>>310はwhile(!a.empty())と書いてるのかと思ってたので俺の勘違い。
何が普通に動くの?

328 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 21:33:24.42 ID:4aSHek6G.net]
>>324
いや、間違えてるとか言われてたからな
頭の中で動かしてみて問題なく普通に動くだろうと
ってなんでお前そんなにエラそうなの?エラが張ってる民族か?

329 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 22:00:02.92 ID:G7csYfUf.net]
>>325
聞かれたから答えたけど会話にならんな・・・この辺で



330 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 22:00:16.81 ID:caXqow3a.net]
どうしたらいいかご意見を聞かせてください!٩( ᐛ )و

class hogeにおいてメンバ変数unique_ptr<toge>toge1を所有しております。
vector<hoge> vHogeを運用するとき、hogeのインスタンスをプッシュバックしようとすると、削除された関数ですというエラーメッセージが帰ってまいります。
おそらくtoge1がユニークポインタであり、ムーブ以外の移動が不可能だからだと思うのですが……このままプッシュバックさせるのに何か方法はありますでしょうか?

健作でtoge1にshared_ptrを使う、hogeのコピーコンストラクタにmemcpyを使う等の解を見つけました。
私ごとですが、shared_ptrは循環参照で失敗した哀しい過去があり、恐怖感があります。
またmemcpyでユニークポインタをメモリコピーする場合の機序がイマイチわかりません……
ムーブを経由させずにどうやってユニークポインタを再確保出来る証拠でしょうか……?

どちらの方法でも、実行する場合の注意点があればなんでも教えていただければ幸いです(^O^)/
また上記以外の方法も、もし存在するならば教えていただけると嬉しいです(´;ω;`)

先にお礼申し上げます。ありがとうございます。

331 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 22:05:57.88 ID:4aSHek6G.net]
>>326
もとはといえオメェが勘違いしたからだろこのヒトモドキが






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<275KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef