배열로 구성된 벡터는 연속적입니까?

Dec 29 2020

내가 만들면

std::vector<std::array<double, 2>> points;
std::vector<double> points2;

points2는 힙에 두 배를 보유하는 연속적인 메모리 덩어리가 될 것입니다. 나는 그 포인트가 스택에 대한 double *의 연속적인 메모리 덩어리가 될 것이라고 생각합니까? 그러나 이러한 배열은 스택에서 연속적일까요? 어떤 점을 나타 내기 위해 복식 쌍을 저장한다고 가정 해 봅시다.

points2는 다음과 같이 메모리에 있습니다. [x0 y0 x1 y1 x2 y2 ...] 포인트는 어떻습니까? 이 경우 복식 쌍을 저장하는 가장 좋은 방법은 무엇입니까? 팁 주셔서 감사합니다.

답변

2 DanielLangr Dec 29 2020 at 04:16

배열로 구성된 벡터는 연속적입니까?

전혀 그렇지 않다. std::array끝에 패딩 또는 추가 멤버가 포함될 수 있습니다. 자세한 내용은 다음과 같습니다.

  • 중첩 된 std :: arrays의 데이터가 연속적임을 보장합니까?
  • 표준에서 정의한 std :: array의 크기입니다.

그러나 나는 이것이 일어날 가능성이 거의 없다고 생각 2 * sizeof(double)하며 sizeof(std::array<double, 2>).