[過去ログ] 【初心者歓迎】C/C++室 Ver.102【環境依存OK】 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
830(1): デフォルトの名無しさん [] 2018/06/06(水) 20:32:29 ID:sZLPzbQ0(2/3) AAS
>>826826(1): デフォルトの名無しさん [sage] 2018/06/06(水) 18:07:41 ID:9YbuVUhL(1/3) AAS
>>824
いやあ、単方向リストはそれはそれで使い道はあると思うよ
大体、キャッシュに載り易くメモリ効率も良いstd::vectorで十分だけど
挿入操作を多用するならstd::listやstd::forward_listの方が良いよね
std::forward_listは、std::listよりも要素N個 x ポインタサイズ分のメモリ消費量を抑えられるし
イテレータを使ってO(1)で連続してpush_back()みたいなことも出来る、pop_back()みたいなことはO(1)で出来ないけどね
必要性を問うよりも、その特徴を理解して適切に効率的に使うことが大事なんじゃないかな
まあ、std::mapやstd::setは使うのを躊躇するけどな
O(log n)で値を取り出せて、イテレータでソートされた要素に順次アクセス可能を売りとするけど、メモリ効率が悪すぎる
他の言語のそれらが大体ハッシュテーブルで実装されているのを見るに連想コンテナはunordered系で十分な気もする
O(1)で10個挿入したら、O(1)*10なんだから、結局O(N)じゃないの?
833: デフォルトの名無しさん [sage] 2018/06/06(水) 21:09:23 ID:9YbuVUhL(3/3) AAS
>>830
ごめん書き方が悪かった、1つの要素の挿入にO(1)って意味ね
Linked Listは、挿入場所への移動にO(n)かかり、挿入にO(1)かかるから
最後の要素を指し示すイテレータを保持してたらpush_back()みたいなことも出来るよって話ね
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.031s