반응형

vector 6

벡터의 내적, 외적

벡터의 내적과 벡터의 외적은이라는 용어는 일반적으로 선형 대수학 및 벡터 수학의 맥락에서 사용됩니다. 1. 벡터의 내적 벡터의 내적 곱 또는 도트 곱이라고도 하는 내적 벡터는 두 개의 벡터를 취하여 스칼라 값을 반환하는 수학적 연산입니다. 이는 두 벡터의 해당 구성 요소의 곱의 합으로 정의됩니다. 즉, 두 벡터가 a와 b로 표현되는 경우, a와 b의 내적은 다음과 같이 표현됩니다: a ⋅ b = A1B1 + A2B2 + ... + anbn 여기서 A1, A2, ..., an 및 B1, B2, ..., bn은 각각 벡터 a와 b의 구성 요소입니다. 내적의 결과는 두 벡터 사이의 각도의 코사인을 나타내는 스칼라 값입니다. 벡터의 길이 또는 크기를 계산하거나 두 벡터 사이의 각도를 결정하는 데 자주 사용됩니다..

공부/기타 2023.03.29

벡터에서 push_back을 이용할 때 메모리가 왜 2배씩 늘어나는가?

push_back 메서드를 사용할 때 벡터의 메모리 사용량이 두 배가 되는 이유는 벡터가 사용하는 동적 메모리 할당 전략 때문입니다. 벡터는 동적 메모리 할당을 사용합니다. 즉, 런타임 중에 필요에 따라 메모리를 할당합니다. push_back 메서드는 벡터의 끝에 새 요소를 추가하고, 벡터의 현재 메모리 용량이 새 요소를 저장할 만큼 크지 않을 경우 벡터는 더 많은 메모리를 할당해야 합니다. 벡터 요소가 인접한 메모리 블록에 저장되도록 하기 위해 벡터는 일반적으로 각각의 새 요소에 충분한 메모리를 할당하는 대신 더 큰 청크로 메모리를 할당합니다. 이는 성능 면에서 비용이 많이 들 수 있는 메모리 할당 및 할당 해제 횟수를 줄이기 위해 수행됩니다. 벡터의 메모리가 부족하면 일반적으로 메모리 용량을 두 배로..

공부/C++ 2023.02.07

삽입, 삭제가 계속 일어난다고 했을 때 Vector가 느릴까? List가 느릴까?

특정 상황과 데이터 크기에 따라 다르겠지만, 일반적으로 데이터가 작을 경우, 요소를 삽입하거나 삭제할 때는 리스트가 더 빠르며 데이터가 클 경우, 중간에 요소를 삽입하거나 삭제할 때는 벡터가 더 빠릅니다. 이는 벡터가 연속 메모리에 요소를 저장하기 때문에 벡터 중간에 요소를 삽입하거나 삭제하려면 삽입 또는 삭제 지점 이후의 모든 요소를 이동해야 하지만 리스트은 단순히 요소를 삽입하거나 삭제하기 위해 포인터를 조정할 수 있습니다. 그러나 벡터는 리스트에 비해 메모리를 덜 사용하기 때문에 메모리 효율성도 더 높습니다.

공부/기타 2023.01.13

데이터 내부에 값이 1만개 이하일 경우 Vector가 빠를까? List가 빠를까?

만약 특정한 데이터를 찾을 경우 벡터가 리스트보다 빠르다. 왜냐하면 벡터가 연속된 메모리를 사용하고, 또 operator[]를 사용하여 일정한 시간에 액세스할 수 있기 때문이다. 반면에 리스트는 노드들이 일련의 연결로 구성되어 있으며 특정 요소에 액세스하려면 리스트 전체의 처음부터 끝까지 확인해야 하기 때문입니다. 그렇지만, 컨테이너 중간에 요소를 삽입하거나 삭제해야 하는 경우 리스트가 일반적으로 벡터보다 빠릅니다. 이렇게 하면 반복자와 참조가 무효화되지 않습니다. 반면에 벡터를 사용하면 메모리를 재할당하고 메모리를 재할당해야 할 수 있습니다. 이럴 경우 모든 요소를 새 메모리 위치에 복사합니다. 이로 인해 리스트가 벡터보다 작업을 빠르게 진행할 수 있습니다. 그렇지만, 리스트의 각 요소는 별도의 노드로..

공부/기타 2023.01.11

벡터(Vector)와 리스트(List)의 개념 및 차이점

1. 벡터(Vector) 벡터의 개념을 알기 위해서는 먼저, 배열을 알아야 합니다. 배열은 모두 동일한 유형을 갖는 요소들을 저장하는 데이터 구조입니다. 이 요소들은 저장 될 때 메모리에 연속적으로 저장됩니다. 즉, 요소와 요소 사이에 간격이 없이 차례로 메모리에 배치됩니다. 배열은 배열의 위치(인덱스(index))에 따라 배열 개별 요소에 효율적으로 액세스할 수 있는 간단한 데이터 구조입니다. 배열에 있는 요소의 인덱스는 배열에 있는 요소의 위치에 해당하는 음이 아닌 정수입니다. 즉, 첫 번째 요소는 인덱스가 0이고 두 번째 요소는 인덱스가 1인 식입니다. 배열의 각 요소는 배열 표기법을 사용하여 인덱스로 액세스할 수 있습니다. 예를 들어 myArray[i]는 myArray의 i번째 요소를 반환합니다...

공부/C++ 2023.01.10

Vector push_back과 emplace_back의 차이

push_back은 벡터의 끝에 인자 값을 추가하는 vector 클래스의 함수입니다. 이 때 push_back은 추가할 인자 값은 현재 위치에서 값을 복사하거나 이동하여 벡터에 추가됩니다. std::vector v; int x = 1; v.push_back(x); // v 벡터에서 이제 [1]을 포함합니다 위 예에서 push_back은 인자 값 x를 복사하여 벡터의 끝에 추가합니다. 즉, 인자 값(1)의 새로운 복사본이 생성되어 벡터에 추가되고 원래 요소인 x는 변경되지 않은 상태로 유지됩니다. 반면에 emplace_back 또한 벡터에 끝에 인자 값을 추가하는 vector 클래스의 함수이지만, 기존 값들을 복사하거나 이동하는 연산을 하지 않고, 제자리에서 인자값을 구성하여 생성합니다. 이로 인해 인자 ..

공부/C++ 2022.12.16
반응형