C++ std::vector<std::array<char, 2>> 的数据连续性

C++ data contiguity of std::vector<std::array<char, 2>>

本文关键字:gt lt std 数据 连续性 array vector C++ char      更新时间:2023-10-16

std::vector<std::array<char, 2>>的数据如何在内存中列出?我可以将矢量重染至std::vector<char>并以这种方式访问阵列的内容吗?我认为这不是它的工作方式,但是由于它是C ,所以我想确保。如果它的工作方式与std::vector<std::vector<char>>相同,则我不需要解释,因为这很好地解释了。

std::vector的琐碎布局比std::array少。您正在尝试将矢量施加到不同类型的向量,甚至是不同大小的矢量。没有运气。

我可以将vector重染为std::vector<char>并以这种方式访问阵列的内容吗?

不,你不能。std::vector比普通的旧数组和指针具有丰富的语义。如果您调用任何成员功能,它将导致不确定的行为。

但是,您可以访问数组,好像它是char的数组,尺寸 size of the vector * 2如果您的std::array实现不使用任何填充。即sizeof(array<char, 2> == sizeof(char[2])

在这种情况下,您可以使用:

char* cp  = &(thevector[0][0]);

访问数组的内容。