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]);
访问数组的内容。