std::vector<std::array<char, 2>>
的数据如何在记忆中排列?我可以将向量重新转换为std::vector<char>
并以这种方式访问数组的内容吗?我认为这不是它的工作方式,但由于它是C ++,我想确定。如果它的工作方式与std::vector<std::vector<char>>
相同,我不需要解释,因为this解释得很好。
答案 0 :(得分:3)
std::vector
比std::array
具有更少的简单布局。您正在尝试将矢量投射到不同类型的矢量,即使是不同大小的矢量。没有运气。
答案 1 :(得分:-1)
我可以将
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]);
访问数组的内容。