当声明像std::array<std::string, 5> myArray = ...
这样的字符串数组时,它是如何存储在内存中的?
在数组中,元素应该按顺序存储在内存中,但是任何第k个元素都应该在常量时间内通过索引访问,因此,它如何与可变长度字符串一起使用?
答案 0 :(得分:2)
存在固定大小string
对象的正常数组(在内存中顺序)。每个字符串的实际数据在另一个内存位置单独分配。
答案 1 :(得分:0)
operator []
可以使用重载的std::array
。与普通数组一样,std :: array按顺序存储元素。因此,仍然可以在恒定时间内访问第k个元素。
答案 2 :(得分:0)
std::string
通常被实现为指向某种可变长度存储的指针。它没有魔力。它可以像任何其他固定大小对象一样存储在数组中。 &#34;可变大小&#34; part是间接的,数组不关心它。
答案 3 :(得分:-2)
我发现了以下内容:
结构体结合了C风格的性能和可访问性 具有标准容器优点的数组,例如知道它 自己的大小,支持赋值,随机访问迭代器等。
一般知道这种结构的内存布局并不重要,但访问者和修饰符的复杂性。保证在恒定时间内完成访问。我怀疑在幕后你有一个C阵列......