如何将字符串数组存储在c ++中?

时间:2014-12-07 10:54:09

标签: c++ arrays string stl

当声明像std::array<std::string, 5> myArray = ...这样的字符串数组时,它是如何存储在内存中的?

在数组中,元素应该按顺序存储在内存中,但是任何第k个元素都应该在常量时间内通过索引访问,因此,它如何与可变长度字符串一起使用?

4 个答案:

答案 0 :(得分:2)

存在固定大小string对象的正常数组(在内存中顺序)。每个字符串的实际数据在另一个内存位置单独分配。

答案 1 :(得分:0)

operator []可以使用重载的std::array。与普通数组一样,std :: array按顺序存储元素。因此,仍然可以在恒定时间内访问第k个元素。

答案 2 :(得分:0)

std::string通常被实现为指向某种可变长度存储的指针。它没有魔力。它可以像任何其他固定大小对象一样存储在数组中。 &#34;可变大小&#34; part是间接的,数组不关心它。

答案 3 :(得分:-2)

我发现了以下内容:

  

结构体结合了C风格的性能和可访问性   具有标准容器优点的数组,例如知道它   自己的大小,支持赋值,随机访问迭代器等。

一般知道这种结构的内存布局并不重要,但访问者和修饰符的复杂性。保证在恒定时间内完成访问。我怀疑在幕后你有一个C阵列......