Um vetor de matrizes é contíguo?

Dec 29 2020

Se eu criar

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

Eu sei que points2 será um pedaço contíguo de memória contendo duplicatas na pilha. Eu acho que os pontos serão um pedaço contíguo de memória de double * para a pilha? Mas essas matrizes serão contíguas na pilha? Digamos que estou armazenando pares de duplas para representar alguns pontos.

points2 está na memória assim: [x0 y0 x1 y1 x2 y2 ...] E quanto aos pontos? Qual é a melhor maneira de armazenar pares de duplas neste caso? Obrigado por qualquer dica.

Respostas

2 DanielLangr Dec 29 2020 at 04:16

Um vetor de matrizes é contíguo?

Não não é. std::arraypode conter preenchimento ou mesmo membros adicionais no final. Mais detalhes, por exemplo, aqui:

  • Os dados em std :: arrays aninhados são garantidos como contíguos?
  • É o tamanho de std :: array definido por padrão

Mas acredito que é muito improvável que isso aconteça e você pode simplesmente verificar essas situações comparando 2 * sizeof(double)com sizeof(std::array<double, 2>).