ベクトルとリストの違い

Anonim

Vector vs List

C ++やJavaの配列保持に使用されるシーケンスは、プログラマ、ベクター、リストに混乱することがよくあります。 2つの用語は配列アドレスを保持しますが、配列を保持する方法は異なります。

私たちが知る必要がある基本的なことは、配列がデータの一部または全部を保持する「リスト」であるということです。 e。 、整数、浮動小数点、または文字であり、括弧 "[]"で定義されています。 "

実際には、ベクトルとリストはインスタンスに従って動作します。ですから、これら2つの用語を1つずつ見てみましょう。

<! - 1 - >

ベクトル

ベクトルは配列保持と要素アクセスに使用されます。ここでは、 "[]"演算子を使って任意の要素にランダムにアクセスできます。したがって、ベクトル操作ですべての要素または1つの特定の要素を調べることが容易になります。したがって、オブジェクトを最後、最初、または途中に挿入すると、ランダムアドレスにアクセスしてそこに変更を加えることができるため、ベクトルにはプラスポイントがあります。しかし、ベクトルはリストオブジェクトに比べて少し遅いです。ベクトルは同期オブジェクトとみなされ、ランダムアクセスが効率的で、同期されたリストでデータを適切に保持します。

中(リスト)または前面から挿入または削除する必要がないときは常にベクトルが選択されます。

配列内の要素の数は劇的に異なる場合があります。例:

ベクターV​​; V。 REPLACE(V。begin()、3); (V。size()== 1 && V. capacity()> = 1 && V [0] == 3);

<!リストは、順方向および逆方向の両方のトラバーサルをサポートする「二重リンクされたシーケンス」です。開始、終了、途中の挿入と削除にかかる時間は一定です。リンクされたリスト間の挿入とスプライシングは要素内の反復を無効にしません。削除のみが反復を無効にします。それらは同期されていないので、ランダムにアクセスすることはできません。反復の順序はユーザーに応じて変わる可能性がありますが、要素の変更には影響しません。それらはベクトルより高速であり、要素リストの先頭、途中、および末尾に挿入および削除するのに理想的です。

<! - 9 - >

例:

#include

//クラステンプレート定義を一覧表示する

… int main()

int array [4] = {2、6、4、8};

std::リストの値。

std:: list otherValues;要約:

1。ベクトルがある間、リストは同期されません。 2。リストにはデフォルトサイズはありませんが、ベクトルのデフォルトサイズは10です。

3。リストとベクトルはどちらも動的に成長する配列です。 4。ベクトルがスレッドセーフであるのに対して、リストはスレッドセーフではありません。 5。リストは前後の追加と削除だけに適用されるので、より速く、

ベクトルはより多くのCPUを消費します。 6。ベクトルは2倍になり、リストは半分に減少します。e。 、50%。

<! - 1 - >