차이 벡터와리스트 사이의 차이

Anonim

벡터 대리스트

프로그래머, 벡터 및 목록을 혼동시키는 것은 C ++ 및 Java의 배열 보유에 사용되는 시퀀스입니다. 이 두 용어는 배열 주소를 보유하지만 배열을 보유하는 다른 방법을 사용합니다.

알아 두어야 할 기본 사항은 배열이 데이터의 일부 또는 전체를 보유하는 "목록"이라는 것입니다. 이자형., 정수, 부동 소수점 또는 문자이며 대괄호 "[]로 정의됩니다. "

실제로 벡터와 목록은 인스턴스에 따라 작동합니다. 그럼이 두 용어를 하나씩 살펴 보겠습니다.

-> ->

벡터

벡터는 배열 유지 및 요소 액세스에 사용됩니다. 여기서 "[]"연산자를 사용하여 임의의 요소에 무작위로 액세스 할 수 있습니다. 따라서 벡터 연산을 통해 모든 요소 또는 특정 요소를 살펴 보는 것이 쉽습니다. 따라서 끝이나 처음 또는 중간에 개체를 삽입하면 무작위 주소에 액세스하여 거기에 변경 사항을 적용 할 수 있기 때문에 벡터에는 더하기 점이 있습니다. 그러나 벡터는 목록 개체와 비교할 때 약간 느립니다. 벡터는 동기화 된 객체로 간주되어 임의 액세스가 효율적이며 동기화 된 목록으로 데이터를 적절히 보관합니다.

가운데 (목록) 또는 앞에서 삽입하거나 삭제할 필요가 없을 때마다 벡터가 선택됩니다.

배열의 요소 수는 극적으로 다를 수 있습니다. 예:

벡터 V; V. 삽입 (V. 시작 (), 3);

assert (V. size () == 1 && V. capacity ()> = 1 && V [0] == 3);

리스트는 순방향 및 역방향 순회를 지원하는 "이중 링크 된 시퀀스"입니다. 시작, 끝 및 중간에 삽입 및 삭제에 걸리는 시간은 일정합니다. 연결된 목록 간의 삽입 및 연결은 요소의 반복을 무효화하지 않습니다. 삭제 만 반복을 무효화합니다. 동기화되지 않아 무작위로 액세스 할 수 없습니다. 반복의 순서는 사용자에 따라 변경 될 수 있지만 요소의 변경에는 영향을주지 않습니다. 벡터보다 빠르며 요소 목록의 시작, 중간 및 끝에서 삽입 및 삭제에 이상적입니다.

- 9 ->

예:

#include

// 클래스 템플릿 정의를 나열합니다.

…. int main ()

int 배열 [4] = {2, 6, 4, 8};

std:: 목록 값;

표준:: 목록 otherValues;

요약:

1. 벡터가있는 동안리스트는 동기화되지 않습니다. 2. 목록의 기본 크기는 없지만 벡터의 기본 크기는 10입니다.

3. 목록과 벡터는 모두 동적으로 늘어나는 배열입니다. 4. 벡터는 스레드로부터 안전하지만 목록은 스레드로부터 안전하지 않습니다. 5. 목록은 앞뒤의 추가 및 삭제에만 적용되므로 벡터가 더 많은 CPU를 사용하는 반면 더 빠릅니다. 6. 벡터는 크기가 두 배로 커지고 목록은 반으로 줄어 듭니다.이자형., 50 %.