• ベストアンサー

(STL) vectorとlistの違い

vectorとlistの違いって何なんでしょうか。 vectorは動的な配列の確保で listも動的な配列だけど双方向探索やソートもできる、 つまりlistはvectorの機能を含む拡張版みたいなもの、こう考えてよろしいのでしょうか? いまいちvectorとlistが同じようなものに見えて仕方ないのです・・。

質問者が選んだベストアンサー

  • ベストアンサー
  • WizTaka
  • ベストアンサー率53% (7/13)
回答No.3

vector と list の違いというか,動的配列とリストの違いと言うべきでしょうか? //-------------------------------------------------------- < 動的配列の特徴 > ・ランダムアクセスが得意 ・シーケンシャルアクセス (順次アクセス) が得意 ・挿入,削除が苦手 ・動的なサイズ変更が苦手 < リストの特徴 > ・ランダムアクセスが苦手 ・シーケンシャルアクセスが得意 ・挿入,削除が得意 ・動的サイズ変更が得意 ※ここでは "得意 = 速い","苦手 = 遅い" と考えても OK です. //-------------------------------------------------------- 以上の特徴はそれぞれのデータ構造の違いからくるものです. これらの特徴が分かれば "同じ" とは思わない (思えなくなる) ハズです. 使う際にはそれらの特徴を十分に吟味し,今使用するべきはどちらかを考える必要がありますね. また,この特徴をより理解するためにはデータ構造について学習する必要があります. STL を使うのではなく一度自分で動的配列クラスやリストクラスを作成してみると,その違いが歴然と分かると思います. 理解のために,頑張って!

amazontester
質問者

お礼

なるほど。。。こんな違いがあったんですね。とても勉強になりました!

その他の回答 (2)

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.2

>つまりlistはvectorの機能を含む拡張版みたいなもの、こう考えてよろしいのでしょうか? 両者のクラスに実装されているメソッドを比較してみるのがよろしいかと。

  • MrBan
  • ベストアンサー率53% (331/615)
回答No.1

> vectorとlistの違いって何なんでしょうか。 「データ構造」の違いです。 何かを処理するとき、あらかじめ並び順や置き方を考えておくとやりやすい、そのやり方が違います。 > vectorは動的な配列の確保でlistも動的な配列だけど双方向探索やソートもできる、 vectorでもSTLで双方向探索やソートができます。 違うのは、それぞれの効率などです。 この処理はvectorの方が向いているので速い、でもこれはlistの方が速い。 「データ構造」と「アルゴリズム」には相性があり、向き不向きがあります。 > つまりlistはvectorの機能を含む拡張版みたいなもの、こう考えてよろしいのでしょうか? シンプルなvectorが基本だとは思いますが、必ずしもlistが拡張は思えません。 どちらかと言うと別物です。 > いまいちvectorとlistが同じようなものに見えて仕方ないのです・・。 「データ構造」や「アルゴリズム」の特性/特徴を理解せずに見れば、 使い勝手としては大差ないです。 (ある程度同じ方法で使えるようにできてるのがSTLですから) データ構造について勉強してみてください。

amazontester
質問者

お礼

同じように使えるんですね。当面は両方使ってみて色々考えてみたいと思います。 ありがとうございました!

関連するQ&A