C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part142
https://mevius.5ch.net/test/read.cgi/tech/1554124625/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
https://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/ (日本語)
----- テンプレ ここまで -----
VIPQ2_EXTDAT: default:vvv:1000:512:----: EXT was configured
探検
C++相談室 part143
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ)
2019/06/15(土) 13:51:53.57ID:DKQ0QQLH0358デフォルトの名無しさん (ワッチョイ)
2019/07/01(月) 21:19:13.74ID:CBwS2tFI0 そういうのしょうもないと思わないってのはほんとセンスないわ。
359デフォルトの名無しさん (ブーイモ)
2019/07/01(月) 21:23:38.44ID:EBI1AAR2M 皮肉だろ
否定3つも使うな
お前は国語のセンスない
否定3つも使うな
お前は国語のセンスない
360デフォルトの名無しさん (ワッチョイ)
2019/07/01(月) 21:30:29.37ID:/C7KUVH40 韻を踏んでるのかと思った
361蟻人間 ◆T6xkBnTXz7B0 (スフッ)
2019/07/01(月) 21:40:34.52ID:4oyko1E1d ♪そうゆうの〜、しょ〜もないって、思わないって、ほんとセンスないないさぁ〜
作曲頼む
作曲頼む
362デフォルトの名無しさん (ワッチョイ)
2019/07/01(月) 21:54:03.12ID:DUIe02Rn0 槇原敬之かよ
363デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 08:17:38.82ID:vQT+qXro0 >>357
入門者はCを学んだ後、C++の class、メンバ関数、仮想関数、コンストラクタ、
デストラクタ、演算子のオーバーロード、継承、templateの基本などを学べば
C++の重要な部分は使えるので、xvalue、glvalue、prvalueなどは
すぐには分からなくてもいいと思う。
入門者はCを学んだ後、C++の class、メンバ関数、仮想関数、コンストラクタ、
デストラクタ、演算子のオーバーロード、継承、templateの基本などを学べば
C++の重要な部分は使えるので、xvalue、glvalue、prvalueなどは
すぐには分からなくてもいいと思う。
364デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 08:29:28.55ID:vQT+qXro0 便利そうに見えても、CやC++の基礎をすっ飛ばしてboostやSTLを学ぶのは
C++の本質が学べないので良くない。それらにも配列やリストなどがあって、
C#などの高級言語風に使えるので初心者は勘違いしてしまいがちだが、
それらは「動的」なものが多く、本来のC++の速度が出ない事がある。
もともとのC++は、静的な配列が基本なので、速度を上げたいなら、
静的な方で済む場合にはなるべく静的なものを使うべき。その基本を知らずに
STLだけを何の配慮も無く使っていたら、昔からのC++のような高速なアプリ
を作るのは困難。
C++の本質が学べないので良くない。それらにも配列やリストなどがあって、
C#などの高級言語風に使えるので初心者は勘違いしてしまいがちだが、
それらは「動的」なものが多く、本来のC++の速度が出ない事がある。
もともとのC++は、静的な配列が基本なので、速度を上げたいなら、
静的な方で済む場合にはなるべく静的なものを使うべき。その基本を知らずに
STLだけを何の配慮も無く使っていたら、昔からのC++のような高速なアプリ
を作るのは困難。
365デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 09:16:37.23ID:4nney+pq0366デフォルトの名無しさん (オイコラミネオ)
2019/07/02(火) 09:47:27.28ID:OxvoR50aM std::arrayとかあるじゃん
367デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 10:32:43.01ID:uMGeffjZ0 たとえ動的な、vector を使っていても、それよりも速いコードを書けないw
368デフォルトの名無しさん (アウアウウー)
2019/07/02(火) 11:01:07.84ID:YKseWMPYa それCで良くねってなってSTLとか使うのがおかしいとか言ってくるようになるんだろ?
テンプレートなんか使うんじゃねえとか。
テンプレートなんか使うんじゃねえとか。
369デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 13:50:47.02ID:vQT+qXro0 >>368
そうはならない。C++とCの違いは、STLが使えるかどうかではなく、
class、コンストラクタ、デストラクタ、メンバ関数、仮想関数、
演算子の多重定義、template などが使えるかどうかだから。
STLは、言語ではなく、template library。
そうはならない。C++とCの違いは、STLが使えるかどうかではなく、
class、コンストラクタ、デストラクタ、メンバ関数、仮想関数、
演算子の多重定義、template などが使えるかどうかだから。
STLは、言語ではなく、template library。
370デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 13:52:51.90ID:vQT+qXro0 Cにおいては、「標準ライブラリ」と呼ばれたライブラリは効率が良かったので
特殊な環境や黎明期以外では、それ以外を使う必要性は特になく、ほとんどの
場合それを使えば良いと考えられた。
ところが、STLはそういう設計にはなっていないことが多いので注意が必要だと
言っている。
特殊な環境や黎明期以外では、それ以外を使う必要性は特になく、ほとんどの
場合それを使えば良いと考えられた。
ところが、STLはそういう設計にはなっていないことが多いので注意が必要だと
言っている。
371デフォルトの名無しさん (ワンミングク)
2019/07/02(火) 14:21:08.67ID:0IWRI8p9M で、STLのどの辺が具体的に効率悪いの?
372デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 15:28:23.54ID:vQT+qXro0 >>371
Cの基本的な配列などを理解してない人は、コンピュータの動作の細かな仕組み
が分かってないので、挿入時間や末尾追加時間、参照のための時間などが
O(1)やO(N) などと言われてもちゃんと理解できないので、良く分からずに
単純なC風の配列で済むところを、vector などを使って遅くなったりしやすい。
array, vector, deque, list などを目的別に区別して使うためには、Cの配列や
ポインタが理解できないと難しいはずだ。どれもデータを集合させるためのもので、
速度やメモリの効率以外には余り違いは無いが、どういう違いがあるかはCや
アセンブラでの基礎が出来てなければ理解できしにくいと思われる。
たとえば構造体のメンバに配列データを入れる場合、サイズが固定である場合も
多いが、その場合には、文句なしに、TYPE aaa[16]; のような C流の配列で
十分。そこに vector を使ってしまう人がいて、それはかなり効率面で問題となる。
そのような場合には、std::array を使うのも避けるべきである。
Cの基本的な配列などを理解してない人は、コンピュータの動作の細かな仕組み
が分かってないので、挿入時間や末尾追加時間、参照のための時間などが
O(1)やO(N) などと言われてもちゃんと理解できないので、良く分からずに
単純なC風の配列で済むところを、vector などを使って遅くなったりしやすい。
array, vector, deque, list などを目的別に区別して使うためには、Cの配列や
ポインタが理解できないと難しいはずだ。どれもデータを集合させるためのもので、
速度やメモリの効率以外には余り違いは無いが、どういう違いがあるかはCや
アセンブラでの基礎が出来てなければ理解できしにくいと思われる。
たとえば構造体のメンバに配列データを入れる場合、サイズが固定である場合も
多いが、その場合には、文句なしに、TYPE aaa[16]; のような C流の配列で
十分。そこに vector を使ってしまう人がいて、それはかなり効率面で問題となる。
そのような場合には、std::array を使うのも避けるべきである。
373デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 15:38:38.79ID:vQT+qXro0374デフォルトの名無しさん (ワンミングク)
2019/07/02(火) 16:10:20.92ID:0IWRI8p9M 計算量と配列使うかvector使うかは別の問題なんだけど…
あとarrayの要件分かってる?
あとarrayの要件分かってる?
375デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 16:14:23.02ID:vQT+qXro0376デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 16:44:50.17ID:6JNNUWgV0 組み込みなんかだとvector始めSTL全部使えないとかあった
環境によっては標準ライブラリも全部使えないとかあったし
スタックサイズまで気にしなきゃいけないような組み込み系の話
環境によっては標準ライブラリも全部使えないとかあったし
スタックサイズまで気にしなきゃいけないような組み込み系の話
377デフォルトの名無しさん (オイコラミネオ)
2019/07/02(火) 16:50:12.65ID:OxvoR50aM >>375
arrayとcの配列って速度一緒だろ
arrayとcの配列って速度一緒だろ
378デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 17:21:45.00ID:85iZu+nz0 初めはSTLやフレームワークに依存した書き方で学んでも構わんと思うがね
そういうものが使えない環境で開発する人は、その時にそのための書き方を学べばいい
そういうものが使えない環境で開発する人は、その時にそのための書き方を学べばいい
379デフォルトの名無しさん (スフッ)
2019/07/02(火) 17:29:58.39ID:++9dcTkMd ヒープに確保するならstd::vectorが実用上ほぼ最速
380デフォルトの名無しさん (ワンミングク)
2019/07/02(火) 17:45:38.13ID:0IWRI8p9M ダメだこりゃ
もうちょっとマシな答え返ってくるかと思ったが
もうちょっとマシな答え返ってくるかと思ったが
381デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 18:04:09.25ID:vQT+qXro0382デフォルトの名無しさん (ブーイモ)
2019/07/02(火) 18:05:26.83ID:B2rauTX7M スマポはしゃーない
ライブラリがヒープに構築するオブジェクトを例外安全に使おうと思ったら使わんと
ライブラリがヒープに構築するオブジェクトを例外安全に使おうと思ったら使わんと
383デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 18:09:34.75ID:z0GlqJ7U0 vecorというかSTLコンテナ全般だけど、push_back(void)みたいなデフォルトコンストラクタでの要素構築があればもっと良かった。
なんでないのかな。
なんでないのかな。
384デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 18:10:54.83ID:gnGzqTIu0 std::arrayでなく生配列を使うべき理由なんてC++03以前との相互運用性以外には一切ねえよクソ雑魚
385デフォルトの名無しさん (ブーイモ)
2019/07/02(火) 18:11:09.91ID:B2rauTX7M vectorも然りで、例外時にちゃんと捨ててくれないと困るときにはnewなんかやってられんし。
386デフォルトの名無しさん (ブーイモ)
2019/07/02(火) 18:13:44.29ID:B2rauTX7M >>383
emplace_backを空で呼べばぁ?
emplace_backを空で呼べばぁ?
387デフォルトの名無しさん (ブーイモ)
2019/07/02(火) 18:14:56.47ID:B2rauTX7M ところで生ポ怖いとかそんなヌルい理由でSTL使うやつおるの?w
ポインタ覚えたてのボクちゃんがイキってはるように見えますね。
ポインタ覚えたてのボクちゃんがイキってはるように見えますね。
388デフォルトの名無しさん (スフッ)
2019/07/02(火) 18:17:41.70ID:++9dcTkMd てか使わん理由がない
unique_ptrならオーバーヘッド0だろ
unique_ptrならオーバーヘッド0だろ
389デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 18:18:10.18ID:z0GlqJ7U0 >>386
それでもmoveが発生するでしょ。美しくないw
それでもmoveが発生するでしょ。美しくないw
390デフォルトの名無しさん (スフッ)
2019/07/02(火) 18:19:02.38ID:++9dcTkMd >>389
moveは発生しないだろ?
moveは発生しないだろ?
391デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 18:19:50.61ID:gnGzqTIu0 ナマポは怖いよ
あれの不適切な取扱いのせいで数限りないバグとセキュリティホールが生まれて莫大な損害を生み出してる歴史に学ぶべきだ
そうなれば適切な取扱いを強制する仕組みをなるべく取り入れるのは至極当然のことだ
あれの不適切な取扱いのせいで数限りないバグとセキュリティホールが生まれて莫大な損害を生み出してる歴史に学ぶべきだ
そうなれば適切な取扱いを強制する仕組みをなるべく取り入れるのは至極当然のことだ
392デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 18:23:26.11ID:z0GlqJ7U0 >>390
MSVCとclangで試した範囲では、基本的にはスタック上に構築されたインスタンスをメモリコピーするアセンブリが生成される。
もちろん最適化で消えることもあるけど、全てというわけではない。
内部で確保されたメモリに対してplacement newで直接コンストラクタを呼び出すのと比べると若干のオーバーヘッドになる。
MSVCとclangで試した範囲では、基本的にはスタック上に構築されたインスタンスをメモリコピーするアセンブリが生成される。
もちろん最適化で消えることもあるけど、全てというわけではない。
内部で確保されたメモリに対してplacement newで直接コンストラクタを呼び出すのと比べると若干のオーバーヘッドになる。
393デフォルトの名無しさん (スフッ)
2019/07/02(火) 18:26:53.67ID:++9dcTkMd それコンパイラかオプション腐ってね?
moveが無駄ってのがemplaceの存在意義だろ?
moveが無駄ってのがemplaceの存在意義だろ?
394デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 18:30:07.12ID:z0GlqJ7U0395デフォルトの名無しさん (ブーイモ)
2019/07/02(火) 18:34:24.96ID:B2rauTX7M コンストラクタしか呼ばんよ
396デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 18:36:54.51ID:gnGzqTIu0 push_backにも右辺値参照取るオーバーロードがあるんだけど?
397デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 18:37:04.80ID:z0GlqJ7U0 emplace系(moveコンストラクタ)の利点は一時オブジェクトのデストラクタを呼ばなくて良いことであって、
メモリコピー自体は発生するよ。
メモリコピー自体は発生するよ。
398デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 18:41:38.86ID:z0GlqJ7U0 すまん、おれが間違ってた、emplace_back(void)なんてものがあったんだなwwww
399デフォルトの名無しさん (ブーイモ)
2019/07/02(火) 18:42:45.57ID:B2rauTX7M ないない
アセンブリ出力なんか見なくても
各コンストラクタに自分の素性を出力させるようにしてテストすりゃあわかる。
emplace_backはコンストラクタしか呼ばない
ムーブやコピーなどの余計なコンストラクタは呼ばれない。
v.emplace_back(A())
なんてアホなことやってたら呼ばれるけどなw
アセンブリ出力なんか見なくても
各コンストラクタに自分の素性を出力させるようにしてテストすりゃあわかる。
emplace_backはコンストラクタしか呼ばない
ムーブやコピーなどの余計なコンストラクタは呼ばれない。
v.emplace_back(A())
なんてアホなことやってたら呼ばれるけどなw
400デフォルトの名無しさん (スフッ)
2019/07/02(火) 18:45:36.48ID:++9dcTkMd てかplacement newさせるための機能だから
401デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 19:01:52.58ID:gnGzqTIu0 よくよく規格読むとemplace_backの要件のところでなぜかvectorに限って要素型にMoveInsertable要求してるな
(Table 88 - Optional sequence container operations)
vectorに限ってはID:z0GlqJ7U0の言う通りmoveするのかもしれんが何故だろう
アロケータ絡み?
(Table 88 - Optional sequence container operations)
vectorに限ってはID:z0GlqJ7U0の言う通りmoveするのかもしれんが何故だろう
アロケータ絡み?
402デフォルトの名無しさん (スフッ)
2019/07/02(火) 19:20:16.00ID:++9dcTkMd それ、領域の再確保で既存要素をmoveする必要があるからじゃね
403デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 19:24:28.67ID:gnGzqTIu0 そうかと思ったんだけどdequeにはこの要求ないんよね
404デフォルトの名無しさん (スフッ)
2019/07/02(火) 19:40:57.73ID:++9dcTkMd dequeの場合、最初と最後に限っては既存要素の移動が必要ないからだろう
405デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 21:48:42.92ID:w/Y51Ss20 >>401
size()がcapacity()を超えた時ごっそり移すから
size()がcapacity()を超えた時ごっそり移すから
406デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 22:19:13.91ID:hWBdgMuf0 >>391
実際はナマポによる問題よりもスマポの取り扱いのわからんバカによる間違った使い方のが多いけどな。
重要なのは言語による強制じゃなくて、教育だわ。
そこのコストを無駄にケチるバカ企業はどんな言語使っても無駄。
実際はナマポによる問題よりもスマポの取り扱いのわからんバカによる間違った使い方のが多いけどな。
重要なのは言語による強制じゃなくて、教育だわ。
そこのコストを無駄にケチるバカ企業はどんな言語使っても無駄。
407デフォルトの名無しさん (アウアウウー)
2019/07/02(火) 23:11:40.30ID:YKseWMPYa なんかその間違えた使い方一覧とか見てみたくなるな
408デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 00:29:13.60ID:Odxsa8jS0 >>406
結局、生ポインタや生配列も必ず必要になるから、仕組みを理解せずに使えば
コンテナやスマートポインターの方こそが危険の原因になるのは容易に想像できる。
結局、実装の詳細を知らなければ危険なので、初心者向けでない。
結局、生ポインタや生配列も必ず必要になるから、仕組みを理解せずに使えば
コンテナやスマートポインターの方こそが危険の原因になるのは容易に想像できる。
結局、実装の詳細を知らなければ危険なので、初心者向けでない。
409デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 01:01:33.73ID:Lb2Tc2mw0 >>408
生ポインタや生配列をコンテナやスマートポインターに置き換えて危険の原因になる例おしえて。
生ポインタや生配列をコンテナやスマートポインターに置き換えて危険の原因になる例おしえて。
410デフォルトの名無しさん (アウアウウー)
2019/07/03(水) 01:10:58.57ID:TLK5eLSla >>408
俺も教えて欲しい。何が危険なの?
俺も教えて欲しい。何が危険なの?
411デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 01:29:58.72ID:mX2Zy9Do0 こうやって具体例も出さずに古い知識と気分と思い込みでコンテナやスマポを意味なく禁止してナマポや生配列を強要する老害が一番危険
412デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 05:15:48.05ID:924EnmCA0 生ポ受け取って処理して返す関数の中で
受け取った生ポをユニポに入れてしまって
関数から抜けるときに消えちゃうバカとか?
受け取った生ポをユニポに入れてしまって
関数から抜けるときに消えちゃうバカとか?
413デフォルトの名無しさん (アウアウウー)
2019/07/03(水) 06:37:42.42ID:TLK5eLSla それは生ポの危険性やん
414デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 07:37:02.82ID:Odxsa8jS0 >>409
全部置き換えることは出来ないから。
全部置き換えることは出来ないから。
415デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 07:54:35.14ID:mX2Zy9Do0 なんだキチガイか
416デフォルトの名無しさん (オイコラミネオ)
2019/07/03(水) 07:58:15.56ID:giz72OluM コンテナなりで確保して必要なときにポインタで渡すだけだろ
417デフォルトの名無しさん (ワンミングク)
2019/07/03(水) 08:21:07.41ID:y5Z0HSqrM 結局このての老害が居座ってるのがこの言語の一番の欠点だわ
下手にC言語と互換性があるから頭の悪いナマポおじさんが初心者に間違った知識を広げていくという
下手にC言語と互換性があるから頭の悪いナマポおじさんが初心者に間違った知識を広げていくという
418デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 08:45:56.67ID:Odxsa8jS0 >>379
vector で、TYPE型のオブジェクトを N 個収める場合、通常は、
2 * N * sizeof(TYPE) + (制御情報)
程度のバイト数が必要になる。一方、Cの生配列の場合、
N * sizeof(TYPE)
で済む。重要なのは、必要メモリに2倍もの開きがあるということ。
つまり、配列なら10MB で済むところが、vector だと20MB必要になる。
vector で、TYPE型のオブジェクトを N 個収める場合、通常は、
2 * N * sizeof(TYPE) + (制御情報)
程度のバイト数が必要になる。一方、Cの生配列の場合、
N * sizeof(TYPE)
で済む。重要なのは、必要メモリに2倍もの開きがあるということ。
つまり、配列なら10MB で済むところが、vector だと20MB必要になる。
419デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 08:58:50.87ID:Odxsa8jS0 メモリ使用量という観点では、vectorよりもlistの方が優れる。
vectorは、メモリを2倍使用することで末尾追加の時間をO(1)に抑えているだけ。
固定長で済む場合はCの生配列を使うべき。
サイズを徐々に大きくしていくようなばあいは、vectorよりもlistの方が良い場合が
多い。ただし、listはランダムアクセスには向いてないが。
vectorは、メモリを2倍使用することで末尾追加の時間をO(1)に抑えているだけ。
固定長で済む場合はCの生配列を使うべき。
サイズを徐々に大きくしていくようなばあいは、vectorよりもlistの方が良い場合が
多い。ただし、listはランダムアクセスには向いてないが。
420デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 09:09:22.14ID:Odxsa8jS0 なお、TYPE のサイズが大きい場合に vectorを使うと、Core i7 でも Celeron 並み
にCPUキャッシュメモリが減ったかのようになり、せっかくのハイエンドなパソコンが
エントリーモデルのパソコン並みの速度になってしまうかも知れない。
にCPUキャッシュメモリが減ったかのようになり、せっかくのハイエンドなパソコンが
エントリーモデルのパソコン並みの速度になってしまうかも知れない。
421デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 09:13:08.57ID:+l3ADsTnM 生配列かvectorかlistかって論点古すぎ
今c++の複雑さはそういうとこじゃないから
他の言語含めてもうちょっと勉強しろ
今c++の複雑さはそういうとこじゃないから
他の言語含めてもうちょっと勉強しろ
422デフォルトの名無しさん (ワンミングク)
2019/07/03(水) 09:15:31.03ID:y5Z0HSqrM 明らかにC++03時代の入門見て覚えた知識を頑張って披露してます状態だな
勉強足りなすぎ
勉強足りなすぎ
423デフォルトの名無しさん (アウアウウー)
2019/07/03(水) 09:16:24.83ID:TLK5eLSla typeのサイズが大きい場合に生配列使うとそれはそれで問題にならん?
424デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 09:35:22.83ID:Odxsa8jS0425デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 09:52:43.97ID:+l3ADsTnM >>424
はいはい雑魚雑魚
boostのstatic_vectorって調べてみな
生配列とvectorのいいとこどりのコンテナだ
eastlにも似たようなのあったはず
おれも大概おっさんでc++にネガティブな思いはある
だけどお前みたいな老害にはなりたくないな
はいはい雑魚雑魚
boostのstatic_vectorって調べてみな
生配列とvectorのいいとこどりのコンテナだ
eastlにも似たようなのあったはず
おれも大概おっさんでc++にネガティブな思いはある
だけどお前みたいな老害にはなりたくないな
426デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 10:01:00.52ID:Odxsa8jS0427デフォルトの名無しさん (オイコラミネオ)
2019/07/03(水) 10:02:15.82ID:giz72OluM 約2倍使うのって追加するときに内部のサイズが足らん場合だけだろ
後別に遅くないがな
後別に遅くないがな
428デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 10:15:25.67ID:4T2xKCYX0 基礎をすっとばすのが良くないというのは同意だわ
C++はスクリプト言語の代わりにはなれない
C++はスクリプト言語の代わりにはなれない
429デフォルトの名無しさん (スフッ)
2019/07/03(水) 10:41:14.59ID:N/cOPmK/d430デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 11:06:00.23ID:PfdnSFjeM そんな細けーこと気にするならデフォのnewやmalloc使ってたら笑うぞ
431デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 11:28:18.95ID:Odxsa8jS0 >>429
vectorは構造上はリンクリストではなく、Cの生配列と全く同じ形式で
要素を単純な配列として持っているが、最初に最大要素数を指定しなくても
後から動的に要素数を増やす機能も持っている。この機能の実現の際、もし、
今入っている要素数とぴったり同じだけの個数が入る配列でデータを持っているだけだと、
1個ずつ末尾追加したときに、毎回、今までと同じ大きさの新しい配列を new し、
古い配列のN個の要素を全て新しい配列にコピーする動作をしなくてはならず
とても時間がかかってしまう。それを防ぐために、原則的には 今入っている
要素の2倍の配列を内部的に持つことにされている。そうすることによって、
要素数が2倍に到達するまでは、末尾追加しても今言った「new してから全てコピーする動作」
をしなくて済むようになる。そのために、必要メモリが生配列の二倍必要になっているらしい。
vectorは構造上はリンクリストではなく、Cの生配列と全く同じ形式で
要素を単純な配列として持っているが、最初に最大要素数を指定しなくても
後から動的に要素数を増やす機能も持っている。この機能の実現の際、もし、
今入っている要素数とぴったり同じだけの個数が入る配列でデータを持っているだけだと、
1個ずつ末尾追加したときに、毎回、今までと同じ大きさの新しい配列を new し、
古い配列のN個の要素を全て新しい配列にコピーする動作をしなくてはならず
とても時間がかかってしまう。それを防ぐために、原則的には 今入っている
要素の2倍の配列を内部的に持つことにされている。そうすることによって、
要素数が2倍に到達するまでは、末尾追加しても今言った「new してから全てコピーする動作」
をしなくて済むようになる。そのために、必要メモリが生配列の二倍必要になっているらしい。
432デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 11:36:58.84ID:uVFkIemlM 最悪の場合を言ってるのだろう
平均で見なきゃ意味ない
そんなこと言ったらクイックソートだって
平均で見なきゃ意味ない
そんなこと言ったらクイックソートだって
433デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 11:40:32.67ID:uVFkIemlM そもそも好きに使って経験を積みゃいいんだし手法を統一する必要もない
434デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 11:48:52.78ID:Odxsa8jS0 >>432
最悪で2倍、平均だと 1.5倍。
最悪で2倍、平均だと 1.5倍。
435デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 11:51:28.69ID:uVFkIemlM なら許容範囲だね!!よかったよかった
436デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 11:51:35.55ID:oDCSMM9SM shrink_to_fitでも使えや
437デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 11:53:21.22ID:Odxsa8jS0438デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 11:58:54.95ID:uVFkIemlM 用途要求仕様要件目的予算を特定せずに何を判断せよと
439デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 12:02:59.10ID:mX2Zy9Do0 #include <iostream>
#include <vector>
using namespace std;
int main() {
std::vector<int> v(10);
cout << v.capacity();
return 0;
}
>>431
どこのコンパイラが20や15表示するの?教えてよ
俺の手元のGCCとclangとVCとiccは当然だけど10だったよ
そんなサイズ伸縮やreserveもする前から手前勝手に1.5倍やら2倍やら確保するコンパイラがあるなんて怖いからさ
お前の妄想や思い込みじゃないなら当然答えられるよね?そんな長文書くほど自信満々なら知らないわけないよね?
教えてよ
#include <vector>
using namespace std;
int main() {
std::vector<int> v(10);
cout << v.capacity();
return 0;
}
>>431
どこのコンパイラが20や15表示するの?教えてよ
俺の手元のGCCとclangとVCとiccは当然だけど10だったよ
そんなサイズ伸縮やreserveもする前から手前勝手に1.5倍やら2倍やら確保するコンパイラがあるなんて怖いからさ
お前の妄想や思い込みじゃないなら当然答えられるよね?そんな長文書くほど自信満々なら知らないわけないよね?
教えてよ
440デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 12:08:29.19ID:Odxsa8jS0441デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 12:10:06.32ID:oDCSMM9SM 末尾追加したいのかCのように固定長で使いたいのかはっきりせぇや
どう転んでも文句言いやがってw
どう転んでも文句言いやがってw
442デフォルトの名無しさん (スフッ)
2019/07/03(水) 12:10:28.85ID:N/cOPmK/d 生配列と比較するならサイズ既知なのだから、サイズ指定して初期化、もしくはreserveするのは当然だろ
push_back使うなら、生配列の側も現在の実サイズを別変数で管理しないと公平でない
push_back使うなら、生配列の側も現在の実サイズを別変数で管理しないと公平でない
443デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 12:12:09.83ID:Odxsa8jS0 >>442
区別することが大切だといってるんだよ。
区別することが大切だといってるんだよ。
444デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 12:12:52.89ID:oDCSMM9SM キャッシュなんてキャッシュラインサイズごとに読み込むのだから
使いもしないvectorで確保した領域全部読むわけちゃうぞwwww
vectorか生ポかなんて低次元な話ではなくメモリアライメントまで気にしとけと。
だからごちゃごちゃ言うやつはデフォのmallocなんか使ってないよなと確認したのにwww
使いもしないvectorで確保した領域全部読むわけちゃうぞwwww
vectorか生ポかなんて低次元な話ではなくメモリアライメントまで気にしとけと。
だからごちゃごちゃ言うやつはデフォのmallocなんか使ってないよなと確認したのにwww
445デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 12:13:13.85ID:uVFkIemlM 「トレードオフを理解はするが、許せない」
こういうことか?
こういうことか?
446デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 12:13:21.22ID:mX2Zy9Do0 >>440
あっはい追加時の話はどうでもいいです
追加量が読めてるならreserveなり最初に大きめに構築するなりするだけだし、読めてないならそれ必要なコストですよね?
私が聞きたいのはreserveや要素追加も伴わずに勝手に常に2倍で確保するというコンパイラorライブラリの具体的な情報です
質問に答えてください
あっはい追加時の話はどうでもいいです
追加量が読めてるならreserveなり最初に大きめに構築するなりするだけだし、読めてないならそれ必要なコストですよね?
私が聞きたいのはreserveや要素追加も伴わずに勝手に常に2倍で確保するというコンパイラorライブラリの具体的な情報です
質問に答えてください
447デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 12:14:08.32ID:oDCSMM9SM448デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 12:14:30.07ID:Odxsa8jS0 >>441
そういうことじゃなくて、新しく追加された機能を何も考えずにそのまま使って
C#との速度比較に用いてC++がC#に負けたと主張するQiitaの記事が「C# 速度」と
いうGoogle検索で上位に来るから困るんだよ。
そういうことじゃなくて、新しく追加された機能を何も考えずにそのまま使って
C#との速度比較に用いてC++がC#に負けたと主張するQiitaの記事が「C# 速度」と
いうGoogle検索で上位に来るから困るんだよ。
449デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 12:15:34.63ID:Odxsa8jS0 ここはアホが多すぎ。
450デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 12:16:03.22ID:oDCSMM9SM451デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 12:16:29.07ID:oDCSMM9SM >>449
敗北宣言なら素直になれよwww
敗北宣言なら素直になれよwww
452デフォルトの名無しさん (スフッ)
2019/07/03(水) 12:17:18.98ID:N/cOPmK/d この展開だと、知識もスキルも足りていない奴が、誤解でvector使えないといっているだけにしか見えないな
453デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 12:18:06.65ID:mX2Zy9Do0454デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 12:18:33.35ID:Odxsa8jS0 日本のITが駄目な理由がここに全て現れている。
その上、自分達がレベルが高いと思っているのがまた痛い。
日本はもう二度と浮上しないな。
その上、自分達がレベルが高いと思っているのがまた痛い。
日本はもう二度と浮上しないな。
455デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 12:20:42.38ID:mX2Zy9Do0456デフォルトの名無しさん (スフッ)
2019/07/03(水) 12:21:17.25ID:N/cOPmK/d 自ら体現してくれているんかな
457デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 12:22:21.83ID:oDCSMM9SM >>454
逃げる前にお願い
効率悪いとかそういう話ではなく
一番最初に主張していた
スマポとコンテナの方が生ポより危険
をちゃんと言ってからにしてよ。
危険性の話から効率の話になってc#とか言い出して
ひたすらトーンダウンなんだけどwww
逃げる前にお願い
効率悪いとかそういう話ではなく
一番最初に主張していた
スマポとコンテナの方が生ポより危険
をちゃんと言ってからにしてよ。
危険性の話から効率の話になってc#とか言い出して
ひたすらトーンダウンなんだけどwww
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 【STARTO ENTERTAINMENT】timelesz篠塚大輝『大きな古時計』替え歌一発ギャグ「今はもう動かない おじいさんにトドメ~♪」が波紋 [Ailuropoda melanoleuca★]
- 【朗報】外務省局長、中国側の要求を断固拒否。「高市さんの答弁は日本政府の立場を変えるものではないし、撤回しない」 [519511584]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
- 【実況】博衣こよりのえちえち歌枠🧪
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- たまにaカップの女いるけど何を楽しめばいいの?
