É possível inicializar std :: vector sobre a memória já alocada?

Minha pergunta é bastante simples e estou surpreso por não encontrar nada relacionado. Provavelmente é fácil ou totalmente estúpido (ou não consigo pesquisar).

Como o título diz, é possível usarstd::vector na memória já alocada, portanto, não aloca novos elementos desde o início, mas usa o que é fornecido. Eu imaginaria isso como algo como:

T1 *buffer = new T1[some_size];
std::vector<T2> v(buffer, some_size); // <- ofc doesn't work

O oposto é bastante simples e (talvez não seja bonito, mas) funciona:

std::vector<T2> v(some_size);
T1 *buffer = &v[0];

O armazenamento é garantido para ser contínuo, por isso é tão seguro quanto um iterador.

Minha motivação é bastante simples. Eu passo alguns dados de memória bruta, ou seja, bytes, e como conheço a interpretação deles em outros lugares, gostaria de convertê-los em algo significativo. Eu poderia fazer umreinterpret_cast e use uma matriz normal de estilo c, mas eu prefiro instalações c ++.

Tenho a sensação de que isso deve ser seguro, uma vez que abandonamos a propriedade debuffer para vetor, porque ele precisa ser realocado.

questionAnswers(2)

yourAnswerToTheQuestion