배열로 구성된 벡터는 연속적입니까?
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>)
.